2011-05-04 70 views
5

Tôi có một số giao diện và lớp thực hiện giao diện:C# Làm thế nào để đặt giá trị mặc định cho các thuộc tính tự động?

public interface IWhatever { 
    bool Value { get; set;} 
} 

public class Whatever : IWhatever { 
    public bool Value { get; set; } 
} 

Bây giờ, không C# phép Value có một số giá trị mặc định mà không cần sử dụng một số lĩnh vực sao lưu?

+1

Bạn có nghĩa là bạn có thể chỉ định mặc định, ví dụ: trong ví dụ này cho phép Giá trị mặc định là True? Ví dụ: – tomasmcguinness

Trả lời

13

Cập nhật

Tính đến C# 6 (VS2015) cú pháp này là hoàn toàn hợp lệ

public bool Value { get; set; } = true; 

như là thiết lập giá trị cho thuộc tính readonly

public bool Value { get; } = true; 

Các cũ, trước C# 6 câu trả lời

Spoiler cảnh báo đối với những người có tính chất kích động: Đoạn mã dưới đây sẽ không làm việc

Bạn đang hỏi, "Tôi có thể làm điều này?"

public bool Value { get; set; } = true; 

Không, bạn không thể. Bạn cần đặt giá trị mặc định trong hàm tạo của lớp

+3

Khi tôi lần đầu tiên nhìn thấy mẫu mã tôi nghĩ "Không có cách nào!Bạn có thể làm điều đó? " –

+2

Thật tuyệt vời nếu điều này thực sự hiệu quả: 3 –

+3

Bỏ phiếu của tôi cho tính năng rất hiệu quả đó! –

2

Nếu không có gì phía sau, giá trị mặc định là false, theo tài liệu.

Tuy nhiên, nếu bạn muốn nó được khởi tạo với giá trị ban đầu khác hơnfalse, bạn có thể làm điều đó theo cách này:

public interface IWhatever 
{ 
    bool Value { get; set;} 
} 

public class Whatever : IWhatever 
{ 
    public bool Value { get; set; } 

    public Whatever() 
    { 
     Value = true; 
    } 
} 
+0

Ví dụ: tôi muốn đặt thành 'true'. –

+0

@Yippie Không, C# không cho phép bạn làm điều đó. Nếu bạn muốn nó có một giá trị ban đầu mà không có một trường sao lưu, bạn cần phải đặt nó trong hàm tạo. –

0

Theo mặc định Value sẽ false nhưng nó có thể được khởi tạo trong constructor.

0

Bạn không thể đặt Value thành bất kỳ giá trị mặc định nào khác ngoài giá trị mặc định của chính kiểu dữ liệu đó tại thuộc tính. Bạn cần gán giá trị mặc định trong hàm tạo của Whatever.

1

Giá trị mặc định ngay bây giờ là false. Để làm cho nó true, hãy đặt nó trong hàm tạo.

public class Whatever : IWhatever 
{ 
    public bool Value { get; set; } 
    public Whatever() 
    { 
     this.Value = true; 
    } 
} 
0

Bạn có thể đặt giá trị mặc định trong hàm tạo.

//constructor 
public Whatever() 
{ 
    Value = true; 
} 

public bool Value { get; set; } 

Bằng cách này - với tính chất tự động, bạn vẫn có một lĩnh vực sao lưu, nó chỉ được tạo ra cho bạn bởi trình biên dịch (syntactic sugar).

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