我有两个构造函数,它们将值提供给只读字段。
class Sample
{
public Sample(string theIntAsString)
{
int i = int.Parse(theIntAsString);
_intField = i;
}
public Sample(int theInt)
{
_intField = theInt;
}
public int IntProperty
{
get { return _intField; }
}
private readonly int _intField;
}
一个构造函数直接接收值,另一个构造函数进行一些计算并获取值,然后设置字段。
现在这里是抓住:
有任何想法吗?
像这样:
public Sample(string str) : this(int.Parse(str)) {
}
如果没有在自己的方法中进行初始化(例如因为你想在初始化代码之前做太多,或者将它包装在 try-finally 中,或者其他什么),那么你想要的东西不能令人满意地实现你可以拥有任何或所有构造函数通过引用初始化例程传递 readonly 变量,然后初始化例程将能够随意操作它们。
class Sample
{
private readonly int _intField;
public int IntProperty
{
get { return _intField; }
}
void setupStuff(ref int intField, int newValue)
{
intField = newValue;
}
public Sample(string theIntAsString)
{
int i = int.Parse(theIntAsString);
setupStuff(ref _intField,i);
}
public Sample(int theInt)
{
setupStuff(ref _intField, theInt);
}
}
在构造函数的主体之前,使用以下任一方法:
: base (parameters)
: this (parameters)
例:
public class People: User
{
public People (int EmpID) : base (EmpID)
{
// Add more statements here.
}
}