如果我實現了一個冒用許多類型參數實例化的泛型類型,我是否應該避免(對於JIT性能/代碼大小等原因)有許多嵌套的非泛型類型?我應該避免泛型類型中的嵌套類型嗎?
實施例:
public class MyGenericType<TKey, TValue>
{
private struct IndexThing
{
int row; int col;
}
private struct SomeOtherHelper
{
..
}
private struct Enumerator : IEnumerator<KeyValuePair<TKey, TValue>> { }
}
這同樣適用是有外部的非通用的類型,但接着就污染的命名空間的替代方案。 是否有最佳做法?
public class MyGenericType<TKey, TValue>
{
private struct Enumerator : IEnumerator<KeyValuePair<TKey, TValue>> { }
}
internal struct IndexThingForMyGenericType
{
int row; int col;
}
internal struct SomeOtherHelper
{
...
}
一如既往的永不優化,永遠不會遇到瓶頸。只是代碼的方式是最有意義的,主要是它不會是一個問題。關於這個問題,我不知道,但是你可以在BCL中看到很多嵌套的私人班,所以我不介意從設計的角度來看這條路線。如你所說第二個可能會令人困惑 – nawfal
這段代碼在語義上並不相同。在你的第一個例子中,SomeOtherHelper不是單一類型,因爲它取決於泛型參數。例如,'typeof(MyGenericType.SomeOtherHelper)'與'typeof(MyGenericType .SomeOtherHelper)'不同。 –
Enigmativity
如果您的問題是讓名稱空間中的類因爲您希望它更清潔,請將其添加到子名稱空間,如果您的名稱空間是MyNamespace,那麼將它添加到MyNamespace.AccesoryNamespace。 – Gusman