Về việc escapsulation trong visual studio khi code c#?

mình thấy visual hỗ trợ 2 kiểu escapsulation nhưng mình thường code cách 1, còn cách 2 mình ko thấy định nghĩa cái field private , vậy 2 cách khác nhau thế nào và cái nào là khuyên dùng, mọi người góp ý nhé :blush:

private double _width;
public double Width
{
     get { return _width; }
     set { _width = value; }
}
///hoặc là
public double Width { get; set; }

Cách nào là cách 1, cách nào là cách 2?

cách 1:

private double _width;
public double Width
{
     get { return _width; }
     set { _width = value; }
}

cách 2 gọn hơn:

public double Width { get; set; }

:blush:

Cách 2 là cách viết ngắn gọn cho cách 1 thôi :smile:

3 Likes

vậy nó tự mặc định định nghĩa private double _width; trong cách 2 luôn hả anh, em tưởng nó bỏ cái biến private đó

Yes, it is. Nhưng mà tên biến không có nghĩa là _width, nó không có tên :smile:

https://msdn.microsoft.com/en-us/library/bb384054.aspx

In C# 3.0 and later, auto-implemented properties make property-declaration more concise when no additional logic is required in the property accessors. They also enable client code to create objects. When you declare a property as shown in the following example, the compiler creates a private, anonymous backing field that can only be accessed through the property’s get and set accessors.

Ở đây ghi rõ là anonymous, tức là không có tên, mà tất cả giao tiếp qua get/set. Nếu muốn mở rộng/kiểm tra giá trị nhập/xuất thì mình dùng cách 1

2 Likes

cảm ơn anh nhiều :grinning:

1 Like

Mark accept solution đi :smiling_imp:

tức là gì anh, thông cảm cho em ko hiểu :anguished:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?