Yan*_*hof 19 .net clr struct value-type reference-type
在定义具有引用类型成员的结构(而不是将其定义为类)时是否有任何意义?例如,要定义此结构:
public struct SomeStruct
{
string name;
Int32 place;
}
Run Code Online (Sandbox Code Playgroud)
我问,因为我知道结构是一个值类型,并在其中定义一些引用类型没有任何意义.
我对吗?有人可以解释一下吗?
Cod*_*ray 22
十分之九,你应该首先创建一个类而不是一个结构.例如,与C++中的结构相比,结构和类在C#中具有非常不同的语义.大多数使用结构的程序员都应该使用一个类,这样的问题就像坦率地说无关紧要.
以下是关于何时应该在类上选择结构的一些快速规则:
但是,如果你已经做出了明智的决定并且确实相信你确实需要一个结构而不是一个类,那么你需要重新考虑第二点,并了解什么是值类型语义.Jon Skeet的文章在澄清区别方面应该有很长的路要走.
完成后,您应该理解为什么在值类型(struct)中定义引用类型不是问题.引用类型就像指针一样.结构内部的字段不存储实际类型; 相反,它存储指向该类型的指针(或引用).使用包含引用类型的字段声明结构没有任何矛盾或错误.它既不会"减慢对象",也不会"调用GC",这是你在评论中表达的两个问题.
| 归档时间: |
|
| 查看次数: |
4997 次 |
| 最近记录: |