public class NullTest
{
private string _id = string.Empty; public string Id
{
get { return _id; }
set { _id = value; }
} public static readonly NullTest Null = new NullTest();
}我这样发现,只有项目组里只要有人写过这样的代码NullTest.Null.Id = "Little Pig";那么NullTest.Null.Id就不再是string.Empty了除了约定大家都不对Null的成员赋值,还有什么办法可以限制变更Null的成员
{
private string _id = string.Empty; public string Id
{
get { return _id; }
set { _id = value; }
} public static readonly NullTest Null = new NullTest();
}我这样发现,只有项目组里只要有人写过这样的代码NullTest.Null.Id = "Little Pig";那么NullTest.Null.Id就不再是string.Empty了除了约定大家都不对Null的成员赋值,还有什么办法可以限制变更Null的成员
public class NullTest
{
private string _id = string.Empty; public string Id
{
get { return _id; }
} public static readonly NullTest Null = new NullTest();
}
{
private string _id = string.Empty; public string Id
{
get { return _id; }
// set { _id = value; } 去掉可写属性呗~
} public static readonly NullTest Null = new NullTest();
}
你就把不允许赋值的属性都定义为只读嘛
或用单例模式
单例好象也不能防止你修改属性的
const 只能用作值类型和string
public class NullTest
{
private string _id = string.Empty; public string Id
{
get { return _id; }
} public static NullTest Null
{
get{
return new NullTest();
}
}
}
---------------------------------
那你得确定,哪些地方只读,哪些地方可写。比如,对外只读,对内可写 public string Id{get;internal set;}
public class NullTest
{
private NullTest(){} public string Id{get;internal set;} //下面每次返回的都是同一个,并不是每次获取就是一个新实例(这样的话我觉得直接让他们构造得了)
NullTest nullTest;
public static NullTest Null
{
get
{
if (nullTest==null)
nullTest=new NullTest(); return nullTest;
}
}
}