5
C++ 0x引入了概念,它可以讓你基本上定義一種類型。 It specifies the properties required of a type。C++ 0x概念和c#約束有什麼區別?
C#讓你指定約束的通用的與 「where」 的條款。
它們之間是否有語義上的區別?
謝謝。
C++ 0x引入了概念,它可以讓你基本上定義一種類型。 It specifies the properties required of a type。C++ 0x概念和c#約束有什麼區別?
C#讓你指定約束的通用的與 「where」 的條款。
它們之間是否有語義上的區別?
謝謝。
有一點要記住,C++模板和C#泛型不完全相同。有關這些差異的更多詳細信息,請參閱此answer。
從您鏈接到解釋C++ 0x概念的頁面,聽起來像這樣的想法是,在C++中,您希望能夠指定模板類型實現某些屬性。在C#中,約束條件比這更進一步,並強制泛型類型爲該「約束」的「。例如,以下C#代碼:
public GenericList<T> where T : IDisposable
說,代替Ť中使用的任何類型必須實現IDisposable接口。同樣,下面的代碼:
public abstract class ABC {}
public class XYZ : ABC {}
public GenericList<T> where T : ABC
說,任何用於替代T的類型必須是ABC類型或從ABC派生。
C++ 0x的概念思想只是說用來代替T的類型必須具有與ABC(或IDisposable)所定義的屬性相同的屬性,而不是它必須是該類型的。
如果它像鴨子一樣飛得飛快,那麼它肯定是鴨子呢? :-) – Zen 2009-01-31 10:11:09