C#中的where泛型约束介绍
更新时间:2020年6月25日 11:42 点击:2331
泛型约束的意思就是说:类的泛型,只能是where字句后面所写的接口或类。
这么说好像也有点不大明白,举个例子。
我有一个接口,如下:
复制代码 代码如下:
///
/// 国籍的接口
///
public interface INationality
{
string Nationality
{
set;
get;
}
string GetNationality();
}
然后该接口有两个实现,如下:
复制代码 代码如下:
///
/// 中国人
///
public class Chinese : INationality
{
private string _Nationality;
public string Nationality
{
set
{
_Nationality = value;
}
}
public string GetNationality()
{
return string.IsNullOrEmpty(_Nationality) ? "Default." : _Nationality;
}
}
///
/// 美国人
///
public class American : INationality
{
private string _Nationality;
public string Nationality
{
set { _Nationality = value; }
}
public string GetNationality()
{
return string.IsNullOrEmpty(_Nationality) ? "Default." : _Nationality;
}
}
然后创建一个泛型类,带有泛型约束的类,如下:
复制代码 代码如下:
///
///
///
///
public class PrintNationality where T : INationality, new()
{
T item = new T();
public void Print()
{
Console.WriteLine(string.Format("Nationality:{0}", item.GetNationality()));
}
}
由于有where字句的泛型约束,所以,创建PrintNationality的对象时,T的类型只能是继承子INationality接口的类。
复制代码 代码如下:
public class Program
{
static void Main(string[] args)
{
PrintNationality _c = new PrintNationality();
PrintNationality _a = new PrintNationality();
//PrintNationality _o = new PrintNationality(); 此句是错误的,因为泛型类型必须是继承自INationality接口的类
_c.Print();
_a.Print();
Console.ReadKey();
}
}
以上的代码运行结果:
上一篇: C#基础 延迟加载介绍与实例
下一篇: .net的命名空间类库的简单介绍
相关文章
pycharm 关闭search everywhere的解决操作
这篇文章主要介绍了pycharm 关闭search everywhere的解决操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-16- 这个关于泛型约束的东西我看了几天了。一直没打看懂,我的领悟能力有点差,刚才突然明白了一点...2020-06-25
- 下面小编就为大家带来一篇ThinkPHP Where 条件中常用表达式示例(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2017-04-03
- 今天小编就为大家分享一篇基于torch.where和布尔索引的速度比较,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-05-02
- where优化主要是在SELECT中,因为他们最主要是在那里使用,但是同样的优化也可被用于DELETE和UPDATE语句。 但请注意,下面的优化并不是完全的。MYSQL实施了许多优化,但我没...2016-11-25
- 以下是对c#范型中的特殊关键字where和default进行了详细的介绍,需要的朋友可以过来参考下...2020-06-25
详解mysql 使用left join添加where条件的问题分析
这篇文章主要介绍了详解mysql 使用left join添加where条件的问题分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-08- where方法可以用于对数据库操作的结果进行筛选。即SQL查询语句中的where子句。本文给大家介绍ThinkPHP中where()使用方法详解,感兴趣的朋友参考下...2016-04-23
- MySQL当中的限制条件可以使用on或者where,两者在不同的情况下具有不同而意义,这篇文章主要给大家介绍了关于Mysql中where与on的区别及何时使用的相关资料,需要的朋友可以参考下...2021-08-04
- 这篇文章主要介绍了MySQL中where 1=1方法的使用及改进,文章主要通对where 1 = 1的使用及改进展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下...2022-05-25
- 这篇文章主要介绍了Mybatis的where标签使用总结梳理,文章通过将Mybatis中where标签的基本使用形式展开where标签小技巧以及容易踩到的坑进行总结梳理,具有一定的参考价值,需要的小伙伴可以参考一下...2022-05-25
- 这篇文章主要为大家介绍了MyBatis中不建议使用where1=1的原因详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...2022-06-22