2011-01-20 20 views
5

Chúng ta có thể chỉ định các công cụ sửa đổi truy cập cho các bộ tiếp cận nhận và đặt thuộc tính trong C# /. NET không?Có thể chỉ định các công cụ sửa đổi truy cập riêng biệt cho các bộ tiếp nhận nhận và đặt của thuộc tính không?

Nếu vậy, cách tiếp cận tốt nhất để thực hiện điều này là gì?

+3

Bạn đã xem tài liệu/tài nguyên nào? –

+0

Có, nhưng bạn không thể truy cập dễ dàng hơn so với công cụ sửa đổi được cung cấp cho chính thuộc tính và thuộc tính phải có cả tính năng nhận và đặt. –

+1

* triển khai nút này *? Vui lòng đăng phần còn lại của bài tập của bạn. –

Trả lời

11

Vâng, đây là có thể. Nó được gọi là Khả năng truy cập không đối xứng, và bạn có thể đọc tài liệu MSDN cho nó on this page. Mã này sẽ giống như thế này:

public int Age 
{ 
    get 
    { 
     return _age; 
    } 
    protected set 
    { 
     _age = value; 
    } 
} 

Tuy nhiên, có một số khó khăn quan trọng cần lưu ý:

  • Chỉ có một accessor có thể được sửa đổi.
  • Bất kỳ hạn chế nào được đặt trên một người truy cập riêng lẻ phải là nhiều hơn hạn chế hơn cấp truy cập của chính thuộc tính, không ít hơn.
  • Bạn không thể sử dụng công cụ sửa đổi truy cập trên giao diện hoặc triển khai rõ ràng thành viên giao diện.
+0

+ một cảnh báo khác, cả việc nhận và đặt phải được chỉ định để khai báo một công cụ sửa đổi khác nhau khi nhận hoặc thiết lập. –

+0

@Adam: À, điều đó rất hợp lý ... Tại sao bạn lại cần phải khai báo một * biến tố * khác về thứ gì đó nếu bạn chỉ có một trong những thứ đó ngay từ đầu? –

+0

chính xác, nhưng dựa trên các loại câu trả lời được đưa ra cho OP, tôi đã thêm là làm rõ rõ ràng. –

1

http://msdn.microsoft.com/en-us/library/ms173121.aspx hiển thị các công cụ sửa đổi có thể có. Nếu bạn muốn có các công cụ sửa đổi khác nhau, hãy viết:

[Modifier] [DataType] ProperyName{ 
    [Modifier] get{} 
    [Modifier] set{} 
} 

Tuy nhiên nếu bạn khai báo bộ sửa đổi bên trong, chúng phải nhỏ hơn hoặc bằng nhau so với bên ngoài.

3

Có bạn có thể ...

public class Example 
{ 
    public string Property 
    { 
     get; 
     private set; 
    } 

    public string Property2 
    { 
     get; 
     protected set; 
    } 
} 

vv

+0

-1: Chỉ có một accesssor có thể có modifier. Ngoài ra, nhận hoặc thiết lập không thể có công cụ sửa đổi truy cập "công khai". – Sandeep

+0

@Sandeep - Đã sửa đổi. bây giờ bạn có thể xóa -1 của mình. Đoạn mã trên xây dựng tốt – WraithNath

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