この質問は私の好奇心なので、これについての説明を求めているわけではありません。
キャスト時に新しい変数を作成する必要があるのはなぜだろうと思っていました。
これは、既知の型にキャストしているときに、コンパイラが魔法のように機能すると思っていたようなものです。
そのため、このようなコードはより短く記述できます。
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";
}
}
編集:ああ、私の理解の間違いです!おっと、意味がないと思いました...は。少し余分に、どちらの方法も(正しい量の括弧が使用されていると仮定して)他の方法よりも明確で読みやすいと思いますか?