如何在C#程序中添加我自己的数据类型?

如何在C#程序中添加我自己的数据类型?,c#,types,C#,Types,就像“int”指的是“Int32”类一样,“string”指的是“string”类。如何将像“abc”这样的数据类型引用到我的“abc”类中?像int等类型是内置类型/保留关键字。这些都是由编译器定义的,因此无法添加您自己的别名。您可以添加如下别名: using abc = MyNamespace.Abc; 但我想问你为什么要这么做 [另一张海报指出了一个有效的用法,即名称空间类型冲突,但我将始终使用完全限定的类型名称,否则可能会非常混乱。] using abc = MyNamespace.A

就像“int”指的是“Int32”类一样,“string”指的是“string”类。如何将像“abc”这样的数据类型引用到我的“abc”类中?

像int等类型是内置类型/保留关键字。这些都是由编译器定义的,因此无法添加您自己的别名。

您可以添加如下别名:

using abc = MyNamespace.Abc;
但我想问你为什么要这么做

[另一张海报指出了一个有效的用法,即名称空间类型冲突,但我将始终使用完全限定的类型名称,否则可能会非常混乱。]

using abc = MyNamespace.Abc;
我不确定这样做的好处是什么,如果您找到具有相同名称的不同类型,通常会使用它。

您的“类”是一种数据类型

您给出的示例是CLR数据类型名称和C#数据类型名称之间的区别。它们是别名。C#int映射到CLR Int32,C#string映射到CLR string


您可以使用“using Xyx=Abc”创建自己的别名。您必须在每个源文件中执行此操作,因此它没有那么有用。

您完全误解了“数据类型”是什么。在C#中,诸如
int
string、
等关键字只是CLR中已经存在的相应类型(实现为类/结构)的别名。例如,
int
System.Int32
的含义完全相同,后者是由.NET framework的核心定义的结构。类似地,
string
只是指
System.string
,这是一个类

在.NET中,每个“数据类型”最终都继承自
System.Object
(在C#中别名为
Object
)。您提到的数据类型只是从
System.Object
继承的预实现类和结构;他们没什么特别的。您应该认识到,C#不像其他语言那样具有特殊的基元类型:它们都只是公共类型层次结构的一部分。您使用的关键字只是为了方便而提供的

本质上,不用担心。您的类可以按原样使用,这就是应该如何使用它们

一些阅读:


你所寻找的特征可能是你从C++中得到的东西。C#中没有等价的概念。您所拥有的只是内置数据类型。您唯一可以声明的是您自己的类或结构,而不是数据类型。

在c中无法定义自定义数据类型# 我也有同样的问题,我寻找解决方案却没有成功
在我的例子中,我需要为Marshallas(UnmanagedType.LPWStr)这样的非托管类型定义一个数据类型。

你为什么要这样做?@Mitch-Wheat-也许在VS中有一个蓝色字体;)使用我的类来创建一个可供其他程序员使用的数据类型。请为您的类指定一个正确的名称开头…类就是一个数据类型!这是怎么得到这么多的选票和支持的?这毫无意义…令人毛骨悚然…我甚至使用了相同的名称空间name@fletcher:是的,那太可怕了!尤其是因为我永远不会这么做!英雄联盟假设我想把我的类交给其他程序员使用。如果我让我的类像一个数据类型,那么他们就可以像一个简单的数据类型一样轻松地理解和使用它。感谢您的回答。正如Philip Smith指出的,您的自定义类是一种数据类型,它的成员可以通过该上下文访问。很久以前,但答案“为什么”是:全局定义一种类似于
C
的数据类型,以便快速更改类型。e、 g:
DBKey=System.UInt32
DBKey=System.UInt64
。。。或者
DBKey=System.Int32
我想我应该在这里使用CTS而不是CLR。我的不好。但是visual studio将我的类检测为“类”,并将其着色为类。但是数据类型在Visual Studio中颜色不同。不正确。所有类都是数据类型。VS以深蓝色突出显示C#保留字,以淡蓝色突出显示所有其他数据类型。深蓝色突出显示与类和类型之间的差异无关。