这可能是一个愚蠢的问题,但是我想在我的ASP .NET应用程序中从OnSelectedIndexChanged
事件中获取两个值。
哪个更好?
var personId = Convert.ToInt32(((GridView)sender).SelectedDataKey.Values["PersonId"]);
var name = ((GridView)sender).SelectedDataKey.Values["Name"].ToString();
OR
var gView = (GridView)sender;
var personId = Convert.ToInt32(gView.SelectedDataKey.Values["PersonId"]);
var name = gView.SelectedDataKey.Values["Name"].ToString();
对于速度来说,两次投射GridView会产生多大的影响?如果我提取更多价值怎么办?还有其他的
答案 0 :(得分:5)
后者(施放一次)会稍快一些。我也更喜欢它的可读性。性能差异是如此之小,以至于在这种情况下真正考虑它很可能是毫无意义的微优化。
答案 1 :(得分:3)
编译器会为您优化。为了便于阅读,我更喜欢第二种。
答案 2 :(得分:2)
不铸造更好。从理论上讲,它在实践中更快,无关紧要。但是,您投射一次会产生更清晰的代码。
答案 3 :(得分:1)
我会选择不投出比我需要的更多。在这种情况下,性能无关紧要,但更容易理解。
答案 4 :(得分:1)
由于一次投射和可读性,我会选择稍微改进的第二种选择
var key = ((GridView)sender).SelectedDataKey;
var personId = Convert.ToInt32(key.Values["PersonId"]);
var name = key.Values["Name"].ToString();
此代码更好地显示了意图 - 您在这里使用DataKey,而不是使用整个GridView,因此您不需要继续引用GridView对象。
答案 5 :(得分:0)
施法两次比施法一次花费更多
有一个选项,编译器将在两种情况下输出相同的.dll,这意味着它已经为您优化了 - 更加确定 - 用第一个选项进行编译并保存您获得的.DLL,然后使用第二个选择进行编译。
比较两个.DLL的大小 - 如果它是相同的 - 编译器已经为你优化了它,否则选择第二个选择,因为它更具可读性和更优化。