C#泛型

15 篇文章 2 订阅

C#泛型

C#中的泛型能够将类型作为参数来传递,即在创建类型时用一个特定 的符号如“T”来作为一个占位符,代替实际的类型,等待在实例化时 再用一个实际的类型来代替。

泛型的优点

  1. 使用泛型可以的重用代码,保护类型的安全以及提高性能
  2. 降低强制转换或装箱操作的成本和风险
  3. 可以对泛型参数进行限定以访问特定数据类型的方法

基本语法

//使用静态方法交换a和b的值,运用泛型
    class Program
    {
        static void Main(string[] args)
        {
            double a = 10;
            double b = 20;
            Tool.Swap<double>( ref a,  ref b);//使用泛型
            Console.WriteLine(a);
            Console.WriteLine(b);

        }
    }

    public class Tool
    {
        public static void Swap<T>(ref T value0, ref T value1)//泛型定义
        {
            T temp= value0;
            value0 = value1;
            value1 = temp;
        }
    }

输出结果
在这里插入图片描述

泛型类型参数注意点

  1. 泛型类型参数可以有多个
  2. 泛型类型参数可以是编译器识别的任何数据类型
  3. 泛型类型参数命名需要遵守命名规则
    (1) 使用描述性名称命名泛型类型,并且使用T作为前缀
    (2) 单个字母名称完全可以让人了解其表示的含义使用单个大写字母命名

泛型类型参数常用的约束类型
1.where T:struct :表示泛型T是值类型(小数,整数,char,bool, struct)
2.where T:class :表示泛型T是引用类型
4. where T:new() :表示这个泛型具有一个无参数的构造方法,如果有 多个约束,new()必须放在最后
5. where T:基类名 :表示这个泛型是该基类或者其派生类
6. where T:接口名 :表示泛型是实现了该接口的类型
定义示例:

 public static void Swap<TY>(T value0,Y value1)where T:struct where Y:struct
 {
 			..................
 } 

泛型方法
泛型方法是使用泛型类型参数声明的方法,当方法中存在某些参数的 类型不明确的时候就可以使用泛型方法。未知具体类型的参数就使用 泛型类型参数替代

public static string CombineToString<T>(T value1,T value2)
{ 
return value1.ToString () + value2.ToString ();
}

public static void Main(string[] args)
{
Console.WriteLine(CombineToString<int> (234,56));
}//结果输出为:23456

泛型类
泛型类封装了不是特定于具体数据类型的操作,当类中存在未知参数 类型的时候就可以使用泛型类
格式:
修饰符 class 类名<泛型类型参数>{ 类成员
}
例如:

class BaseNodeGeneric<T> { }

泛型类实例化

BaseNodeGeneric<int> bng0 = new BaseNodeGeneric<int> (); 
BaseNodeGeneric<string> bng1 = new BaseNodeGeneric<string> ();

泛型类设计规则

  1. 将哪些类型通用化为泛型类型参数
  2. 如果存在约束,应对泛型类型参数应用什么约束
  3. 是否将泛型行为分解为基类和子类
  4. 是否实现一个或多个泛型接口
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Windbell_233

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值