我试图更深入地理解值类型和System.ValueType
我的问题是当我右键单击 int 并单击“转到定义”时,我转到位于mscorlib.dll中的System.Int32
现在当我右键单击 struct 或(enum)并点击“转到定义”时,会显示一条错误:“无法导航到'struct'”
“struct”或“enum”来自哪里?
答案 0 :(得分:7)
System.Int32
是一种类型。
struct
和enum
都是关键字而不是类型。
就System.ValueType
而言,请查看文档:
MSDN - ValueType Class (System)
它明确指出您无法创建继承自ValueType
的类。相反,您必须使用struct
和enum
等关键字隐式继承该类的其中一种类型。
答案 1 :(得分:7)
int
是System.Int32
类型的别名,因此它有一个可以导航到的类型定义。
struct
和enum
与类型不对应;它们只是C#语言中的关键词。
答案 2 :(得分:1)
引人注目的有趣说明,枚举是指System.Enum,所有enum
类型都源于此。但是,用法非常专业,编译器不允许您直接从中派生。
struct
类型按值而不是引用传递 - 就像在C#中传递非指针变量一样。如果你不理解指针,那么何时使用struct
或class
的细微差别相当复杂,但基本上所有的值传递都是副本,而不是对原始副本的引用。
enum
是一个包含或多于条目或标志的有限列表的类,并且具有来自前面提到的System.Emum的一些辅助方法。这对于像
enum direction { Up, Down, Left, Right }