2012-01-26 32 views
7

I Like NET tính tự động, trong C# nó dễ dàng như vậy để khai báo readonly bất động sản bằng cách tuyên bố phần set của nó như private như thế này:ReadOnly Tài sản hoặc tài sản với bộ tư nhân tôi nên sử dụng trong vb.net?

public String Name{ get; private set; } 

Nhưng khi tôi cố gắng rằng trong VB.NET Tôi đã bị sốc rằng nó là không được hỗ trợ như đã đề cập here và tôi phải viết nó như sau:

Private _Name as String 
Public ReadOnly Property Name as String 
    Get 
     return _Name 
    End Get 
End Property 

Hoặc:

Private _Name as String 
Public Property Name as String 
    Get 
     return _Name 
    End Get 
    Private Set(value as String) 
     _Name = value 
    End Set 
End Property 

Sự khác biệt giữa các khai báo này trong VB.NET, cái nào được ưu tiên và Tại sao?

Sửa

Mà một trong những sẽ ảnh hưởng đến thời gian biên dịch, thời gian chạy hoặc thực hiện ở tất cả?

Trả lời

6

Trong trường hợp ReadOnly, chỉ những người có quyền truy cập vào biến cơ bản mới có thể thay đổi giá trị cơ bản (ví dụ: các phần tử trong cùng một lớp) bằng cách áp dụng trực tiếp thay đổi đó. Trong trường hợp thứ hai, Private Set - điều này giống nhau - các yếu tố trong phạm vi của lớp có thể thay đổi giá trị cơ bản, nhưng có thể làm như vậy bằng phương tiện của thuộc tính.

Ưu tiên của tài sản là: một lợi thế của các thuộc tính là bạn có thể thực hiện thêm khi áp dụng thay đổi (mặc dù cần tránh tác dụng phụ, bạn có thể 'xác thực' và ngoại lệ, ví dụ). Nếu có luôn luôn một số việc khác cần thực hiện khi đặt giá trị, có liên quan chặt chẽ đến việc đặt giá trị, bạn có thể thực hiện trong cài đặt thuộc tính này, trái ngược với việc thực thi mã ở mọi nơi bạn thực hiện set.

1

khối đầu tiên sẽ chỉ cho phép bạn lấy giá trị của Tên. bạn không thể đặt Tên.

khối thứ hai cho phép bạn đặt giá trị của Tên từ trong lớp. ví dụ:

Me.Name = "new value" 

Tôi sẽ chọn tùy chọn 1 vì tùy chọn thứ hai tiết mà không cung cấp bất kỳ giá trị thực nào.

0

Khai báo thuộc tính đầu tiên ReadOnly làm cho nó trở nên không thể sửa đổi bất động sản. Thứ hai Private Set cho phép tài sản được sửa đổi trong lớp bạn đang làm việc trong Me.Name = "str".

Trong cả hai trường hợp, giá trị cơ bản vẫn có thể được thay đổi trong lớp bằng cách sử dụng _Name = "str".