例如,做这样的事情:
foreach (DataRow row in data.Rows)
{
Person newPerson = new Person()
{
Id = row.Field<int>("Id"),
Name = row.Field<string>("Name"),
LastName = row.Field<string>("LastName"),
DateOfBirth = row.Field<DateTime>("DateOfBirth")
};
people.Add(newPerson);
}
不可能为单个分配设置断点,断点设置为整个块。
如果我想具体查看我的代码在哪里损坏,我必须使用:
foreach (DataRow row in data.Rows)
{
Person newPerson = new Person();
newPerson.Id = row.Field<int>("Id");
newPerson.Name = row.Field<string>("Name");
newPerson.LastName = row.Field<string>("LastName");
newPerson.DateOfBirth = row.Field<DateTime>("DateOfBirth");
people.Add(newPerson);
}
或者也许我错过了一些东西。Can使用对象初始值设定项时您正确调试吗?
对象初始值设定项只是语法糖,在编译时会被翻译。你原来的对象初始值设定项变成这样:
var temp = new Person();
temp.Id = row.Field<int>("Id");
temp.Name = row.Field<string>("Name");
temp.LastName = row.Field<string>("LastName");
temp.DateOfBirth = row.Field<DateTime>("DateOfBirth");
var person = temp;
由于整个块都是这样平移的,因此您无法在一个步骤中进行中断。如果您绝对需要在某一特定步骤上中断,您有几种选择。
分开来。调试时不要使用对象初始值设定项,您可以在事后将它们放回原处。
温度变量。而不是分配Id = row.Field<int>("Id")
直接赋值row.Field<int>("Id")
首先分配给临时变量(或您想要调试的任何一个),然后将临时变量分配给对象初始值设定项属性。
方法调用。您可以将一些代码包装在自定义方法调用中,仅允许您在自定义方法中添加断点。你甚至可以这样概括它:
Id = BreakThenDoSomething(() => row.Field<int>("Id"));
public static T BreakThenDoSomething<T>(Func<T> f)
{
Debugger.Break();
return f();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)