C#アプリケーションのプロファイリングを行っていますが、次のシナリオが発生しました。誰かがその振る舞いを説明できれば幸いです。
私は次の元のC#コードを持っています:
public class Person
{
public string firstName;
public string lastName;
}
class Program
{
static void Main(string[] args)
{
List<Person> people = new List<Person>();
people.Add(new Person{firstName = "John", lastName = "Smith"});
people.Add(new Person{firstName = "Jim", lastName = "Johnson"});
people.Add(new Person{firstName = "Sue", lastName = "Rabon"});
foreach (Person p in people)
Console.WriteLine(p.firstName + " " + p.lastName);
}
}
C#パフォーマンスプロファイラーは、上記のコードを次のように表示しています。
public class Person
{
public string firstName;
public string lastName;
}
class Program
{
static void Main(string[] args)
{
List<Person> people = new List<Person>();
people.Add(new Person{firstName = "John", lastName = "Smith"});
people.Add(new Person{firstName = "Jim", lastName = "Johnson"});
people.Add(new Person{firstName = "Sue", lastName = "Rabon"});
foreach (Person p in people)
foreach (Person p in people)
foreach (Person p in people)
foreach (Person p in people)
foreach (Person p in people)
Console.WriteLine(p.firstName + " " + p.lastName);
}
}
foreachループが繰り返されます。なぜこうなった?コード逆コンパイラーを使用すると、元のソースコードに似ています。