.net - 如何在 .NET 中创建自己的原始数据类型?

标签 .net vb.net

我如何创建自己的原语?例如,范围为 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 中内置了一些数据类型。这些不能修改或添加新的,因为它们是标准的一部分。您可以找到一个列表 herehere .那是 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”整数?然后我建议查看最近的合适类型,即 Int16Byte .如果您查看它们,您会发现它们看起来都有些相似,但它们基于一种内置数据类型。

只是复制/粘贴和修改一些内置结构(即 System.Byte )并不能完全起作用,因为有些成员是内部的(即 NumberFormatInfo.ValidateParseStyleInteger ),但是 Reflector可以在这里提供帮助。

关于.net - 如何在 .NET 中创建自己的原始数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/393061/

相关文章:

c# - 什么开源 C# 库可以读/写微型 QR 码?

vb.net - 冒泡排序与插入排序 - 尝试编写一个程序来确定哪个更有效

vb.net - 具有完整事件的 vb6 上的 Show.net 控件

c# - 将 razor (cshtml) 和 c# 项目添加到 Visual Studio vb 网站是否错误?

c# - 使用 C# 选择数组的某些字符串

c# - 绘制格式化文本

.net - 何时使用 AsyncOperation 和 AsyncOperationManager

asp.net - 在 ASP.NET 网站中锁定车队

c# - 为什么短路运算符不是默认值

c# - 使用任务并行库时得到奇怪的结果?