9

誰でもVBで私を説明できますか?別のフォームからアクセスできるように、Public Shared Subを使用する必要があります。

しかし、この「パブリック」と「共有」は何を意味するのでしょうか?

  • 誰がパブリックですか?
  • 誰と共有しますか?

公開共有されている場合、他のソフトウェアまたは「ハッカーアプリ」がこのサブとその値に簡単にアクセスできることを意味しますか?

4

2 に答える 2

9

VB.NET では、C#Sharedと同等ですstatic。つまり、メンバーはクラスのインスタンスではなく、クラスに属しています。このメンバーはすべてのインスタンスで「共有」されていると思われるかもしれませんが、これは技術的には正しくありません。VB.NET はSharedインスタンスの呼び出しによってメンバーを解決しますが。

public class1
    public shared something as string
    public somethingelse as string
end class

次のコードは、VB.Net でこれらにアクセスする方法を示しています。

...
class1.something = "something" 'belongs to the class, no instance needed

dim x as new class1() with {.somethingelse = "something else"}

Console.WriteLine(x.somethingelse) 'prints "something else"

Console.Writeline(class1.something) 'prints "something" <- this is the correct way to access it

Console.Writeline(x.something) 'prints "something" but this is not recommended!
...

Publicすべてのリンク アセンブリがこのメンバーを参照および使用できることを意味します。

于 2012-10-20T19:05:02.707 に答える
4

アクセサー キーワードはPublic、メソッド、プロパティなどが可視であり、それを定義した DLL またはアセンブリの外部から呼び出し可能であることを意味します。

キーワードはShared、メソッドなどが「インスタンス化」されていないことを意味します。つまり、これはクラス定義のみの一部であり、そのクラス定義から作成 (「インスタンス化」) されたオブジェクトの一部ではありません。これには、主に次の 2 つの効果があります。

  1. Shared メソッドは、実際にそのクラスのオブジェクト/インスタンスを持たなくても、いつでも呼び出すことができます。と、
  2. 共有メソッドは、クラス定義の非共有部分にはアクセスできません (オブジェクト インスタンスが渡されない限り)。クラス定義の他の共有部分にのみ直接アクセスできます。
于 2012-10-20T19:05:51.943 に答える