共有、非共有

タグの編集
投稿者 私一人  (その他) 投稿日時 2023/6/15 08:30:39
『clipboard』は共有メンバーと書いてありましたが、リファランスには『shared』が書かれていません。
『clipboard』が共有メンバーであるとはなんとなくわかるのですが、なぜ『shared』が書かれていないのですか。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2023/6/15 09:23:21
> 『clipboard』は共有メンバーと書いてありましたが
それはどこに書いてあったのでしょうか?


何の話か見えていないのですが、ここでいう 『clipboard』 というのが
.NET / .NET Framework の System.Windows.Forms 名前空間における
Clipboard クラスのことを指しているのであれば、すべての公開メンバーが
Shared なメソッドになっていますね。
https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.clipboard.getdata?view=netframework-3.5

あるいは System.Windows 名前空間の方の Clipboard クラスでも同じです。
https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.clipboard.getdata?view=netframework-3.5

ちなみに前者(WinForms 版)の Clipboard には Private な Sub New がありますが、
後者(WPF 版)の Clipboard には Sub New がないため、インスタンス化すらできません。


> なぜ『shared』が書かれていないのですか。
その疑問は、どの資料をみた際に生じたものでしょうか?

出典を示すこともなく、いきなり「書いてあった」「書かれていない」と
論じられても、第三者には伝わらないですよ…。
投稿者 私一人  (その他) 投稿日時 2023/6/15 12:28:11
申し訳ありません。
Visual Basic中学校の初級講座「改訂版」第6回6.に「Public Shared Function Sqrt (d as Double) as Double・・・のように記述されています。」と書いてあったので、第7回4.4-1.で見ていったときに「clipboard」についての画像が乗っていてそこには「Public NotInheritable Class Clipboard」と書かれていて「Shared」という単語がなかったのでわからなくなってしまいました。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2023/6/15 14:06:05
お使いの Visual Basic のバージョンは何ですか?


> リファランスには『shared』が書かれていません。
「リファランス」ではなく
「リファレンス」ですね。(Reference)


> Visual Basic中学校の初級講座「改訂版」第6回6.に
https://www.umayadia.com/VBStandard2/Standard06.htm#A6

そのページには
 『VB の Shared キーワードは、メンバー(メソッドやプロパティなど)に付与されます。』
と記載されていますよね。

Shared がクラス(や構造体)のメンバーに付与されると書かれていますが、
Shared がクラス(や構造体)に付与されるとは書かれていませんよ。


VB の Shared が、クラスそのものに付与されることはありません。
Shared はメソッド/プロパティ/イベント/フィールド変数に付与されます。


ちなみに:
C# の static は VB.NET の Shared に相当するキーワードなのですが、
C# の static はメソッドだけでなくクラスにも付与されることがあります。
C# の static class は、VB の Module に相当します(完全に同じというわけでは無いですが)。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2023/6/15 14:16:54
同ページには、
 『表示メニューから起動できるオブジェクトブラウザーというツールで確認する方法もあります。』
という記述もありますね。
https://www.umayadia.com/VBStandard2/Standard06.htm#:~:text=%E3%81%8B%E3%82%89%E8%B5%B7%E5%8B%95%E3%81%A7%E3%81%8D%E3%82%8B-,%E3%82%AA%E3%83%95%E3%82%99%E3%82%B7%E3%82%99%E3%82%A7%E3%82%AF%E3%83%88%E3%83%95%E3%82%99%E3%83%A9%E3%82%A6%E3%82%B5%E3%82%99%E3%83%BC,-%E3%81%A8%E3%81%84%E3%81%86%E3%83%84%E3%83%BC%E3%83%AB%E3%81%A7


ということで、手元の環境(Visual Studio 2022)のオブジェクト ブラウザーで表示してみました。
Clipboard クラスの GetText メソッドが Shared なメンバー(共有メンバー)であることが分かりますね。
投稿者 私一人  (その他) 投稿日時 2023/6/15 18:10:23
ありがとうございます。
大変よくわかりました。