2011-01-28 16 views
48

Tôi muốn làm điều này:C# thuộc tính: làm thế nào để sử dụng tùy chỉnh thiết lập tài sản mà không có trường tư nhân?

public Name 
{ 
    get; 
    set 
    { 
     dosomething(); 
     ??? = value 
    } 
} 

Có thể sử dụng trường tin tự động tạo ra?
Hoặc là nó đòi hỏi mà tôi thực hiện nó theo cách này:

private string name; 
public string Name 
{ 
    get 
    { 
     return name; 
    } 
    set 
    { 
     dosomething(); 
     name = value 
    } 
} 
+1

Có rất nhiều cuộc thảo luận tốt về vấn đề này tại SO câu hỏi này: http://stackoverflow.com/questions/1277018/c-3-0-automatic- thuộc tính-cái gì-sẽ-được-tên-của-riêng-biến-tạo –

Trả lời

60

Sau khi bạn muốn thực hiện bất kỳ tùy chỉnh nào trong bộ khởi động hoặc bộ chuyển đổi, bạn không thể sử dụng các thuộc tính tự động nữa.

13

này là không thể. Một trong hai thuộc tính được tự động triển khai hoặc mã tùy chỉnh.

3

Bạn bắt buộc phải triển khai hoàn toàn kịch bản của mình. Cả hai getset phải được triển khai tự động hoặc được triển khai đầy đủ cùng nhau, không phải kết hợp cả hai.

14

Bạn có thể thử một cái gì đó như thế này:

public string Name { get; private set; } 
public void SetName(string value) 
{ 
    DoSomething(); 
    this.Name = value; 
} 
+4

+1 Để tâm trí của tôi câu trả lời này khiển trách câu trả lời được chấp nhận. Nó đang sử dụng các thuộc tính tự động. Nó rõ ràng đặt setter thành private. Đây là một điều tốt vì nó cho phép người dùng cuối hoặc nhà phát triển biết có nhiều khả năng xảy ra đằng sau phương thức setter. – ooXei1sh

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