• λ我爱Aspx >> Asp.Net >> C# 泛型简介
  • C# 泛型简介

  • :未知  Դ:internet  :2007-5-20 16:49:07  ؼ:c#
  • 可以将构造函数约束与派生约束组合起来,前提是构造函数约束出现在约束列表中的最后:

    public class LinkedList where K : IComparable,new() {...}

    引用/值类型约束

    可以使用 struct 约束将一般类型参数约束为值类型(例如,int、bool 和 enum),或任何自定义结构:

    public class MyClass where T : struct {...}

    同样,可以使用 class 约束将一般类型参数约束为引用类型(类):

    public class MyClass where T : class {...}

    不能将引用/值类型约束与基类约束一起使用,因为基类约束涉及到类。同样,不能使用结构和默认构造函数约束,因为默认构造函数约束也涉及到类。虽然您可以使用类和默认构造函数约束,但这样做没有任何价值。可以将引用/值类型约束与接口约束组合起来,前提是引用/值类型约束出现在约束列表的开头。

    返回页首

    泛型和强制类型转换

    C# 编译器只允许将一般类型参数隐式强制转换到 Object 或约束指定的类型,如代码块 5 所示。这样的隐式强制类型转换是类型安全的,因为可以在编译时发现任何不兼容性。

    代码块 5. 一般类型参数的隐式强制类型转换

    interface ISomeInterface {...} class BaseClass {...} class MyClass where T : BaseClass,ISomeInterface { void SomeMethod(T t) { ISomeInterface obj1 = t; BaseClass obj2 = t; object obj3 = t; } }

    Ҷƪл˵?
  • һƪ在 C# 中通过 P/Invoke 调用Win32 DLL
    һƪ《Effective C#》 翻译札记