哪个更好?这甚至重要吗
本文关键字:更好 | 更新日期: 2023-09-27 18:34:12
这可能是
div类="answers"吗> 一个愚蠢的问题,但假设我想从我的ASP .NET应用程序中的OnSelectedIndexChanged
事件中获取两个值。
哪个更好?
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 是否会产生很大差异?如果我提取更多值会怎样?还有其他<</p>
后者(投射一次)会稍微快一些。 我也更喜欢它的可读性。 性能差异如此之小,以至于在这种情况下真正考虑它很可能是毫无意义的微优化。
编译器将为您优化它。为了可读性,我更喜欢第二个。
不投射更好。理论上它更快在实践中没关系。但是,您强制转换一次的事实会导致更清晰的代码。
我会选择不投出超过我需要的。在这种情况下,性能方面无关紧要,但更容易遵循。
我会选择几乎没有改进的第二种选择,因为一个转换和可读性
var key = ((GridView)sender).SelectedDataKey;
var personId = Convert.ToInt32(key.Values["PersonId"]);
var name = key.Values["Name"].ToString();
此外,此代码可以更好地显示意图 - 您在此处使用 DataKey,而不是使用整个 GridView,因此您无需保留对 GridView 对象的引用。
两次铸造比一次铸造成本更高。
有一个选项,编译器将在两种情况下输出相同的.dll这意味着它已经为您优化了它 - 特别确定 - 遵守第一个选择并保存您获得的.DLL,然后使用第二个选择编译它。
比较两者的大小。DLL 的 - 如果它相同 - 编译器已经为您优化了它,否则请选择第二种选择,因为它更具可读性和更优化。