2009-03-05 67 views

Trả lời

23

Nó giống như static trong C# và hầu hết các ngôn ngữ khác. Nó có nghĩa là mọi đối tượng trong lớp đều sử dụng cùng một bản sao của biến, thuộc tính hoặc phương thức. Khi được sử dụng với một phương thức vì nó là tĩnh, bạn không cần một cá thể đối tượng.

MyClass.DoSomething() 

hơn

Dim oObject as New MyClass() 
oObject.DoSomething() 
+5

Người hỏi specificaly hỏi về biến chia sẻ, chứ không phải phương pháp chia sẻ. –

+10

Thay thế cục bộ DoSomething() bằng Thứ gì đó để làm cho bài đăng áp dụng cho các biến thay vì phương pháp. – OregonGhost

5

Đơn giản chỉ cần bất cứ khi nào bạn muốn có trường hợp duy nhất của biến cho toàn bộ ứng dụng, chia sẻ giữa các đối tượng của lớp học của bạn. Thay vì 1 lần cho mỗi đối tượng.

26

Từ khóa "Được chia sẻ" trong VB.NET tương đương với từ khóa "tĩnh" trong C#.

Trong VB.NET, từ khóa được chia sẻ có thể được áp dụng cho các câu lệnh Dim, Event, Function, Operator, Property và Sub trong một lớp; tuy nhiên, trong C#, từ khóa static có thể được áp dụng cho cả hai câu lệnh này trong một lớp bình thường, và cũng ở cấp lớp để làm cho toàn bộ lớp tĩnh.

Phương thức "Được chia sẻ" hoặc "tĩnh" hoạt động theo "loại" (nghĩa là, lớp) thay vì hành động theo dạng thể hiện của loại/lớp học. Vì Shared các phương thức (hoặc biến) hành động theo kiểu chứ không phải là một cá thể, chỉ có thể là một "bản sao" của biến hoặc phương thức trái ngược với nhiều bản sao (một cho mỗi cá thể) trong trường hợp không được chia sẻ (ví dụ: , ví dụ) các phương thức hoặc biến.

Ví dụ: Nếu bạn có một lớp, hãy gọi nó là MyClass với một phương thức không được chia sẻ duy nhất có tên là MyMethod.

Public Class MyClass 
    Public Sub MyMethod() 
     // Do something in the method 
    End Sub 
End Class 

Để gọi phương thức đó, bạn cần một phiên bản của lớp để gọi phương thức. Một cái gì đó như:

Dim myvar as MyClass = New MyClass() 
myvar.MyMethod() 

Nếu phương pháp này sau đó đã được chuyển thể thành một phương pháp "chia sẻ" (bằng cách thêm "chia sẻ" vòng loại vào định nghĩa phương pháp, bạn không còn cần một thể hiện của lớp để gọi phương thức

.
Public Class MyClass 
    Public Shared Sub MyMethod() 
     // Do something in the method 
    End Sub 
End Class 

Và sau đó:..

MyClass.MyMethod() 

Bạn cũng có thể xem các ví dụ về điều này trong .NET framework Ví dụ, "chuỗi" loại có nhiều phương pháp tĩnh/chia sẻ Ie

// Using an instance method (i.e. Non-shared) of the string type/class. 
Dim s as String = "hello" 
s.Replace("h", "j") 

// Using a static/shared method of the string type/class. 
s = String.Concat(s, " there!"); 

Dưới đây là một bài viết tốt mà giải thích nó hơn nữa:

Shared Members and Instance Members in VB.NET

+2

Tương đương gần đúng của một lớp tĩnh (Shared) trong VB là một Module. – Antony

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