zoukankan      html  css  js  c++  java
  • 类型参数的约束(C# 编程指南)

    https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters

    定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的几种类型施加限制。 如果客户端代码尝试使用约束所不允许的类型来实例化类,则会产生编译时错误。 这些限制称为约束。通过使用 where 上下文关键字指定约束。 下表列出了六种类型的约束:

    约束描述
    where T:结构 类型参数必须是值类型。 可以指定除 Nullable 以外的任何值类型。 有关详细信息,请参阅使用可以为 null 的类型
    where T:类 类型参数必须是引用类型;这同样适用于所有类、接口、委托或数组类型。
    where T:new() 类型参数必须具有公共无参数构造函数。 与其他约束一起使用时,new() 约束必须最后指定。
    where T:<基类名称> 类型参数必须是指定的基类或派生自指定的基类。
    where T:<接口名称> 类型参数必须是指定的接口或实现指定的接口。 可指定多个接口约束。 约束接口也可以是泛型。
    where T:U 为 T 提供的类型参数必须是为 U 提供的参数或派生自为 U 提供的参数。
    约束说明
    where T: struct 类型参数必须是值类型。 可以指定除 Nullable 以外的任何值类型。 有关更多信息,请参见使用可以为 null 的类型
    where T : class 类型参数必须是引用类型;这一点也适用于任何类、接口、委托或数组类型。
    where T : new() 类型参数必须具有无参数的公共构造函数。 当与其他约束一起使用时,new() 约束必须最后指定。
    where T : <base class name> 类型参数必须是指定的基类或派生自指定的基类。
    where T : <interface name> 类型参数必须是指定的接口或实现指定的接口。 可以指定多个接口约束。 约束接口也可以是泛型的。
    where T : U 为 T 提供的类型参数必须是为 U 提供的参数或派生自为 U 提供的参数。
  • 相关阅读:
    【Revit API】改变填充区域的填充样式
    【Revit API】创建共享参数
    【Revit API】墙体分割
    【Revit API】FamilyInstance、FamilySymbol、Family的寻找关系
    【Revit API】创建相机视角
    【Revit API】获取链接模型中构件
    【Revit API】梁的净高分析
    【Revit API】脱离中心文件
    【Revit API】创建工作集并将element加入工作集中
    常用的XML解析函数
  • 原文地址:https://www.cnblogs.com/tian2008/p/8065964.html
Copyright © 2011-2022 走看看