2017-07-19 3 views
-2

タイトルによれば、yieldを使って次のコードを最適化することは可能ですか?yieldを使用して次のコードを最適化することは可能であり、価値があるのですか?そうなら、

public static void LoadSettings(string fileName) 
{ 
    try 
    { 
     var xml = new XmlDocument(); 
     xml.Load(fileName); 
     var userNodes = xml.SelectNodes("/settings"); 

     foreach (XmlNode node in userNodes) 
     { 
      globals.username = node.SelectSingleNode("username").InnerText; 
      globals.password = node.SelectSingleNode("password").InnerText; 
      globals.rank = node.SelectSingleNode("rank").InnerText; 
     } 
    } 
    catch 
    { 
     Console.WriteLine("Oops, something is wrong."); 
    } 
} 

編集:回答ありがとうございました!

+0

なし - >最初のテストプロジェクトのテスト歩留まりがIドンので、それが何を参照するにはあなたが理解していると思います – EpicKip

+0

私は完全に質問を理解していません。ここで「利回り」をどのように使うべきか、あなたが念頭に置いていることの例を挙げることができますか?あなたは何も返しません..... –

+0

あなたはできませんし、コードは大丈夫です、最適化が必要ない –

答えて

3

いいえ、できません。 yield returnは、実際に何かを返すメソッドに対してのみ実装できます。戻り値がないので、答えは「いいえ」です。

ない

例として、これはyield returnのアプリケーションかもしれないが、それはあなたの方法の意味を変更します

public static IEnumerable<Setting> LoadSettings(string fileName) 
{ 
    try 
    { 
     var xml = new XmlDocument(); 
     xml.Load(fileName); 
     var userNodes = xml.SelectNodes("/settings"); 

     foreach (XmlNode node in userNodes) 
     { 
      Setting globals = new Setting(); 
      globals.username = node.SelectSingleNode("username").InnerText; 
      globals.password = node.SelectSingleNode("password").InnerText; 
      globals.rank = node.SelectSingleNode("rank").InnerText; 

      yield return globals; 
     } 
    } 
    catch 
    { 
     Console.WriteLine("Oops, something is wrong."); 
    } 
} 
関連する問題