是否可以创建变量值类型?

Rei*_*eek 1 c# variant

Kevlin Henney撰写的Valued Conversions论文给出了所谓的变量值类型功能的动机,以及C++实现的概述.这是一个很好的阅读,它涵盖了我希望在C#中提供的内容:一种可以保存不同值类型值的通用类型.

我在C#中找不到这样的东西.关于SO的一些类似的问题有不令人满意的答案和评论,如"这可能不是你想要的".这让我感到惊讶,因为它看起来像是相当常见的功能.Henney的C++ boost ::任何类都被广泛使用.

是不是可以在C#中创建此功能?


编辑:回答其中一个答案,我不认为泛型会做的伎俩.使用泛型要求开发人员知道Variant变量所持有的值类型,并且该类型对于该特定Variant变量也变为不可变.但Variant我所说的类型应该能够容纳不同的类型.例如,函数Variant ReadValue()可以从文件中读取条目,解析它,相应地填充Variant值,然后返回它.调用者事先不知道返回中将包含哪种类型Variant.

Han*_*ney 5

这是泛型的用途.List<T>这里T是任何东西.泛型提供编译时和运行时类型的安全性.

您可以创建自己的通用类型来存储所需的任何值.您也可以将任何东西投射到object并传递给它.

您还可以使用通用约束来限制类型,例如只想T成为引用类型:

public MyClass<T> where T : class
Run Code Online (Sandbox Code Playgroud)

或者值类型:

public MyClass<T> where T : struct
Run Code Online (Sandbox Code Playgroud)

在这里查看更多:http://msdn.microsoft.com/en-us/library/d5x73970.aspx