我正在尝试重写方法ToString()
以返回类中字段的值并清除该字段(仅返回一次值)。我注意到,当我运行代码时,代码似乎可以正常工作,直到最后没有任何中断(至少通过重写方法),但是当逐步调试时,它没有返回任何值,并且看起来有对象的 init 处没有存储任何值。
我已经设法通过将方法的名称更改为ToString()
其他未覆盖的名称来解决此问题,同时注释该text = "";
行使其可以工作,但我不知道为什么。当我尝试将 StringBuilder 值分配给临时变量、清除 StringBuilder 并返回临时值时,也发生了同样的情况。我很好奇是什么导致了这种奇怪的行为。
class Program
{
public class MyClass
{
private string text = "some value";
public override string ToString()
{
string temp = text;
text = "";
return temp;
}
}
public class MyClass2
{
private string text = "some value";
public override string ToString()
{
return text;
}
}
static void Main(string[] args)
{
MyClass obj = new MyClass();
MyClass2 obj2 = new MyClass2();
Console.WriteLine("1 …
Run Code Online (Sandbox Code Playgroud)