【发布时间】:2013-06-17 23:40:43
【问题描述】:
我创建了一个只能处理原始(或 ICloneable)类型的类
我想知道是否可以这样说:
public myobject(primitiv original){...}
或者我真的需要为每个原始类型创建一个构造函数,例如:
public myobject(int original){...}
public myobject(bool original){...}
...
我想要实现的是创建一个具有 3 个公共属性 Value、Original 和 IsDirty 的对象。
该值将是原始的深层克隆,因此原始需要是原始的或 ICloneable
【问题讨论】:
-
您确定“原始类型”是什么定义明确吗? C# 语言规范提到了“简单类型”(所有结构),并且还有一些附加的“预定义类型”,它们是引用类型(如
string)。 -
@JeppeStigNielsen 我可以告诉你的好问题,是的。但是 selfe made struct 让我有些头疼
-
例如,您认为
System.UIntPtr是“原始类型”吗?在您的特定场景中,所谓的“原始类型”有什么特别之处?例如,您不能有DateTime类型的Value吗?这是一个不可变的值类型(顺便说一下,它没有实现ICloneable)。 -
@JeppeStigNielsen
DateTime将是Value但没有System.UIntPtr或任何其他指针,所以对于我想要传递的内容来说,原始词是错误的词? -
我在这里的一些答案中说
string是一种原始类型(这是相关的,因为它不是结构,因此它将是一个类原始类型)。然而,这方面的文档是矛盾的,一篇 MSDN 文章说它是原始的,另一篇说它不是。 SO中有一个关于此的问题:stackoverflow.com/questions/3965752/is-string-a-primitive-type - 最后,我同意人们说文档不一致的说法。当您开始使用它时,运行时会清楚地表明string是 not 原始的。
标签: c# types .net-4.0 overloading