2014-09-11 3 views
5

아주 자주 불변의 작은 데이터 구조가 필요합니다. 다른 사람들은 아마도 이런 경우에 Tuples를 사용하게 될 것이지만, Tuples이 잘 읽지 않으며 그 많은 의미를 표현하지 않는다는 것에 정말로 싫어합니다. Value2int 인 경우 아무 것도 말해주지 않습니다.C에서 불변의 struct를 작성하는 가장 짧은 방법 #

예를 들어 NameRating과 같은 두 속성의 조합에 대한 검색 표 (사전)가 생성됩니다. 내가 좋아하는 것을 여기에서'구문 지방'이 많이 남아 있습니다 제 생각에는

public struct Key 
{ 
    public string Name { get; private set; } 
    public int  Rating { get; private set; } 

    public LolCat(string name, int rating) : this() 
    { 
     Name = name; 
     Rating = rating; 
    } 
} 

// useage 
var key = new Key("MonorailCat", 5); 

:

내가 아는 이러한 경우에 대한 불변의 구조체를 만들기 위해 가장 짧은 방법은 이것이다 제거하기 위해. 필드를 직접 노출 할 때 훨씬 더 읽기 쉽도록 만들 수 있습니다.

public struct Key 
{ 
    public string Name; 
    public int  Rating; 
} 

// useage 
var key = new Key { Name = "MonorailCat", Rating = 5 }; 

구문 상 지방이 거의 없기 때문에 나는이 구문을 정말 좋아합니다. 큰 단점은 물론 모든 것이 위험하므로 불변하지 않다는 것입니다. 이상적인 경우

내가처럼, 정의의 실제 최소한으로, 이것에 대한 특별한 유형을 가지고 싶다 :

public immutable struct Key 
{ 
    string Name; 
    int  Rating; 
} 

// useage (needs compiler magic) 
var key = new Key(Name: "MonorailCat", Rating: 5); 

질문

현실 세계의 솔루션이 있습니까 아주 간단한 불변 구조체에 대한 구문 지방의 양을 줄이기 위해 바닥에있는 예제에 더 가까운 것이 있습니까?

+0

이 경우 클래스를 사용하지 않는 이유는 무엇입니까? – Kao

+0

왜 속성을'readonly' 필드로 노출하지 않습니까? 당신은 적어도'{get; 개인 집합;}'(그리고 당신은 여전히 ​​생성자가 필요할 것입니다). – casperOne

답변

관련 문제