條件方法我已經現有的C#通用類和要添加或刪除基於所使用的類型的方法,我解釋通用類:基於類型
public class MyType<T>
{
public T getValue() { return value; }
}
對於特定MyType<void>
,我想「刪除「getValue」方法。 這樣的事存在嗎?
條件方法我已經現有的C#通用類和要添加或刪除基於所使用的類型的方法,我解釋通用類:基於類型
public class MyType<T>
{
public T getValue() { return value; }
}
對於特定MyType<void>
,我想「刪除「getValue」方法。 這樣的事存在嗎?
都能跟得上,但你也許可以做到與接口類似的東西
interface IMyType
{
//...what ever method/properties are shared for all
}
public class MyType<T> : IMyType
{
public T getValue() { return value; }
//...shared methods
}
public class MyTypeOtherSide : IMyType
{
//...shared methods
}
那麼你需要聲明變量IMyType和只使用MyType<T>
當你知道,這是該類型的
的使用泛型的目的是爲所有類型使用泛型類型聲明,而不僅僅是少數類型聲明。
我想你只想要一個操作號碼。你可以在你的類中添加通用約束如下:
public class MyType<T> where T: struct
{
public T getValue() { return value; }
}
然而,這也將讓它們具有一般的參數void
類型有GetValue
- 方法,爲void
也是struct
。然而,這不會像Lee所提到的那樣構造MyType<void>
類型。
此外沒有所有數值類型實現的通用接口,可用作通用約束。唯一的解決方法是每種類型都有一個方法,所以GetDouble,GetInt等等
感謝您的所有意見,我也使用了這個技巧(來自Lee)來處理一切: https://stackoverflow.com/questions/15362424/method-with-same-name-and-signature-but-return-型在-C-尖銳 – CDZ
你的意思是說,對於特定的類型T,例如字符串,你想讓getValue不存在? –
是的,例如。我需要這種方法爲int,float,bool,但不適用於void! – CDZ
添加或刪除是什麼意思?如果你有一個泛型類或者沒有,你可以定義類方法並且這些方法可用,無關緊要,泛型基本上允許方法使用不同的類型 – john