gpt4 book ai didi

c# - 在不创建新变量的情况下将对象转换为类型

转载 作者:太空狗 更新时间:2023-10-30 00:33:04 24 4
gpt4 key购买 nike

这个问题是我的一个好奇心,所以我不是在寻找一个解释。

我一直想知道为什么在转换时必须创建一个新变量。

当我转换为已知类型时,我认为编译器可以神奇地处理这种事情。

所以像这样的代码可以写得更短。

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";
}
}

像这样,我只是更直接地编辑属性。

foreach (DataRow row in dataTable.rows)
{
if (row.ItemArray[0].GetType() == typeof(myTypeA))
{
(myTypeA)row.ItemArray[0].myCustomProperty = "dem breaks";
}
}

编辑:哦,我的理解有误!哎呀,我以为这没有意义...哈。还有一点,您是否认为任何一种方法(假设使用了正确数量的括号)比另一种方法更清晰/可读?

最佳答案

这应该可行

foreach (DataRow row in dataTable.rows)
{
if (row.ItemArray[0].GetType() == typeof(myTypeA))
{
((myTypeA)row.ItemArray[0]).myCustomProperty = "dem breaks";
}
}

或者您可以使用 LINQ

foreach (var row in dataTable.Rows.Cast<DataRow>().Where(row => row.ItemArray[0].GetType() == typeof(myTypeA)))
{
((myTypeA)row.ItemArray[0]).myCustomProperty = "dem breaks";
}

关于c# - 在不创建新变量的情况下将对象转换为类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13844176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com