Tôi đang theo học lớp C # và tôi đang cố gắng tìm ra cách tốt nhất để làm việc này. Tôi xuất thân từ nền tảng Java nên tôi chỉ quen thuộc với các phương pháp hay nhất về Java; Tôi là người mới học C #!
Trong Java nếu tôi có tài sản riêng, tôi làm điều này;
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
Trong C #, tôi thấy rằng có nhiều cách để làm điều này.
Tôi có thể làm điều đó như Java:
private string name;
public void setName(string name) {
this.name = name;
}
public string getName() {
return this.name;
}
Hoặc tôi có thể làm theo cách này:
private string name;
public string Name {
get { return name; }
set { name = value; }
}
Hoặc là:
public string Name { get; set; }
Tôi nên sử dụng cái nào, và những lưu ý hoặc sự khôn khéo liên quan đến mỗi cách tiếp cận là gì? Khi tạo các lớp, tôi đang tuân theo các phương pháp hay nhất chung mà tôi biết từ Java (đặc biệt là đọc Java hiệu quả). Vì vậy, ví dụ, tôi thích tính bất biến (chỉ cung cấp bộ định tuyến khi cần thiết). Tôi chỉ tò mò muốn biết những cách thực hành này phù hợp với những cách khác nhau để cung cấp bộ định tuyến và bộ định tuyến trong C #; về cơ bản, tôi sẽ dịch các phương pháp hay nhất từ thế giới Java sang C # như thế nào?
BIÊN TẬP
Tôi đã đăng điều này như một bình luận cho câu trả lời của Jon Skeet nhưng sau đó nó rất lâu:
Điều gì về một thuộc tính không tầm thường (nghĩa là có thể có quá trình xử lý và xác thực quan trọng)? Tôi vẫn có thể hiển thị nó thông qua thuộc tính công cộng nhưng với logic được gói gọn trong get
và set
? Tại sao tôi nên / nên làm điều này vì có các phương thức setter và getter chuyên dụng (với logic xử lý và xác nhận liên quan).