切换内部循环会影响性能?

Sco*_*lus 3 c# performance coding-style

我正处于循环数据并根据设置以特定方式对其进行格式化的情况,我担心我认为风格最佳可能会影响性能.

代码的基本模式如下

enum setting {single, multiple, foo, bar};
Data data = getData(Connection conn, int id);
setting blah = data.getSetting();
foreach (Item item in data)
{
   switch(blah)
   {
      case blah.single:
        processDataSingle(item blah);
        break;
      ...
   }
}
Run Code Online (Sandbox Code Playgroud)

我担心的是数据中可能有数千甚至数万项.我想知道是否在循环内部的开关可能会反复评估可能会导致一些严重的性能问题.我知道我可以把它放在switch循环之前,但是每个都case包含它,这似乎更不易读,因为基本功能保持不变是不太明显的.

Raw*_*ing 10

您可以设置一次委托/操作,然后每次在循环中调用它:

Data data = getData(Connection conn, int id);
setting blah = data.getSetting();
Action<Item> doThis;
switch (blah)
{
  case blah.single:
      doThis = i => processSingleData(i blah);
      break;
  ...
}
foreach (Item item in data)
{
    doThis(item);
}
Run Code Online (Sandbox Code Playgroud)

基本上,将每个"case"的主体放入一个Action,Action在你switch的循环外部选择,并Action在循环中调用.