Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

C#

C#で文字列の前に付いてるアットマーク「@」について

投稿日:2020年12月12日 更新日:

<目次>

(1) C#で文字列の前に付いてるアットマーク「@」について
 (1-1) 概要
 (1-2) 主な用途
 (1-3) 注意点

(1) C#で文字列の前に付いてるアットマーク「@」について

(1-1) 概要

文字列の前に付いている「@」は逐次的リテラル文字列(verbatim string literal)と呼ばれるものです。これを付ける事で、通常はエスケープシーケンスとして扱われる文字(バックスラッシュ「\」など)が無視され、通常の文字と同じ扱いになります。

例をご紹介しますと、例えば@を使う事で次の2つの文字列は同じ意味になります。

(例)
@"C:\ParentFolder\ChildFolder\";
"C:\\ParentFolder\\ChildFolder\\";

(サンプルPG)
上記の例を簡単なC#プログラムで実機確認しました。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FileExistanceCheck
{
 class Program
 {
  static void Main(string[] args)
  {
   string test1 = @"C:\ParentFolder\ChildFolder\";
   string test2 = "C:\\ParentFolder\\ChildFolder\\";

   Console.WriteLine("#### value of test1= " + test1);
   Console.WriteLine("#### value of test2= " + test2);
   Console.Read();
  }
 }
}

(サンプルPG実行結果)

(図111)
同じ値が出力されている。

目次にもどる

(1-2) 主な用途

例えば「正規表現」の定義などを文字列化する場合など、エスケープ処理が非常に手間になるケースなどで活躍します。

例えば、次の正規表現は単語群の中から「3文字~40文字の範囲で、あらゆる単語を取得(スペースや記号を含んでもOK)」を取得するための正規表現ですが、通常のstringで定義すると多くのバックスラッシュ「\」をエスケープする必要があり、手間になります。しかし「@」を付ける事で一発でエラーが解消します。
 
(図121)①
「@」を付けないとエスケープしていない部分はエラーになる

(図121)②
「@」を付ければそのままでOK。

あるいは、複数行に跨る文字列などを扱うケースにも便利です。

(図122)①

(図122)②

目次にもどる

(1-3) 注意点

注意すべきは、ダブルクォーテーション「”」のみは無視されない例外文字となっており、前に更にダブルクォーテーション「”」を追加する事でエスケープする必要があります。

(例)

//文字列
@"This symbol "" is a double quote"
//評価値
// ""はエスケープ処理により"として表示されます。
This symbol " is a double quote

(図131)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-C#

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

C#のdynamic型とは?使いどころやvarとの違いもご紹介

  <目次> (1) C#のdynamic型とは?使いどころやvarとの違いもご紹介  (1-1) dynamic型とは?  (1-2) dynamic型の使いどころ  (1-3) 動作確認 …

C#からDB接続でSQLServerに接続してSELECT文を実行する方法

<目次> (1) C#からDB接続する方法~SQLServerへの接続プログラム例もご紹介~  (1-1) 構文(DB接続)  (1-2) 構文(SELECT文発行)  (1-3) サンプルプログラム …

C#でファイルの存在チェックを行う方法+サンプルプログラムをご紹介

<目次> (1) C#でファイルの存在チェックを行う方法  (1-1) 構文  (1-2) サンプルプログラム (1) C#でファイルの存在チェックを行う方法 (1-1) 構文 (構文) if (!F …

ASP.NET MVCのルーティングの基本

<目次> (1) ASP.NET MVCのルーティングの基本  (1-1) 構文  (1-2) サンプルプログラム   ・RouteConfig.cs   ・Controller   ・View  ( …

ASP.NET MVCにおけるSessionオブジェクトについて

<目次> (1) ASP.NET MVCにおけるSessionオブジェクトについて  (1-1) Session(セッション)とは?   (1-1-1) セッションの開始と終了  (1-2) Sess …

  • English (United States)
  • 日本語
Top