use*_*817 2 c# debugging tostring visual-studio-2010
这是一个奇怪的问题,即使我旁边的高级程序员也很困惑.完整的问题是我的ToString()方法被调用,我不知道或不知道这是我的代码
static void Main(string[] args)
{
Console.Out.WriteLine("Blank Constructor");
Form form = new Form(); <-- ToString() gets called on this line.
form.ToString();
Console.Read();
}
public Form()
{
FormName = "";
FormImageLocation = "";
FormDescription = "";
FormID = 0;
CreatedDate = DateTime.Now;
LastUpdate = DateTime.Now;
Fields = new List<Field>();
Packets = new List<Packet>(); <-- This line in the constructor
}
public override string ToString()
{
string returnString;
returnString = " Form Name: " + FormName + " Form Image Location: " + FormImageLocation + "Form Description: " + FormDescription + " FormID: " + FormID + " Created Date: " + CreatedDate + " LastUpdate: " + LastUpdate ;
if (fields.Count != 0)
{
foreach (var field in fields)
{
returnString += field.ToString();
}
}
else
{
returnString += "!!! This Form has no Fields !!!";
}
if (Packets.Count != 0)
{
foreach (var packet in Packets)
{
returnString += packet.ToString();
}
}
else
{
returnString += " !!! This Form does not belong to any Packets !!!";
}
Console.Out.WriteLine(returnString);
return returnString;
}
public Packet(string packet_name, List<Form> list_of_forms)
{
PacketName = packet_name;
forms = list_of_forms;
}
Run Code Online (Sandbox Code Playgroud)
这种看似随机的再次ToString()打印只会在我单步执行程序时发生.它将在我上面指定的行上打印,也可以在构造函数退出并打印时像疯了一样打开ToString()方法本身.我在其中设置了一个断点,ToString()但只有在ToString()合法调用时它才会在断点处停止,因此当我单步执行并且它执行此随机打印时它将不会停止在断点内ToString().我通过并删除了所有的调用ToString(),它仍然被随机调用,当我注释掉returnString变量并刚刚返回"她那里"问题消失但这没有任何帮助.如果我只是在没有断点的情况下运行程序,则不会发生此问题.你们中的一些人可能会说,如果它在运行时起作用并不重要但是它让我非常小心,如果我遇到代码问题,我试着通过代码来找到问题我会得到不同的结果并阻碍调试.我尝试覆盖整个问题以及我尝试过并提供所需的所有代码,如果我不清楚某些事情让我知道,我会再次尝试解释它.最后我在Windows 7 64位机器上,我使用的是Visual Studio C#2010 Express.
您可能在表单上有一个监视,或者以其他方式在调试器中显示它的值(通过"本地"窗口,堆栈跟踪等).调试器用于ToString显示对象.如果这是你的程序有问题,你应该有可能重新设计的ToString,使得它不是一个为它这样调用,否则简单地使用调试器回避的问题.
ToString你通常希望避免使用非常"昂贵" 的情况是一种需要警惕的情况.可能会偶尔出现例外情况,但是通话者通常认为它是一种廉价的操作.考虑是否适合使用其他方法/属性来表示更复杂的显示字符串,从而使实现更简单/更便宜ToString.
| 归档时间: |
|
| 查看次数: |
480 次 |
| 最近记录: |