C# の変数名の前の@記号

Muhammad Zeeshan 2023年10月12日
  1. C#@記号とは
  2. C#@記号の重要性
  3. C# での@記号の使用例
C# の変数名の前の@記号

この記事では、C# の変数名の前にある@記号について説明します。

C#@記号とは

一部の C# 開発者にとって、@記号はやや厄介かもしれません。長い間プログラミングを行ってきたプログラマーはほとんどいませんが、@が何をするのかについて誤解を持っています。

他のプログラミング言語と対話する場合、表記@を使用すると、キーワードを識別子として使用できます。 @文字は実際には識別子の一部ではないため、他の言語では通常の識別子として解釈される可能性があります。

逐語的な識別子は、@という用語を持つ識別子です。 @という用語は、キーワード以外の識別子に使用できますが、スタイルによってはお勧めできません。

C#@記号の重要性

@記号を使用すると、予約語を利用できます。次のシナリオを考えてみましょう。

int @class = 29;

そして、以下のものは予約語の使用法では機能しません。

int class
= 29;

文字列にバックスラッシュを挿入する場合は、最初に、その前に別のバックスラッシュを挿入して、文字列をエスケープする必要があります。次のコードは、文字列"C:\\Program Files\\wmplayer.exe"を文字列変数 filepath に格納します。

string filepath = "C:\\Program Files\\wmplayer.exe";

バックスラッシュを使用して多くの文字列を入力する必要がある場合、これはイライラする可能性があります。少し簡単にするために、文字列の前に@記号を使用して、バックスラッシュをエスケープ文字として無視する逐語的な文字列リテラルを生成できます。

これを行うと、改行やタブなどの特殊文字を文字列に挿入できなくなります。次のコードは、代わりに文字列リテラルを使用することを除いて、前のコードと同じです。

string filepath = @"C:\Program Files\wmplayer.exe";

これはコードにのみ適用され、ユーザーが TextBox または ComboBox に入力するものには適用されません。エスケープや文字に関連する特別な意味がないため、ユーザーが入力するものはすべて、コントロールの Text プロパティの一部になります。

ユーザーは特殊文字を入力できないため、ユーザーの入力に関係なく、エスケープ文字の扱いを気にする必要はありません。つまり、ユーザーは\t と入力してタブ文字を入力することはできません。

C# での@記号の使用例

  1. それはあなたが予約された用語を使用することを可能にすることを本当に意味します。

    char @int = 'z';
    

    そして、以下のものは機能しません。

    char int = 'z';
    
  1. 別のシナリオも検討します。 @記号は、エスケープ文字を使用して文字列を定義するときにも使用されます。

    string str = @"C:\Users\Shani\Downloads\Book1.xlsx";
    

    以下のコードは、上記の代替コードです。

    string str = "C:\\Users\\Shani\\Downloads\\Book1.xlsx";
    
  2. 次のコードは、プログラムの起動時に多数の文字列リテラルおよびその他の文字列の問題を表示します。

    private void AtsymbolForm_Load(object sender, EventArgs e) {
      txtdblSlash.Text = "C:\\Users\\Shani\\Downloads\\Book1.xlsx";
      Console.WriteLine(txtdblSlash.Text);
      Console.WriteLine(@txtdblSlash.Text);
    }
    

    ここで@を追加しても、TextBox の内容には影響しません。

Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn

関連記事 - Csharp Variable