0

OnSelectedIndexChangedばかげた質問かもしれませんが、ASP .NET アプリのイベントから 2 つの値を取得したいとします。
どちらが良いですか?

var personId = Convert.ToInt32(((GridView)sender).SelectedDataKey.Values["PersonId"]);
var name = ((GridView)sender).SelectedDataKey.Values["Name"].ToString();

また

var gView = (GridView)sender;
var personId = Convert.ToInt32(gView.SelectedDataKey.Values["PersonId"]);
var name = gView.SelectedDataKey.Values["Name"].ToString();

GridView を 2 回キャストすると、速度に関してそれほど大きな違いが生じるでしょうか? より多くの値を取得していたらどうなりますか? 他にもあるの?

4

6 に答える 6

5

後者 (1 回キャスト) は、わずかに高速になります。また、読みやすさも気に入っています。パフォーマンスの違いは非常にわずかであるため、この場合、それを実際に考慮することはおそらく無意味なマイクロ最適化です。

于 2012-05-14T21:29:35.600 に答える
3

コンパイラはそれを最適化します。読みやすくするために、2番目を好みます。

于 2012-05-14T21:29:00.280 に答える
2

キャスティングしないほうがいい。理論的には実際には高速ですが、問題ではありません。ただし、一度キャストすると、コードがより明確になります。

于 2012-05-14T21:28:49.703 に答える
1

1つのキャストと読みやすさのために、2番目のオプションを少し改善します

var key = ((GridView)sender).SelectedDataKey;
var personId = Convert.ToInt32(key.Values["PersonId"]);
var name = key.Values["Name"].ToString();

また、このコードは意図をよりよく示しています-GridView全体ではなく、ここでDataKeyを使用しているため、GridViewオブジェクトへの参照を保持する必要はありません。

于 2012-05-14T21:33:10.763 に答える
1

必要以上にキャストしないことを選択します。この場合、パフォーマンスに関してはそれほど重要ではありませんが、従うのは簡単です。

于 2012-05-14T21:28:59.620 に答える
0

2 回唱えると、1 回唱えるよりコストがかかります。
どちらの場合もコンパイラが同じ .dll を出力するというオプションがあります。つまり、既に最適化されていることを意味します。念のため、最初の選択肢に準拠し、取得した .DLL を保存してから、2 番目の選択肢でコンパイルします。 .
2 つの .DLL のサイズを比較します。同じ場合は、コンパイラによって既に最適化されています。

于 2012-05-14T21:33:03.023 に答える