2010-12-22 24 views
4

我有一些類型的結構是出於性能原因並具有一些共同性。我想知道我是否可以將它們重構爲開放式結構 - 如果我可以的話,如果我期望有任何問題。打開類型可以是一個結構?

+3

什麼是「開放式結構」在第一個地方? – 2010-12-22 18:32:48

+0

你的意思是一個泛型? – 2010-12-22 18:33:24

+0

正確 - 通用打開類型。即公共課Box 是公共結構框? – Cort 2010-12-22 18:35:02

回答

4

更新:顯然通過「打開類型」,你不是指與「打開類型」的C#規範定義相同的東西。你的意思是「通用類型」。

是的,結構可以是通用的。

回答你問題的第二部分:我不知道你有什麼樣的「問題」。你能給我一個你發現有問題的例子嗎?


原來的答覆,假設你實際上問的開放類型:

的C#規範清楚這一點:

•一個 類型參數定義了一個開放式。

•陣列類型是開放類型if和 僅當其元素類型是開放的 類型時。

•構造類型是開放型 當且僅當其 類型參數中的一個或多個是開放類型。 A 構造的嵌套類型是當且僅當其包含類型的一個或多個 類型自變量或類型參數 是開放的 類型時,構造的嵌套類型是開放的 類型。

所以你去了。結構類型是一個開放類型當且僅當它或它的封閉類型是一個類型參數爲開放類型的泛型類型。例如:

struct S<T> 
{ 
    S<T> s1; // open struct type 
    Nullable<S<T>> s2; // another open struct type 
} 

class O<V> 
{ 
    class C<U> where U : struct 
    { 
    struct R 
    { 
     U u; // open type constrained to be value type 
     R r1; // open struct type; this is O<V>.C<U>.R 
     O<V>.C<S<U>>.R r2; // another open struct type. 
     O<int>.C<S<V>>.R r3; // another open struct type 
    } 
    } 
} 

我們可以不斷整天開放結構類型。

相關問題