`
pcajax
  • 浏览: 2162277 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

where T:new() 是什么意思

 
阅读更多

where T:new() 是什么意思

经常看到方法后面加where T:new() ,下面来解释下

比如如下这个方法
  protected static T CreateNewInstance<T>() where T : new() 
        
            return new T(); 
        }

 

解释如下:

T后面跟的是泛型约束,啥叫泛型约束,就是你必须要符合这个规则来,不然就不让你编译通过 。

后面的new()代表这个T 必须有一个无参的构造函数,

当然一个新建的class。这个类做为T,也是可以编译通过的。

因为如果类中没有构造函数会默认就加一个无参的构造函数,刚好符合这个约束。

比如

Public Class People{}

这个people 做为T默认是可以编译通过的。因为他等同于

Public Class People(public People(){})

但如果有一个这样的People就会编译不通过了。

Public Class People(public People(string s){}})

 

 

0
0
分享到:
评论

相关推荐

    C# where泛型约束测试代码

    5. **新操作符约束**:`where T : new()`,确保`T`有公共无参数构造函数,可以在实例化时使用`new`操作符。 6. **特定类型约束**:`where T : U`,`U`是已知类型,表示`T`必须是`U`或`U`的派生类型。 现在,让我们...

    介绍C# 泛型类在使用中约束

    3):给泛型类 加类型(引用类型,值类型)的约束:where T:class,new ( )遇到的问题:在写MongodbHelper类的时候,为了能处理多种类别,所以如下定义了该类: 代码如下: public class MongodbHelper&lt;T&gt; { 。...

    where泛型约束的使用

    这里,我们定义了一个名为`MyDelegate`的委托类型,它的返回值是一个泛型类型`T`,并且通过`where T : new()`指定了类型`T`必须具有公共无参构造函数这一约束条件。这意味着只有那些具有无参构造函数的类型才能作为...

    Json序列化与反序列化方法封装类

    public static string GetJson&lt;T&gt;(T model) where T : new() { return new JavaScriptSerializer().Serialize(model); } /// /// 序列化模型集合为Json /// /// &lt;typeparam name="T"&gt;集合对象类型 /// ...

    oracle触发器实现

    WHERE t.month = :new.month AND t.year = :new.year AND t.train_id = :new.train_id; -- 获取当前列车的后续制造移动次数 SELECT t.after_make_move INTO t_after_make_move FROM train_day_move t WHERE...

    fanxing.rar_泛型

    3. `where T : new()`:确保T有一个默认构造函数。 4. `where T : InterfaceType`:确保T实现了特定接口。 5. `where T : BaseClass`:确保T继承自特定基类。 6. `where T : U`:确保T是U的子类型。 在实际编程中,...

    C#泛型探究

    - 约束中的方法:可以指定类型参数必须包含某个方法,如 `where T : new()`(有默认构造函数约束)。 8. **协变和逆变** - 协变:允许将派生类型赋给基类型的引用,对于只读操作,如输出参数或返回类型,可以使用...

    C#基础之泛型

    - `where T : new()`: `T`必须有一个公共无参数构造函数。 - `where T : U`: `T`必须是类型`U`或者继承自`U`。 - `where T : BaseClass`: `T`必须是`BaseClass`或其子类。 - `where T : Interface`: `T`必须实现指定...

    C# 泛型 C# 泛型

    - `where T : new()`:T必须有默认构造函数。 - `where T : SomeBaseType`:T必须继承自SomeBaseType。 - `where T : interfaceType`:T必须实现interfaceType接口。 - `where T : U`:T必须是U的子类型。 6. *...

    详解C#泛型的类型参数约束

    在实际开发中,常用的泛型约束为 where T : struct、where T : class、where T : new()。多个参数约束可以对多个参数应用多个约束,对一个参数应用多个约束。 需要注意的是,在应用 where T : class 约束时,避免对...

    深入浅出_NET泛型编程_.files.rar

    - `where T : new()`:T必须有公共无参构造函数。 - `where T : ISomeInterface`:T必须实现ISomeInterface接口。 - `where T : SomeBaseClass`:T必须继承自SomeBaseClass。 五、泛型与多态 泛型提供了另一种形式...

    C#泛型机制全面探讨(代码+注释)

    常见的约束有:where T : struct(值类型约束)、where T : class(引用类型约束)、where T : new()(默认构造函数约束)、where T : U(基类型约束)和where T : interface(接口约束)。约束确保了类型参数的行为...

    C#创建 TInterface泛型接口实例

    派生约束where T : TI(T要继承自TI),构造函数约束where T : new()(T可以实例化),然后创建创建一个公共方法CreateInstance,实例化接口,输出指定泛型的类型,创建泛型接口完毕,源码完整供C#新手下载。

    泛型讲解网上泛型的列子不多

    class MyClass&lt;T&gt; where T : new() { ... } ``` #### 七、泛型的优势 使用泛型的主要优势包括: 1. **类型安全**:编译器会在编译时检查类型,避免运行时错误。 2. **代码复用**:通过泛型,可以编写单一版本的...

    c# 泛型的使用,教你如何用泛型

    - `where T : new()` - 表示`T`必须有一个无参构造函数。 - `where T : SomeBaseClass` - 表示`T`必须继承自`SomeBaseClass`。 - `where T : ISomeInterface` - 表示`T`必须实现`ISomeInterface`接口。 - `where...

    c#中new-的几种用法-经典案例-公司应聘 c#经典案例.doc

    public class MyClass&lt;T&gt; where T : new() { public T MyProperty { get; set; } } 在上面的代码中,我们使用 new 约束约束了泛型类型参数 T,要求 T 必须具有无参数的构造函数。 总结 在 C# 中,new 运算符和 ...

    C# xmlToList xml转换成对象

    public static List&lt;T&gt; XmlToList&lt;T&gt;(string xmlFilePath) where T : new() { var list = new List&lt;T&gt;(); XmlDocument doc = new XmlDocument(); doc.Load(xmlFilePath); using (XmlNodeReader reader = new ...

    c# 泛型 入门经典

    - `where T : new()` - 类型`T`必须有一个公共无参构造函数。 - `where T : SomeBaseClass` - `T`必须继承自`SomeBaseClass`。 - `where T : ISomeInterface` - `T`必须实现`ISomeInterface`接口。 #### b) 通用...

    C# 简单 泛型 用法

    结构类型(`where T : struct`)、引用类型(`where T : class`)、派生自某个类(`where T : SomeBaseClass`)、实现某个接口(`where T : ISomeInterface`)以及具有公共无参构造函数(`where T : new()`)。...

    C#的New关键字的几种用法收藏

    public class GenericClass&lt;T&gt; where T : new() { public T CreateInstance() { return new T(); } } ``` 在这个泛型类中,`T`必须支持`new()`约束,这样才能在`CreateInstance`方法中创建`T`类型的实例。 **...

Global site tag (gtag.js) - Google Analytics