質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

2114閲覧

[C#]XmlSerializerでファイルを指定する時の「@」の意味

m_hikari

総合スコア64

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2018/07/12 11:51

http://www.atmarkit.co.jp/ait/articles/1704/19/news021.html

C#でXMLをシリアライズする方法を調べていてこちらのサイトを閲覧したのですが、
シリアライズ先のファイルを指定している箇所の「@」はどのような意味があるのでしょうか?

初歩的な質問で申し訳ありませんがご教授頂けますと幸いです。

該当コード

C#

1const string xmlFile = @".\Sample.xml";
全文

C#

1using System.IO; 2using System.Text; 3using System.Xml.Serialization; 4using static System.Console; 5 6// シリアライズ対象のクラス 7public class Sample 8{ 9 public int Id { get; set; } 10 public string Text { get; set; } 11} 12 13class Program 14{ 15 static void Main(string[] args) 16 { 17 // シリアライズ先のファイル 18 const string xmlFile = @".\Sample.xml"; 19 // シリアライズするオブジェクト 20 var obj = new Sample { Id = 7, Text = "@IT" }; // (1) 21 22 // シリアライズする 23 var xmlSerializer1 = new XmlSerializer(typeof(Sample)); 24 using (var streamWriter = new StreamWriter(xmlFile, false, Encoding.UTF8)) 25 { 26 xmlSerializer1.Serialize(streamWriter, obj); 27 streamWriter.Flush(); 28 } 29 // 書き出されたファイルの内容(一部に改行を入れている): 30 // <?xml version="1.0" encoding="utf-8"?> 31 // <Sample xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 32 // xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 33 // <Id>7</Id> 34 // <Text>@IT</Text> 35 // </Sample> 36 37 // デシリアライズする 38 var xmlSerializer2 = new XmlSerializer(typeof(Sample)); 39 Sample result; 40 var xmlSettings = new System.Xml.XmlReaderSettings() 41 { 42 CheckCharacters = false, // (2) 43 }; 44 using (var streamReader = new StreamReader(xmlFile, Encoding.UTF8)) 45 using (var xmlReader 46 = System.Xml.XmlReader.Create(streamReader, xmlSettings)) 47 { 48 result = (Sample)xmlSerializer2.Deserialize(xmlReader); // (3) 49 } 50 WriteLine($"{result.Id}, {result.Text}"); 51 // 出力:7, @IT 52 53#if DEBUG 54 ReadKey(); 55#endif 56 } 57}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

この表記は@""で一つのもので、「逐語的リテラル文字列」と言います。
簡単に言うと、エスケープの仕様が通常の文字列リテラルと異なっており、バックスラッシュや改行等の特殊文字を含む文字列を記述する際に便利なのです。

文字列 (C# プログラミング ガイド) | Microsoft Docs

投稿2018/07/12 11:59

tamoto

総合スコア4103

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m_hikari

2018/07/12 12:12

迅速な回答ありがとうございます。 ベストアンサーにさせて頂きます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問