我应该创建另一个变量而不是3个显式强制转换吗?

时间:2011-02-21 22:34:36

标签: c# coding-style

这是速度问题。我有以下代码:

if (MyXMLReader.SearchForValue(command, new List<string>() { "/Command/Descriptions/Description/System" }, ((TabDocument)dockManager.ActiveDocument).version))
{
    txtBox_desc.Text = MyXMLReader.GetValue(command, "/Command/Descriptions/Description[" + MyXMLReader.SearchForValue_Int(command, new List<string>() { "/Command/Descriptions/Description/System" }, ((TabDocument)dockManager.ActiveDocument).version) + "]/Content");
}
if (MyXMLReader.SearchForValue(command, new List<string>() { "/Command/Uses/Use/System" }, ((TabDocument)dockManager.ActiveDocument).version))
{
    txtBox_use.Text = MyXMLReader.GetValue(command, "/Command/Uses/Use[" + MyXMLReader.SearchForValue_Int(command, new List<string>() { "/Command/Uses/Use/System" }, ((TabDocument)dockManager.ActiveDocument).version) + "]/Content");
}
if (MyXMLReader.SearchForValue(command, new List<string>() { "/Command/Notes/Note/System" }, ((TabDocument)dockManager.ActiveDocument).version))
{
    txtBox_notes.Text = MyXMLReader.GetValue(command, "/Command/Notes/Note[" + MyXMLReader.SearchForValue_Int(command, new List<string>() { "/Command/Notes/Note/System" }, ((TabDocument)dockManager.ActiveDocument).version) + "]/Content");
}

我应该创建一个新的string变量来保存

((TabDocument)dockManager.ActiveDocument).version?

这会带来更快的速度和响应能力吗?这会是坏事还是好事?

4 个答案:

答案 0 :(得分:8)

简而言之,

重复投放ActiveDocumentTabDocument的成本可能微乎其微,但如果您希望优化,将其存储到中间变量是迈向积极的一步。

但为什么你真的应该这样做,是为了代码可读性。

答案 1 :(得分:3)

它肯定会提高可读性。

关于速度和响应能力,唯一可以改善任何事情的方法是ActiveDocumentversion属性执行多次计算以获得其返回值。

答案 2 :(得分:3)

您应该使用只读变量。它会更快,并有助于使您的代码更具可读性。

我们应该尽可能避免写两次同样的事情。

希望这有帮助

答案 3 :(得分:1)

ActiveDocument和String都是间接的一个级别。所以,他们都会花费相同的时间。

您将添加使用此方法创建“String”对象的额外开销。

但在宏伟的计划中,所有这些都应该是令人难以置信的微不足道。如果你想提高你的速度,你应该去别处看看!