2009-10-11 1 views
35

이 코드 조각은 무엇이 잘못 되었습니까?C# 익명 형식을 할당 할 수 없습니다 - 읽기 전용입니다

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 

하는 방법을 다시 설정 값을?

답변

48

익명 유형 속성 설정 메소드가없는 따라서 불변이다. 당신은

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

한 가지 더주의 할 값을 갖는 새 anonmyous 유형을 만들어야합니다,라는 새 익명 형식은 동일 될 것 같은 순서로 동일한 속성 수와 유형이있는 경우 내부 유형이 처음으로 –

+0

이것은 매우 유용 할 수 있습니다. 추가해 주셔서 감사합니다! +1 –

16

익명 형식은 읽기 전용 속성으로 만들어집니다. 개체를 생성 한 후에는 할당 할 수 없습니다.

Anonymous Types (C# Programming Guide)에서 MSDN에

:

익명 유형은 먼저 명시 적으로 유형을 정의 할 필요없이 하나의 객체로 읽기 전용 속성의 집합을 캡슐화하는 편리한 방법을 제공합니다.

7

익명 유형의 명시 적 유형을 정의 제 할 필요없이 하나의 개체로 읽기 전용 속성 세트를 캡슐화하는 편리한 방법을 제공한다. 유형 은 컴파일러에서 생성되며 은 소스 코드 레벨에서 사용할 수 없습니다. 속성의 유형은 컴파일러에서 유추 한 입니다. 다음 예제에서는 익명 유형이 Amount 및 Message라는 두 개의 속성으로 초기화되는 것을 보여줍니다. C에서 #

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