小静,我们该如何通过C语言深入理解CLR?

2026-05-27 06:530阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1404个文字,预计阅读时间需要6分钟。

小静,我们该如何通过C语言深入理解CLR?

泛型就像是一个模板,通常定义一些通用的算法,使用时再替换成具体的数据类型,提高了代码的复用性。例如,FCL中的泛型List,可以定义一个静态变量vo:

javastatic vo

泛型就像是一个模板,常常定义一些通用的算法,具体调用时再替换成实际的数据类型,提高了代码的可重用性。


一、初识泛型 1. 简单实例

以最常用的FCL中的泛型List<T >为例:

static void Main(string[] args)
{
List<int> num = new List<int>();
num.Add(1);
num.Add(3);
int num1 = num[0];
int num2 = num[1];
}


尖括号中的T是不确定的数据类型,叫做类型参数,一般规定以字母T开头,可以是TKey, TValue都可以。而调用时指定的具体类型叫做类型实参。

查看一下IL代码:

  • 类型名List是以“`”加数字结尾的。数字表示类型的元数,也就是需要指定具体类型的参数个数。
  • 泛型是类型安全的。如果用“num.Add("a");”会发生编译错误;
  • 泛型可以提高算法的可重用性,而且从例子中看出int类型并没有进行装箱拆箱操作,相比将所有类型转换为Object的方式而言,提高了程序的性能。
  • 为泛型变量设置默认值时常使用default关键字进行,T temp=default(T)。
阅读全文

本文共计1404个文字,预计阅读时间需要6分钟。

小静,我们该如何通过C语言深入理解CLR?

泛型就像是一个模板,通常定义一些通用的算法,使用时再替换成具体的数据类型,提高了代码的复用性。例如,FCL中的泛型List,可以定义一个静态变量vo:

javastatic vo

泛型就像是一个模板,常常定义一些通用的算法,具体调用时再替换成实际的数据类型,提高了代码的可重用性。


一、初识泛型 1. 简单实例

以最常用的FCL中的泛型List<T >为例:

static void Main(string[] args)
{
List<int> num = new List<int>();
num.Add(1);
num.Add(3);
int num1 = num[0];
int num2 = num[1];
}


尖括号中的T是不确定的数据类型,叫做类型参数,一般规定以字母T开头,可以是TKey, TValue都可以。而调用时指定的具体类型叫做类型实参。

查看一下IL代码:

  • 类型名List是以“`”加数字结尾的。数字表示类型的元数,也就是需要指定具体类型的参数个数。
  • 泛型是类型安全的。如果用“num.Add("a");”会发生编译错误;
  • 泛型可以提高算法的可重用性,而且从例子中看出int类型并没有进行装箱拆箱操作,相比将所有类型转换为Object的方式而言,提高了程序的性能。
  • 为泛型变量设置默认值时常使用default关键字进行,T temp=default(T)。
阅读全文