c # вопрос анонимного типа - PullRequest
4 голосов
/ 28 июля 2011

В следующем коде почему переменные c2 и c3 имеют другой анонимный тип?

Заранее спасибо за любые советы и ... ура!

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            var c1 = new Customer { Name = "Mark", Country = "USA" };

            var c2 = new { c1.Name, c1.Country };   //"<>f__AnonymousType0`2"
            var c3 = new { c1.Country, c1.Name };   //"<>f__AnonymousType1`2"
        }
    }

    public class Customer
    {
        public string Name { get; set; }
        public string Country { get; set; }
    }
}

1 Ответ

10 голосов
/ 28 июля 2011

Потому что вы инициализировали их свойства в разных порядках.

Они будут скомпилированы в один и тот же анонимный тип, если вы инициализируете их в том же порядке. Из документов MSDN на анонимные типы :

Если два или более анонимных типа в одной сборке имеют одинаковое количество и тип свойств в одном и том же порядке, компилятор обрабатывает их как один и тот же тип.

...