Ami*_*ble 6 c# compilation reference
这个问题是我的好奇心,所以我不会寻找解决办法,只是做一个解释。
我一直想知道为什么在转换时必须创建一个新变量。
这是我认为编译器可以在我转换为已知类型时发挥其魔力的事情。
所以这样的代码可以写得更短。
DataTable dataTable = RetrieveDataTableFrom(whereEver);
foreach (DataRow row in dataTable.rows)
{
if (row.ItemArray[0].GetType() == typeof(myTypeA))
{
MyTypeA myTypeA = (myTypeA)row.ItemArray[0];
myTypeA.myCustomProperty = "dem works";
}
}
Run Code Online (Sandbox Code Playgroud)
像这样,我只是更直接地编辑属性。
foreach (DataRow row in dataTable.rows)
{
if (row.ItemArray[0].GetType() == typeof(myTypeA))
{
(myTypeA)row.ItemArray[0].myCustomProperty = "dem breaks";
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:哦,我的理解有误!哎呀,我觉得这没有道理……哈哈。额外一点,您是否认为这两种方法(假设使用正确数量的括号)比另一种方法更清晰/可读?
嗯,这是因为您在第二个示例中实际上没有以正确的方式进行转换。
((myTypeA)(row.ItemArray[0])).myCustomProperty = "dem breaks";
Run Code Online (Sandbox Code Playgroud)
选角时,尽可能清楚地了解你到底要选角的内容通常很重要。在这种情况下,添加几组括号向编译器表明您不想转换rowor row.ItemArrayor row.ItemArray[0].myCustomProperty,但是row.ItemArray[0],它实际上是类型myTypeA。
| 归档时间: |
|
| 查看次数: |
1210 次 |
| 最近记录: |