运行库中的C# 泛型讲的就是将C# 泛型类型或方法编译为 Microsoft 中间语言 (MSIL) 时,它包含将其标识为具有类型参数的元数据。C# 泛型类型的 MSIL 的使用因所提供的类型参数是值类型还是引用类型而不同。***次用值类型作为参数来构造泛型类型时,运行库会创建专用泛型类型,将提供的参数代入到 MSIL 中的适当位置。对于每个用作参数的***值类型,都会创建一次专用C# 泛型类型。
C# 泛型应用实例:
例如,假设您的程序代码声明了一个由整数构造的堆栈,如下所示:
- Stack
stack;
在此位置,运行库生成 Stack
- Stack
stackOne = new Stack (); - Stack
stackTwo = new Stack ();
但是,如果在程序代码中的其他位置创建了另一个 Stack
对于引用类型,C# 泛型的工作方式略有不同。***次使用任何引用类型构造泛型类型时,运行库会创建专用泛型类型,用对象引用替换 MSIL 中的参数。然后,每次使用引用类型作为参数来实例化构造类型时,无论引用类型的具体类型是什么,运行库都会重用以前创建的泛型类型的专用版本。之所以可以这样,是因为所有引用的大小相同。
例如,假设您有两个引用类型:一个 Customer 类和一个 Order 类,并且进一步假设您创建了一个 Customer 类型的堆栈:
- class Customer { }
- class Order { }
- Stack
customers;
在此情况下,运行库生成 Stack
- Stack
orders = new Stack ();
不同于值类型,对于 Order 类型不创建 Stack
C# 泛型代码:
- customers = new Stack
();
与前面使用 Order 类型创建的 Stack
此外,使用类型参数实例化泛型 C# 类时,无论它是值类型还是引用类型,可以在运行时使用反射查询它,并且可以确定它的实际类型和类型参数。
运行库中的C# 泛型的基本内容就向你介绍到这里,希望对你了解和学习运行库中的C# 泛型有所帮助。
文章题目:浅析运行库中的C#泛型
网站链接:http://www.mswzjz.cn/qtweb/news21/444471.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能