在设置类实例中的变量后运行类初始化函数的优雅解决方案



>我有一个简单的类,它包含一个字符串值和一个写入值的初始化函数。s设置为默认值。

class ExampleClass
{
public string s = "default";
public ExampleClass()
{
Console.Write(s);
}  
static void Main(string[] args)
{
ExampleClass MyClass = new ExampleClass{ s = "MyString" };
}
}

运行时,使用自定义字符串("MyString"(创建类的实例。创建此新实例时,将调用并运行初始化函数。问题是,初始化函数在设置值 s 之前运行,因此该函数使用s的默认函数("default"(运行。

有没有一种优雅的方法可以使用从类的新实例设置的值运行初始化函数?

你正在构造函数 - ExampleClass 中做你的 Console.Write(s(。构造函数在您初始化类 ExampleClass 的第二个时被调用。所以是的,它将始终写入"默认"而不是"MyString">

你需要有另一个执行 Console.Write 的函数。喜欢这个

public void PrintString(){ Console.Write(s); }

然后在您的主函数中只需执行以下操作:

MyClass.PrintString();

一个建议的更改 - 不确定这是否优雅,但可能被认为是好的做法是在类中没有公共参数。也许这个——

class ExampleClass 
{
public ExampleClass(string s = "default")
{
Console.Write(s);
}
static void Main(string[] args)
{
ExampleClass MyClass = new ExampleClass("MyString");
}
}

最新更新