首页 > 其他分享 >.NET Core泛型约束

.NET Core泛型约束

时间:2022-10-01 10:44:55浏览次数:56  
标签:Core public Person Student 类型 泛型 NET class

.NET Core泛型约束

  如果一个类/引入了泛型类型,那么可以对引入的泛型写一个约束,让传入的泛型类型必须具备某些条件才能传入

public class Person<T> where T : base-class  //类型T必须是base-class的子类
public class Person<T> where T : interface   //类型T必须实现interface的接口
public class Person<T> where T : class  //类型T必须是引用类型
public class Person<T> where T : struct  //类型T必须是值类型
public class Person<T> where T : new()  //类型T必须有一个无参的构造函数

  泛型类型不仅可以用于类的定义,还可以用于方法的定义

public T Person<T> (T t) where T : new()
{
    T t1=new T();
    t=t1;
    return t;
}

  泛型类可以有子类,子类可以选择继承父类的引入泛型类型,也可以选择直接继承父类某种特定类型,也可以引入新的泛型类型

public class Person<T> {}
public class Student<T>:Person<T>{}//Student继承了父类的泛型类型引入

public class Person<T> {}
public class Student:Person<int>{}//Student继承了引入int类型的父类

public class Person<T> {}
public class Student<T,TKey>:Person<T>{}//Student继承了引入泛型类型的父类,自己也引入了新的类型

   封闭类型参数的时候(就是确定泛型参数的类型),可以将类自己作为具体的类型如:

public class Person<T> : Where T :Person<T>{}//表示引入的类型必须继承自己

public class Person:IEquatable<Person>//表示封闭泛型类型为自己
{
    public string Name{get;set;}
    public bool Equals(Person p)
    {
        return p.Name==Name;
    }
}

   同一个类中不同封闭类型的静态成员数据相互独立

标签:Core,public,Person,Student,类型,泛型,NET,class
From: https://www.cnblogs.com/lrplrplrp/p/16746864.html

相关文章

  • EF Core 查询性能优化
    一、IEnumerable和IQueryable的区别1.IEnumerable1.1是立即Sql查询执行,除了生成首次的Where条件之外,之后的查询条件都是在内存中进行,当数据量很大时,性能就会有问......
  • .NET教程 - 加密 & 解密(Encryption & Decryption)
    更新记录转载请注明出处:2022年10月1日发布。2022年9月29日从笔记迁移到博客。常用加密算法Encryptionanddecryption(加密和解密)说明使用Key进行加密和解密Key......
  • 【EF Core 6.0 】Entity Framework概要
    EntityFramework概要EntityFramework是微软的ObjectRelationalMapper(对象关系映射器),也就是我们平常说的ORM,它可以让应用程序开发者将关系型数据作为业务模型来使用,......
  • 【 EF Core 6.0】DbSet与DbContext数据更新奥秘
    转载:https://www.cnblogs.com/tangge/p/4528102.htmlEFCore 6.0底层是Miscrosoft.Data.sqlite。5.6.4《DbSet与DbContext》介绍DbSet与DbContext中的核心属性及重......
  • 最小 Linux 发行版 Tiny Core Linux 7.1 发布
    TinyCore Linux 是一个极度简约但是也高度可扩展的GNU/Linux发行版,其之精简甚至可以小到只有10MB大小。昨天5月23日刚刚发布的TinyCoreLinux7.1也仅仅只有......
  • Linux华为云Huawei Cloud EulerOS 系统 配置.Net6运行环境
    1.创建华为云HuaweiCloudEulerOS 2.0标准版64位.设置服务器登录密码,最后确认,然后稍等几分钟就可以看到申请的服务器处于运行状态就可以了.   2.远程登录服务......
  • Networkx的入门使用
    创建一个图创建一个没有边edge和节点node的空图:importnetworkxasnxG=nx.Graph()定义:图形是节点和已识别的节点对的集合,即顶点和边(链接)的集合。在networkx中,节点......
  • ASP.NET Core – Dependency Injection
    前言很久很久以前就写过了Asp.netcore学习笔记(DI依赖注入),这篇只是整理一下而已. 参考Usingdependencyinjectionina.NetCoreconsoleapplication ......
  • net List集合 只改变对象中的某一个属性
    classStudent{publicstringId{get;set;}publicstringName{get;set;}}List<Student>list=newList<Student>()list.add(newStudent{Id=1,Name="名......
  • 学习笔记(一) netty jvm参数配置命令
    命令值范围说明备注io.netty.leakDetectionLevelDISABLED-完成禁止检测内存泄漏,这个是不推荐。SIMPLE-如果buffer中出现1%的内存泄漏,打印错误日志,就是上......