■70253 / inTopicNo.4) |
Re[3]: LabelやTextBoxのnameプロパティ |
□投稿者/ 魔界の仮面弁士 (555回)-(2014/03/04(Tue) 16:07:53)
|
2014/03/04(Tue) 17:01:20 編集(投稿者)
■No70252 (fullhappy さん) に返信 > 中点のカテゴリが"Pc"から"Po"になったので使えなくなった。 > 変数で使えてしまうのはコンパイラかなにかの不具合。
中点が識別子として使えないのは、Visual Studio 側の制限だと思います。
たとえば、.NET Framework 的には、フォーム上の複数のコントロールに 同じ Name をつける事が許可されていますが、Visual Studio では 重複する Name を与えられません。これも VS 側の制限ですね。
C# 側としての識別子の制限は、以下のようになっています。 ・UAX #15 準拠 ・アンダースコアで始めることもできる。アンダースコア単独でも可。 ・予約語やキーワードを識別子とする場合は、先頭にプリフィックス @ を補う必要がある。 ・識別子の中で Unicode エスケープシーケンスを使用できる ・以下の文字クラスが利用可能 ・letter-character: Lu、Ll、Lt、Lm、Lo、Nl ・combining-character: Mn、Mc ・dicimal-digit-character: Nd ・connecting-character: Pc ・formatting-character: Cf
Pc はありますが、Po は無いですね。 というか漢字やカナが含まれていないような…?
ちなみに Visual Basic 側も、ほぼ同様の制限となるようです。 予約語が異なるとか、大文字小文字を区別するかどうかといった違いはありますが。 ・UAX #15 準拠 ・アンダースコアで始めることもできるが、その場合、他の文字を 1 文字以上含める必要がある。 ・予約語やキーワードを識別子とする場合は、角かっこで囲ったエスケープ識別子とする必要がある。 ・長さが 1023 文字を超えない。
その他、下記のような表記も見つけました。 やはり、漢字やカナは記載されていません。 http://msdn.microsoft.com/ja-jp/library/81ed9a62.aspx
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VB\Specifications\1041\Visual Basic Language Specification.docx"
・AlphaCharacter: Lu, Ll, Lt, Lm, Lo, Nl ・NumericCharacter: Nd ・CombiningCharacter: Mn, Mc ・FormattingCharacter: Cf ・UnderscoreCharacter: Pc ・IdentifierOrKeyword: 識別子 または キーワード
関連情報として、文字列リテラル中の全角ダブルクォートの問題もあります。 Text = "”"; // C#系 Text = "”" ' VB系
この構文は、本来であれば C# :問題なし。「”」と認識される。 VBScript:問題なし。「”」と認識される。 VB.NET :コンパイルエラーBC30648(閉じていない文字列リテラル) と処理されます。VB.NET だと動作しないわけです。
ところが、Visual Studio (.NET 版のほか、VBA や VB6 も同様)の IDE は、 これを Text = """" に自動補正して、「"」として処理してしまいます。
> しかし、変数が見やすくなるので > ライブラリも含め、ずっと使ってしまっていました。 単語を区切ることができるのであれば、中点であることには こだわりませんか? であれば、「_」や「_」などといった Pc カテゴリの文字で代用してみてください。 http://www.fileformat.info/info/unicode/category/Pc/list.htm
実際、Visual Studio のコードジェネレータは、そうした文字を 「_」に置き換えてコード化するようになっているようです。
|
|