1

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ループが繰り返されます。なぜこうなった?コード逆コンパイラーを使用すると、元のソースコードに似ています。

4

0 に答える 0