我如何创建自己的原语?例如,范围为 1-10 的整数。
编辑:这来自 Rosetta Code 上的一项任务。
Defining Primitive Data Types: Demonstrate how to define a type that behaves like an integer but has a lowest valid value of 1 and a highest valid value of 10.
我在这里添加它是因为我认为它可能对其他人有用。
最佳答案
好吧,让我们来看看。首先,CLR 中内置了一些数据类型。这些不能修改或添加新的,因为它们是标准的一部分。您可以找到一个列表 here或 here .那是 C#,但该列表也应该存在于 VB.net 的某处,并且看起来应该相同,因为底层 CLR 是相同的。此外,该列表不完整,因为缺少浮点数和字符,但您明白了。
但是,有一些结构封装了这些数据类型并添加了一些额外的功能。例如, System.Int32 只是一个普通的标准结构,不涉及魔法。随意在 Reflector 中查看它,它在 mscorlib 中:
[Serializable, StructLayout(LayoutKind.Sequential), ComVisible(true)]
public struct Int32 : IComparable, IFormattable, IConvertible, IComparable<int>, IEquatable<int>
所以你想要你自己的“1 到 10”整数?然后我建议查看最近的合适类型,即
Int16
或 Byte
.如果您查看它们,您会发现它们看起来都有些相似,但它们基于一种内置数据类型。只是复制/粘贴和修改一些内置结构(即
System.Byte
)并不能完全起作用,因为有些成员是内部的(即 NumberFormatInfo.ValidateParseStyleInteger
),但是 Reflector可以在这里提供帮助。
关于.net - 如何在 .NET 中创建自己的原始数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/393061/