随笔 - 90  文章 - 0 评论 - 94 阅读 - 60万

(*) where
用来限制泛型的类型。
where T : struct   可简单理解为只允许值类型(其实是其继承链中必须有值类型)
where T : class    可简单理解为只允许引用类型(其实是其继承链中必须有引用类型)
where T : new()    所有值类型OK,如果是引用类型则必须支持用无参构造函数实例化。(有多个where约束时,new()必须在末尾)
where T : 类名     必须是某个类的子类
where T : 接口名   必须实现了某个接口

多个where限制之间用空格隔开,例如where T : class IDrawable new(),同时满足三种约束

where不支持运算符重载,例如where T : operator +是不允许的,所以不能在函数体内用到+-等运算符,我觉得这是C#应该改进的地方。

 

(*) 继承泛型基类,实现泛型接口,都必须把类型确定下来

例如:public class BasicMath : IBinaryOperation<int>{...}

 

(*) 泛型委托

 就是连类型都不顾的委托,这玩意有用吗?

复制代码
class Program
{
    
public delegate void MyDelegate<T>(T a, T b);
    
static void ShowSum(int a, int b) { Console.WriteLine(a + b); }
    
static void ShowDifference(int a, int b) { Console.WriteLine(a - b); }
    
static void Concatenate(string a, string b) { Console.WriteLine(a + b); }
     
    
static void Main() 
    {
        MyDelegate
<int> ProceedInteger = ShowSum;  
        ProceedInteger 
+= ShowDifference;
        ProceedInteger(
12);

        MyDelegate
<string> ProceedDouble = Concatenate;
        ProceedDouble(
"a""b");
    }                
}
复制代码
posted on   MainTao  阅读(391)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示