你发布的代码没有编译,所以我继续做了几个可能的变化。
1.静态字段和静态方法
public class Test
{
static string myVar = GetValue();
public Test()
{
}
static string GetValue()
{
return String.Empty;
}
}
在这种情况下,在哪里设置静态字段并不重要:在静态构造函数中(代码中未显示)或作为静态字段初始化。当一个类型被加载到 AppDomain 中时,CLR 将初始化两者。(有一个序列,例如 CLR 首先调用静态构造函数,然后设置所有静态字段,反之亦然 - 虽然这个序列不在您的控制范围内)。
2. 在构造函数中设置属性
public class Test1
{
string MyVar{get;set;}
public Test1()
{
MyVar = GetValue();
}
string GetValue()
{
return String.Empty;
}
}
这取决于类型和用途。在这种特殊情况下,我可能会避免这样做,因为构造函数意味着轻量级。如果您进行任何繁重的处理,最好将其移至Initialize
具有适当错误处理和try-catch
块的方法。如果您不做任何繁重的工作来设置属性 - 只需在构造函数中放置一个默认值,例如MyVar = "EMPTY"
.
3.在另一个类中设置属性
public class Test
{
public string MyVar{get;set;}
public Test(){ }
public string GetValue()
{
return String.Empty;
}
}
//somewere else
Test t = new Test();
t.MyVar = t.GetValue();
这看起来有点奇怪,因为类提供了一个状态(属性)和获取当前状态的方法(GetValue 方法)。在这种情况下,两个成员(属性和方法)可能应该合并为一个getter。