通常,结构应该用作代码中的写/写块。当方法放在结构中时,CLR将结构框以某种方式对其进行处理,作为类(?)。
那么仅仅定义一个结构然后定义一个包含类中所有方法和结构的类会更好吗?
我确定C#允许这样做的原因。
答案 0 :(得分:3)
结构是值类型,类是引用类型。这是主要的区别
看看这个:
public struct MyStruct
{
public string Name { get; set; }
}
...
MyStruct s = new MyStruct();
s.Name = "Foo";
MyStruct s2 = s;
s2.Name = "Bah";
Console.Write("Name of MyStruct s: " + s.Name); // Foo not Bah
将结构分配给另一个变量时,会创建一个副本,因此您有两个结构实例。对于类,您可以修改这两个变量,因为它们都引用相同的实例。
这是主要的区别。除此之外structs and classes是相似的。您可以在两者中都包含方法,属性,事件等。在结构中使用方法没有错。
但是由于结构不应该可变(应该具有只读属性),大多数方法都会修改"它将返回结构的新实例(如f.e. DateTime.AddDays
)。
你们两个都有这些成员: