“struct”来自哪里?

时间:2014-07-16 23:12:48

标签: c#

我试图更深入地理解值类型和System.ValueType

我的问题是当我右键单击 int 并单击“转到定义”时,我转到位于mscorlib.dll中的System.Int32

现在当我右键单击 struct 或(enum)并点击“转到定义”时,会显示一条错误:“无法导航到'struct'”

“struct”或“enum”来自哪里?

3 个答案:

答案 0 :(得分:7)

System.Int32是一种类型。

structenum都是关键字而不是类型。

System.ValueType而言,请查看文档:

MSDN - ValueType Class (System)

它明确指出您无法创建继承自ValueType的类。相反,您必须使用structenum等关键字隐式继承该类的其中一种类型。

答案 1 :(得分:7)

intSystem.Int32类型的别名,因此它有一个可以导航到的类型定义。

structenum与类型不对应;它们只是C#语言中的关键词。

答案 2 :(得分:1)

引人注目的有趣说明,枚举是指System.Enum,所有enum类型都源于此。但是,用法非常专业,编译器不允许您直接从中派生。

struct类型按值而不是引用传递 - 就像在C#中传递非指针变量一样。如果你不理解指针,那么何时使用structclass的细微差别相当复杂,但基本上所有的值传递都是副本,而不是对原始副本的引用。

enum是一个包含或多于条目或标志的有限列表的类,并且具有来自前面提到的System.Emum的一些辅助方法。这对于像

这样的事情最有用
enum direction { Up, Down, Left, Right }

否则,请参阅Classes and StructsEnumeration Types