【VB.NET】Stringと[String]の違い【知恵袋】

Yahoo!知恵袋にこんな質問がありました。

VBでの質問です。下記のリンクはマイクロソフトのドキュメントでDelegateクラスのに関するものです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.delegate?view=net-6.0
サンプルコード中、
Delegate Function myMethodDelegate(myInt As Integer) As [String]
のところで、String に角括弧[ ]がついていますが、これはどういう意味でしょうか?

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12266858592?post=2
https://docs.microsoft.com/ja-jp/dotnet/api/system.delegate?view=net-6.0

検索してもヒットしない

こんなの検索すれば一発でわかるのでは?と思ったのですが、なかなかヒットしません。

DuckDuckGoで検索してだめで、Googleで検索してもだめだったので、検索対象を英語圏に広げました。

そうしたところ、stackoverflow(海外版OKWaveみたいな質問掲示板)で似たような質問を見つけました。

vs String in .NET

以下、掲示板の内容をざっくりと野口が訳しました。

掲示板の内容

質問者

I used developerfusion.com to convert a snippet of my C# code to VB .NET and I noticed the String type translated into [String].

I tried Google and Searching SO to no avail so I will ask the community is there a difference between [String] and String? And if so what is/are the difference(s)?

https://stackoverflow.com/questions/830984/vs-string-in-net/831002#831002

野口の意訳

私はdeveloperfusion.comを使用して、私のC#コードの断片をVB .NETに変換しているんだけど、String型が[String]型に変換されていることに気づきました。

私はGoogleとSearching.soを試してみたけど無駄だったので、コミュニティに尋ねることにしました。[String]とStringの違いはありますか?そして、もしそうなら、その違いは何ですか?

この質問に対して4件回答がついています。一番いいねがついている人の回答を引用します。

In VB.Net, the [] surrounding a word is used to allow a keyword to be used as a normal identifier. So using [String] means I want to identify something with the word String and not the VB keyword String.

https://stackoverflow.com/questions/830984/vs-string-in-net/831002#831002

野口意訳。

VB.Netでは、単語を囲む[]は、キーワードを通常の識別子として使用するために使用されます。つまり、[String]を使用すると、VBキーワードのStringではなく、Stringという単語で何かを識別したいことを意味します。

他の人の回答は、リンク先を見てください。ユーザ定義で中身がInteger型の[String]型を作った人までいて、なかなかおもしろいです。

回答

知恵袋の質問に対する回答としては、あまり多くを語れませんでした。なんせ私はVB.Netは知らないのです。

英語ですが、似たような質問を見つけましたのでリンクを貼っておきます。

https://stackoverflow.com/questions/830984/vs-string-in-net/831002#831002

[]をつければ、VBのキーワード(今回はString)であってもユーザ定義の名前として使うことができるといったことが書いてあります。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12266858592?post=2

まとめ

VB.NETを知らないなら、回答もしなければよいではないかと思うかもしれませんが、このブログの目的の一つに、みんなが記事にしていないことを記事にする、スキマ産業で社会貢献するというものもあるので、記事にしてみました。

そもそも、質問者さんが引用したMicrosoftのDelegateクラスのヘルプを見ると、

ユーザーは言語によって提供されるキーワードを delegate 使用する必要があります。

https://docs.microsoft.com/ja-jp/dotnet/api/system.delegate?view=net-6.0

と書いてありますので、VB.NETで提供されるキーワードの一つ、”String”を代理使用する例を示すために[String]としたのかなあ?とぼんやりと考えましたが、いかんせん今私のパソコンにVB.NETを試す環境がないので、うかつなことは言えません。

試すとしたら、Microsoftヘルプにあるコードを[]ありバージョンとなしバージョンで試すことでしょうか。そうすれば、もっと具体的にVB.NETという言語の仕様が分かると思います。

何かのお役に立てば幸いです。

ここまでお読みいただきありがとうございました。