2003年12月23日
川俣晶の縁側技術関連執筆情報『VB6プログラマーのための入門Visual Basic.NET独習講座』読者サポートtotal 14818 count

予約語と同じキーワードを使うためのエスケープ識別子

Written By: 川俣 晶連絡先

 これは、書籍『VB6プログラマーのための入門Visual Basic.NET独習講座』の読者サポート情報として提供されている技術解説です。

予約語をクラス名や変数名にできない問題 §

 Visual Basic 6.0では、予約語をクラス名や変数名として使うことができない制約がある。これは、多くのプログラム言語にも共通に見られる制約と言え、特に奇異なことではない。

 しかし、複数プログラム言語が混在した環境では、これが問題になる場合がある。たとえば、.NET Framework上では、他プログラム言語で作成したクラスライブラリを呼び出すことは容易だが、クラスライブラリが用意したクラス名などが、Visual Basicの予約語と重なる可能性が無いとは言えない。もし、予約語と重なると、その名前を持つクラスなどは使えないことになってしまう。

 このような問題に対処するために、Visual Basic .NETには、エスケープ識別子(escaped identifier)と呼ばれる機能が用意されている。

エスケープ識別子を使った例 §

 エスケープ識別子を用いて、Classという名前のクラスを作成してみた。もちろん、Classは予約語なので、通常では使えない。また、Integerという名前の変数と、Subという名前のメソッドも作成した。これらは、普通に記述しても予約語と重なるためエラーになるものである。

Public Class [Class]

    Public Shared [Integer] As Integer = 0

    Public Shared Sub [Sub]()

        [Class].Integer += 1

    End Sub

End Class

 これを呼び出す側として、以下のようなコードを記述してみた。

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        [Class].Sub()

        Trace.WriteLine([Class].Integer)

    End Sub

 これを実行すると以下のようになる。

1

 これを見て分かる通り、キーワードの前後に[……]を付ければ、予約語と重なるキーワードを記述することができる。これをエスケープ識別子という。

 気になるのは、一部、予約語でありながらエスケープ識別子となっていないキーワードが見えることである。たとえば、[Class].Sub()というメソッド呼び出しは、予約語と重なるSubという名前のメソッド名を記述しているにも関わらず、エスケープ識別子になっていない。しかし、このままで正常にコンパイルして実行することができる。これは、構文上ここに予約語が出現せず、間違いなく予約語のSubではなく、メソッドのSubであると判断できるためだろう。

 一方、Public Shared Sub [Sub]()というメソッドの宣言部分で[……]を取り去ると、これは構文エラーとなる。宣言部分で予約語と重なる名前を記述する場合は、エスケープ識別子が必要となる。

 エスケープ識別子が必要とされるか判断に自信がない場合は、一律に予約語と重なる名前をエスケープ識別子として記述すると良いだろう。エスケープ識別子として記述する必要のない箇所で、エスケープ識別子として記述しても、特に問題は発生しない。

Facebook

キーワード【 川俣晶の縁側技術関連執筆情報『VB6プログラマーのための入門Visual Basic.NET独習講座』読者サポート
【『VB6プログラマーのための入門Visual Basic.NET独習講座』読者サポート】の次のコンテンツ
2004年
07月
10日
IsMissing関数に関する訂正
3days 0 count
total 4823 count
【『VB6プログラマーのための入門Visual Basic.NET独習講座』読者サポート】の前のコンテンツ
2003年
12月
19日
継承を使用した場合のコンストラクタの使い方とMyBaseキーワード
3days 0 count
total 39589 count

このサイト内の関連コンテンツ リスト

2003年
12月
13日
川俣晶の縁側技術関連執筆情報
《単行本》 VB6プログラマーのための入門Visual Basic.NET独習講座
3days 0 count
total 4948 count
2003年
12月
19日
継承を使用した場合のコンストラクタの使い方とMyBaseキーワード
3days 0 count
total 39589 count
2003年
12月
19日
川俣晶の縁側辛口甘口雑記
何ということだ。せっかく出した本のタイトルが、アマゾンで誤記されている!?
3days 0 count
total 3678 count
2004年
01月
28日
川俣晶の縁側技術関連執筆情報
改訂版 プロフェッショナルVB.NETプログラミング
3days 0 count
total 4517 count
2004年
03月
31日
川俣晶の縁側技術関連執筆情報
私の書いた記事を紹介して下さる方々へのささやかなお願い・無料だからと古いものを読ませないで
3days 0 count
total 2771 count
2004年
07月
10日
IsMissing関数に関する訂正
3days 0 count
total 4823 count
2005年
01月
12日
Decimal型についての訂正
3days 0 count
total 4103 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20031223140444
サイトの表紙【『VB6プログラマーのための入門Visual Basic.NET独習講座』読者サポート】の表紙【『VB6プログラマーのための入門Visual Basic.NET独習講座』読者サポート】のコンテンツ全リスト 【『VB6プログラマーのための入門Visual Basic.NET独習講座』読者サポート】の入手全リスト 【『VB6プログラマーのための入門Visual Basic.NET独習講座』読者サポート】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.