public static void DoSomething(this MyClass theObject)
对比
public static void DoSomething<T>(this T theObject) where T : MyClass
例如,我知道将 this 与从MyClass类继承的类的对象一起使用时会有所不同,但我不知道为什么。
慕姐4208626
浏览 155回答 1
1回答
暮色呼如
假设这个实现:public static List<T> DoSomething<T>(this T theObject) where T : MyClass => new List<T>();调用为MyChildClass x; // MyChildClass : MyClassvar list = DoSomething(x); // list is an instance of List<MyChildClass>, instead of List<MyClass>当您不需要知道“实际”(子)类型时,首先使用(非泛型)。当您计划在进一步的泛型代码中使用“实际”类型时,请使用第二个(泛型)。当有人将类/函数设计为泛型时,我将其视为“气味”,即使它“不需要”泛型 = 基类型就足够了。(等效的“通用” impl 更难阅读)