gpt4 book ai didi

c# - 是否可以创建变体值类型?

转载 作者:太空宇宙 更新时间:2023-11-03 17:41:15 24 4
gpt4 key购买 nike

论文Valued Conversions Kevlin Henney 提供了所谓的变量值类型功能的动机,以及 C++ 实现的大纲。这是一本很好的读物,它涵盖了我希望在 C# 中可用的内容:一种可以保存不同值的通用类型 value-types .

虽然我在 C# 中找不到类似的东西。 SO 上有些类似的问题有不令人满意的答案和评论,如“这可能不是你想要的”。这让我感到惊讶,因为它看起来像是相当普遍需要的功能。 Henney 的 C++ boost::any类被广泛使用。

是否无法在 C# 中创建此功能?


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

最佳答案

这就是泛型的用途。 List<T>其中 T是任何东西。泛型同时提供编译时和运行时类型安全。

您可以创建自己的通用类型来存储您想要的任何值。您也可以将任何内容转换为 object并原样传递。

你也可以使用泛型约束来限制你的类型,比如想要只有T是一个引用类型:

public MyClass<T> where T : class

或者一个值类型:

public MyClass<T> where T : struct

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

关于c# - 是否可以创建变体值类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21390003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com