Подтвердить что ты не робот

С# Анонимные типы не могут быть назначены - это только чтение

Что не так с этим фрагментом кода?

class Program
{
    static void Main(string[] args)
    {
        var obj = new { Name = "A", Price = 3.003 };

        obj.Name = "asdasd";
        obj.Price = 11.00;

        Console.WriteLine("Name = {0}\nPrice = {1}", obj.Name, obj.Price);

        Console.ReadLine();
    }
}

Я получаю следующие ошибки:

Error   5   Property or indexer 'AnonymousType#1.Name' cannot be assigned to -- it is read only .....\CS_30_features.AnonymousTypes\Program.cs  65  13  CS_30_features.AnonymousTypes
Error   6   Property or indexer 'AnonymousType#1.Price' cannot be assigned to -- it is read only    .....\CS_30_features.AnonymousTypes\Program.cs  66  13  CS_30_features.AnonymousTypes

Как переопределить значения в объект анонимного типа?

4b9b3361

Ответ 1

Анонимные типы в С# неизменяемы и, следовательно, не имеют методов настройки свойств. Вам нужно будет создать новый анонимный тип со значениями

obj = new { Name = "asdasd", Price = 11.00 };

Ответ 2

Анонимные типы создаются с свойствами только для чтения. Вы не можете назначить их после построения объекта.

От Анонимные типы (Руководство по программированию на С#) в MSDN:

Анонимные типы предоставляют удобный способ инкапсулировать набор свойств только для чтения в один объект без необходимости явно определять тип.

Ответ 3

Анонимные типы предоставляют удобный способ инкапсулировать набор свойства только для чтения в один объект, не имея явно определить тип. Тип имя генерируется компилятором и недоступен в исходном коде уровень. Тип свойств выведенный компилятором. в следующем примере показан анонимный тип инициализируется двумя свойства, называемые Amount и Message.

http://msdn.microsoft.com/en-us/library/bb397696.aspx