鉴于这个课程..。
public class Test
{
private long _id;
public Test(long id)
{
_id = id;
}
}.Net编译器是否会将其编译为...
public class Test
{
private readonly long _id;
public Test(long id)
{
_id = id;
}
}换句话说,它是否知道_id只在构造函数中设置,因此是只读的?
发布于 2010-01-21 20:35:40
不,编译器不会这样做。字段的IL代码如下所示:
.field private int64 _id...while只读版本将获得以下IL代码:
.field private initonly int64 _id发布于 2010-01-21 20:38:21
编译器不可能知道字段只在构造函数中设置。例如,想象一下在某些方法中使用反射,其中字段的名称是从数据库中读取的。如果希望字段是不可变的,则需要显式指定readonly关键字。
https://stackoverflow.com/questions/2109123
复制相似问题