.NET TIPS

C#やVB.NETでキーワードを識別子として使用するには?

デジタルアドバンテージ 遠藤 孝信
2005/01/14

 コード内に記述するクラスやメソッド、変数などの識別子には、その言語仕様で予約されているキーワードと同じ名前を使用することはできない。しかし、C#では識別子の前に「@」を付け、VB.NETでは識別子を角カッコ([ ])で囲むことにより、キーワードを識別子として使用できる。これらの識別子は、C#では「逐語的識別子」、VB.NETでは「エスケープ識別子」と呼ばれる。

 これらの識別子を使えば、次のようなプログラムも記述可能だ。

// identifier.cs

namespace @namespace {
  class @class {
    void @void(int @int) {
      System.Console.WriteLine(@int);
    }

    static void Main() {
      @class @new = new @class();
      @new.@void(2005);
    }
  }
}

// コンパイル方法:csc identifier.cs
キーワードを識別子として使用したC#のサンプル・プログラム(identifier.cs)
 
' identifier.vb

Namespace [Namespace]
  Class [Class]
    Sub [Sub](ByVal [Integer] As Integer)
      System.Console.WriteLine([Integer])
    End Sub

    Shared Sub Main()
      Dim [Dim] As New [Class]
      [Dim].[Sub](2005) ' ここは[Dim].Sub(2005)でもOK
    End Sub
  End Class
End Namespace

' コンパイル方法:vbc identifier.vb
キーワードを識別子として使用したVB.NETのサンプル・プログラム(identifier.vb)

 例えばVB.NETのサンプル・プログラムでは、「Class」はクラスを記述するためのキーワードであり、これをクラスの識別子(クラス名)としては利用できない。しかし、この文字列を角カッコで囲むことにより(「[Class]」と記述することにより)、識別子として利用できるようになる。この場合には、識別子として記述したこのクラスを利用する個所でもクラス名として「[Class]」と記述しなければならない(ただしC#では「Class」はキーワードではないため、C#からこのVB.NETのクラスを使用する場合には、単に「Class」と記述して利用できる)。

 逐語的識別子やエスケープ識別子は、クラス・ライブラリで使用されている識別子が言語のキーワードと重複している場合に必要となる。例えばSystem.Reflection名前空間にはAssemblyクラスが標準で用意されているが、VB.NETには属性の適用範囲を指定するAssembly修飾子がキーワードとして定義されている。このため、このクラスを使用するときには、

Dim asm As [Assembly]

のように、エスケープ識別子の使用が必須である。End of Article

カテゴリ:Visual Basic .NET 処理対象:言語構文
カテゴリ:C# 処理対象:言語構文
使用ライブラリ:Assemblyクラス(System.Reflection名前空間)
 
この記事と関連性の高い別の.NET TIPS
バージョン情報ダイアログを作成するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

@IT Special

- PR -

TechTargetジャパン

Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る

ホワイトペーパーTechTargetジャパン

注目のテーマ

Insider.NET 記事ランキング

本日 月間
ソリューションFLASH