代码之家  ›  专栏  ›  技术社区  ›  chanchal1987

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

  •  9
  • chanchal1987  · 技术社区  · 16 年前

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

    7 回复  |  直到 16 年前
        1
  •  19
  •   Philip Smith    16 年前

    你的“类”是一个数据类型。

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

        2
  •  10
  •   Mitch Wheat    16 年前

    可以添加如下别名:

    using abc = MyNamespace.Abc;
    

    但我想问你为什么要这么做。

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

        3
  •  5
  •   fletcher    16 年前
    using abc = MyNamespace.Abc;
    

    我不知道这样做的好处是什么,如果你找到同名的不同类型,通常会用到它。

        4
  •  5
  •   Will Vousden    16 年前

    你完全误解了什么是“数据类型”。在C#,关键字 int string, etc只是CLR中已经存在的相应类型(实现为类/结构)的别名。例如, 内景 意思和 System.Int32 ,它是由.NET framework的核心定义的结构。同样地, string System.String ,这是一个类。

    在.NET中, 每一个 System.Object (别名为 object 在C#)中。您引用的数据类型只是从中继承的预实现类和结构 系统对象

    本质上, . 你的类可以按原样使用,这就是它们应该被使用的方式。

    一些阅读:

        5
  •  2
  •   Laurens Ruijtenberg    16 年前

        6
  •  0
  •   Johann Strydom    16 年前

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

        7
  •  0
  •   dawood karimy    7 年前

    在c语言中无法定义自定义数据类型# 我也有同样的问题,我一直在寻找解决办法,但没有成功 在我的例子中,我需要为诸如MarshalAs(UnmanagedType.LPWStr)之类的非托管类型定义一个数据类型