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#でファイルを1行ずつ読み込み処理を行うサンプルプログラム

<目次> (1) C#でファイルを読み込み処理を行うサンプルプログラム  (1-1) 構文  (1-2) サンプルプログラム  (1-3) サンプルプログラムの補足 (1) C#でファイルを読み込み処 …

ASP.NETのRazor入門~Razorとは?や使い方をご紹介

<目次> (1) ASP.NETのRazor入門~Razorとは?や使い方をご紹介  (1-1) Razorとは?  (1-2) 基本構文  (1-3) サンプルプログラム (1) ASP.NETのR …

BundleConfig.csが読み込まれない場合の確認ポイントについて(ASP.NET)

  <目次> (1) BundleConfig.csが読み込まれない場合の確認ポイントについて(ASP.NET)  (1-1) 前提条件  (1-2) 確認ポイント   (確認①)Bundl …

C#のDB接続時のエラー(provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server)

<目次> (1) 記事の目的  (1-1) エラー概要  (1-2) エラー原因  (1-3) エラー対策   (1-3-1) SQLServer:リモート接続を有効化   (1-3-2) SQLSe …

C#のIComparerの実装方法や用法について(サンプルプログラムあり)

<目次> (1) C#のIComparerの実装方法や用法について  (1-1) IComparerの概要  (1-2) STEP0:比較をするクラスの定義  (1-3) STEP1:ICompare …

  • English (United States)
  • 日本語
Top