Aracılığıyla paylaş


Shared (Visual Basic)

Bir veya daha fazla bildirilen programlama öğelerine bir sınıf veya yapı büyük olan ve olmayan belirli bir sınıf veya yapı örneği ile ilişkili olduğunu belirtir.

Notlar

Paylaşılan ne zaman kullanılır?

Bir sınıf veya yapı üyesi paylaşımı sayesinde her örneği için kullanılabilir yerine paylaşılmayan, burada her örneği kendi kopyasını tutar.Örneğin, bir değişken değeri için tüm uygulama uygulanıyorsa, bu yararlı olacaktır.Bu değişken olmasını bildirirseniz Shared, sonra hepsinin aynı depolama konumuna erişim ve bir örnek değişkenin değeri değişirse, güncelleştirilmiş değeri tüm örneklere erişmek.

Paylaşımı üye erişim düzeyini değiştirmez.Örneğin, bir sınıf üyesi paylaşılan ve özel (sınıf içinde erişilebilir yalnızca), veya paylaşılmayan hem de ortak.Daha fazla bilgi için bkz. Visual Basic'de Erişim Düzeyleri.

Kurallar

  • Bildiriminin içeriği. Kullanabileceğiniz Shared modül düzeyinde.Bu bildirimi bağlamının anlamına gelir bir Shared öğesi bir sınıf veya yapı olmalı ve kaynak dosya, ad veya yordamı olamaz.

  • Birleşik değiştirici. Belirttiğiniz olamaz Shared ile birlikte Geçersiz Kılmalar (Visual Basic), Geçersiz Kılınabilir (Visual Basic), NotOverridable (Visual Basic), MustOverride (Visual Basic), veya Statik (Visual Basic) aynı bildiriminde.

  • Erişme. Paylaşılan öğe niteleme sınıf veya yapı adıyla birlikte, belirli bir sınıf ya da yapı örneği değişken adı ile değil tarafından erişim.Hatta bir sınıf veya yapı paylaşılan üylerine erişmek için bir kopyasını oluşturmak zorunda değildir.

    Aşağıdaki örnek, paylaşılan yordamı çağırır IsNaN tarafından sergilenen Double yapısı.

    If Double.IsNaN(result) Then MsgBox("Result is mathematically undefined.")

  • Örtülü paylaşımı. Kullanamazsınız Shared , değiştirici bir Const Deyimi (Visual Basic), ancak sabitleri örtülü olarak paylaşılan.Benzer şekilde olması için bir modül veya arabirim üyesi bildiremezsiniz Shared, ancak dolaylı olarak paylaşılır.

Davranış

  • Depolama alanı. Paylaşılan bir değişken veya olay bellek yalnızca bir kez, kaç veya birkaç örneği oluşturduğunuz sınıf ya da yapı ne olursa olsun depolanır.Benzer şekilde, bir paylaşılan yordam veya özellik yalnızca tek bir yerel değişkenleri kümesi tutar.

  • Bir örnek değişkenini erişme. Belirli bir sınıf ya da yapı örneğini içeren değişken adını nitelemek tarafından paylaşılan bir öğesine erişmek mümkündür.Bu genellikle beklendiği gibi çalışmasına rağmen Derleyici uyarı iletisi oluşturur ve sınıf veya yapı adı değişkeni yerine üzerinden erişim sağlar.

  • Örnek ifade aracılığıyla erişme. Sınıf ya da yapı örneğini döndüren deyim paylaşılan bir öğesine erişmek, derleyici ifadenin değeri hesaplanırken yerine sınıf veya yapı adı üzerinden erişim sağlar.Diğer eylemler aynı zamanda örnek döndürerek gerçekleştirmek için ifade amacı, bu beklenmeyen sonuçlar verebilir.Aşağıdaki örnek bunu göstermektedir.

    Sub main()
        shareTotal.total = 10
        ' The preceding line is the preferred way to access total.
        Dim instanceVar As New shareTotal
        instanceVar.total += 100
        ' The preceding line generates a compiler warning message and
        ' accesses total through class shareTotal instead of through
        ' the variable instanceVar. This works as expected and adds
        ' 100 to total.
        returnClass().total += 1000
        ' The preceding line generates a compiler warning message and
        ' accesses total through class shareTotal instead of calling
        ' returnClass(). This adds 1000 to total but does not work as
        ' expected, because the MsgBox in returnClass() does not run.
        MsgBox("Value of total is " & CStr(shareTotal.total))
    End Sub
    Public Function returnClass() As shareTotal
        MsgBox("Function returnClass() called")
        Return New shareTotal
    End Function
    Public Class shareTotal
        Public Shared total As Integer
    End Class
    

    Yukarıdaki örnekte, derleyici uyarı iletisi kod paylaşılan değişken erişen her iki kez oluşturur total örneği üzerinden.Her durumda, doğrudan sınıf üzerinden erişim sağlar shareTotal ve yapmak değil herhangi bir örneğini kullanın.Hedeflenen yordam çağrısına olması durumunda, returnClass, yani onu bile oluşturmaz çağrısı returnClass, böylece "işlev returnClass() olarak adlandırılan" görüntüleyen başka bir işlem yapılmaz.

Shared Değiştirici bu içerikte kullanılabilir:

Dim deyimi

Olay açıklaması

İşlev deyimi

İşleci ifadesi

Özellik deyimi

Sub deyimi

Ayrıca bkz.

Başvuru

Shadows (Visual Basic)

Statik (Visual Basic)

Kavramlar

Visual Basic'de Ömür

Visual Basic'de Yordamlar

Diğer Kaynaklar

Yapılar (Visual Basic)

Visual Basic'de Nesneler ve Sınıflar