2008-10-15 33 views
7

Làm thế nào tôi có thể thiết lập một giá trị mặc định cho một tài sản được xác định như sau:Làm cách nào để đặt giá trị mặc định bằng thuộc tính "kiểu ngắn" trong VS2008 (Thuộc tính tự động)?

public int MyProperty { get; set; } 

Đó là sử dụng "chống đỡ" [tab] [tab] trong VS2008 (đoạn mã).

Có thể mà không rơi trở lại trong "cách cũ" ?:

private int myProperty = 0; // default value 
public int MyProperty 
{ 
    get { return myProperty; } 
    set { myProperty = value; } 
} 

Cảm ơn thời gian của bạn. Trân trọng.

+0

Là một mặt lưu ý, bạn không cần phải thiết lập một tài sản giá trị mặc định bình thường của nó (như int i = 0). Điều đó xảy ra tự động khi lớp được khởi tạo. –

+0

tốt, tôi chọn int vì đây là điều đầu tiên xuất hiện trong đầu ... nhưng tôi muốn đặt giá trị mặc định thành thuộc tính của bất kỳ lớp nào (chuỗi, lớp tùy chỉnh, v.v.) –

Trả lời

9

Chỉ cần đặt giá trị "mặc định" trong hàm tạo của bạn.

public class Person 
{ 
    public Person() 
    { 
     this.FirstName = string.Empty; 
    } 

    public string FirstName { get; set; } 
} 

Ngoài ra, chúng được gọi là Thuộc tính tự động.

+0

FWIW, đặt giá trị mặc định là không hiệu quả nếu bạn xảy ra để thay đổi giá trị trong bất kỳ nhà thầu nào của bạn. Tại công ty tôi làm việc cho, chúng tôi thực sự coi nó là một "mã mùi" để có một giá trị mặc định bởi vì sau đó chúng tôi phải đi và xem nếu nó được ghi đè trong bất kỳ của các nhà thầu. –

+0

cảm ơn david, sẽ giữ cho rằng trong tâm trí –

2

Tùy chọn của tôi sẽ là làm những việc "theo cách cũ", chứ không phải là init trong hàm tạo. Nếu sau này bạn thêm một hàm tạo khác, bạn sẽ phải chắc chắn gọi hàm đầu tiên từ nó, hoặc các thuộc tính của bạn sẽ không được khởi tạo.

+1

Chắc chắn, nhưng gọi một trong những nhà thầu từ tất cả những người khác thường là những gì bạn nên làm anyway. Đó là một mô hình khá chuẩn: Các nhà xây dựng có ít tham số hơn chuyển các giá trị mặc định cho hàm tạo với hầu hết các tham số. –

0

[DefaultValue ("MyFirstName")] chuỗi công khai FirstName {get; bộ; }

+0

Không hoạt động, nhưng nó thực sự nên được thực hiện. – Simon

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