2016-10-14 17 views
8

Có trường hợp nào bạn muốn một trường chỉ đọc công khai v.s. thuộc tính chỉ được tự động triển khai?Trường chỉ đọc công khai v.s. tài sản chỉ nhận được

public class Foo 
{ 
    public readonly string Hello; 

    public string Hello2 { get; } 
} 

Cả hai chỉ có thể được thiết lập trong các nhà xây dựng và cả hai cung cấp truy cập chỉ đọc bên ngoài của lớp .. Tôi là một chút mệt mỏi vì vậy tôi có thể thiếu một cái gì đó.

Trả lời

4

Một lý do sẽ là cho ràng buộc dữ liệu - .net thực hiện ràng buộc với thuộc tính nhưng không ràng buộc với các trường công khai.

Một số cuộc thảo luận ở đây: Why can't we use public fields for data binding in C#?

+0

Cảm ơn Paul, ví dụ điển hình. –

7

Làm cho nó một tài sản chứ không phải là một lĩnh vực có nghĩa là nó có thể được sử dụng trên giao diện.

Việc triển khai chính xác (mặc dù thuộc tính tự động không thực sự thực hiện nhiều ...) cũng được tóm tắt, vì vậy bạn có thể trong tương lai dựa trên sự kết hợp của các trường mà không có khả năng tương thích (biên dịch).

+0

Cảm ơn ví dụ tuyệt vời, tôi biết có điều gì đó hiển nhiên tôi đã bỏ lỡ ở đây. Bối cảnh tôi đã tự hỏi về là Startup.cs trong mẫu lõi asp.net mặc định, thú vị Startup không thực hiện một giao diện, nhưng có lẽ tài sản được sử dụng như một móc ở nơi khác. –

+1

Tôi thực sự muốn đánh dấu của bạn và của PaulF là câu trả lời, vì cả hai đều có ý nghĩa của mình là hơi sớm hơn, nhưng nếu tôi có thể tôi đánh dấu của bạn là tốt! –

Các vấn đề liên quan