Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有什么方法可以优化这个C代码吗?_C# - Fatal编程技术网

C# 有什么方法可以优化这个C代码吗?

C# 有什么方法可以优化这个C代码吗?,c#,C#,我有我的代码,我想优化它。对我来说,它看起来已经优化了。有人能建议我如何使它更优化一点吗 if (target == "power") { return new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } }; } if (target == "notes") { return new JsonResult { Data = new { RC = new Data.

我有我的代码,我想优化它。对我来说,它看起来已经优化了。有人能建议我如何使它更优化一点吗

if (target == "power")
{
    return new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } };
} 
if (target == "notes")
{
    return new JsonResult { Data = new { RC = new Data.AdminNotes(datastoreValue).Refresh() } };
}
if (target == "book")
{
    return new JsonResult { Data = new { RC = new Data.AdminBook(datastoreValue).Refresh() } };
}
return null;

我唯一要做的就是将
if
s更改为
if-elseif
链。要提高性能,您真的无法做任何其他事情。

我唯一要做的就是将
if
s更改为
if elseif
链。实际上,您无法做任何其他事情来提高性能。

如果您知道将更频繁地使用
“book”
值调用您的方法,那么您应该将其放在首位。基本上按频率顺序排序。

如果您知道您的方法将更经常地使用
“book”
值调用,那么您应该将其放在第一位。基本上按频率顺序排序。

开关语句适用于以下情况:

switch(target)
{
case "power":
  return new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } };
case "notes":
  return new JsonResult { Data = new { RC = new Data.AdminNotes(datastoreValue).Refresh() } };
case "book":
  return new JsonResult { Data = new { RC = new Data.AdminBook(datastoreValue).Refresh() } };
default:
  return null;
}

实际上不需要中断tho,因为它每次都会返回,但这是一种很好的做法。

switch语句非常适合以下情况:

switch(target)
{
case "power":
  return new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } };
case "notes":
  return new JsonResult { Data = new { RC = new Data.AdminNotes(datastoreValue).Refresh() } };
case "book":
  return new JsonResult { Data = new { RC = new Data.AdminBook(datastoreValue).Refresh() } };
default:
  return null;
}

我真的不需要休息,因为它每次都会回来,但这是一个很好的做法。

我不知道你对优化的看法是什么, 就速度而言,只需在第二个和第三个“如果”之前加上一些“其他” 但是,如果您的意思是代码行更少,那么下面的内容可能会对您有所帮助:

return 
((target == "power") ? new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } } :
((target == "notes") ? new JsonResult { Data = new { RC = new Data.AdminNotes(datastoreValue).Refresh() } } : 
((target == "book") ? new JsonResult { Data = new { RC = new Data.AdminBook(datastoreValue).Refresh() } } : null))))

我不知道你对优化有什么想法, 就速度而言,只需在第二个和第三个“如果”之前加上一些“其他” 但是,如果您的意思是代码行更少,那么下面的内容可能会对您有所帮助:

return 
((target == "power") ? new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } } :
((target == "notes") ? new JsonResult { Data = new { RC = new Data.AdminNotes(datastoreValue).Refresh() } } : 
((target == "book") ? new JsonResult { Data = new { RC = new Data.AdminBook(datastoreValue).Refresh() } } : null))))

正如其他人所提到的,您应该将它们按最可能发生的顺序排列,以尽量减少错误比较的总数

也许可以将“power”、“notes”和“book”更改为enum或int表示形式,这可能比字符串比较快一些


不过,您所能做的并不是很多,这将导致任何重大优化。

正如其他人所提到的,您应该按最可能发生的顺序排列,以尽量减少错误比较的总数

也许可以将“power”、“notes”和“book”更改为enum或int表示形式,这可能比字符串比较快一些



不过,您所能做的并不是很多,这将导致任何重大的优化。

因为您觉得它已经足够好了,所以在大多数情况下,您可以继续前进。您在这里获得的任何性能肯定都是微不足道的?但如果你真的想改变什么,我同意使用switch。你能把你的目标变成枚举吗?然后可以使用
Target.Book
Target.Notes
,等等。然后比较枚举值,而不是文字字符串。但是,我看不到目标被分配到哪里,所以这可能不是一个选项。因为它对您来说已经足够好了,您可以在大多数情况下继续前进。您在这里获得的任何性能肯定都是微不足道的吗?但如果你真的想改变什么,我同意使用switch。你能把你的目标变成枚举吗?然后可以使用
Target.Book
Target.Notes
,等等。然后比较枚举值,而不是文字字符串。但是,我看不到将
target
分配到哪里,因此这可能不是一个选项。OP在if块中返回,因此
else if
不会有帮助。@code裸体:我没有说它会有帮助。最好告诉阅读代码的人条件是相互排斥的。OP在if块中返回,因此
else if
不会有帮助。@code裸体:我没说它会有帮助。最好与阅读代码的任何人沟通,条件是相互排斥的。请参阅@Nick,您将获得
无法访问的代码
关于
中断的警告我不认为中断是必要的。我说中断不是必要的,只是说在我看来这是一种良好的做法。OP可以删除,如果她想看到@Nick,你将得到
中断的
无法访问的代码
警告我不认为中断是必要的。我说中断不是必要的,只是说在我看来这是很好的做法。OP可以删除,如果她想的话。如果我看到我必须维护的代码中的那行代码,我的眼睛会翻到我的头上,我可能会咕哝一些关于程序员来源的非常不有趣的事情。优化很好,但不会导致可读性消失……在优化过程中,删除所有空格和换行符:)。没有什么比早上读一条多行三元语句更能唤醒你了。如果我看到我必须维护的代码中的那一行,我的眼睛会翻到我的脑袋里,我可能会咕哝一些关于程序员起源的非常不有趣的事情。优化很好,但不会导致可读性消失……在优化过程中,删除所有空格和换行符:)。没有什么比早上读多行三元语句更能唤醒你了。