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

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

新規登録して質問してみよう
ただいま回答率
85.50%
C#

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

Q&A

解決済

3回答

10448閲覧

C# でオブジェクトを見やすくデバッグ表示する

lazex

総合スコア604

C#

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

1グッド

3クリップ

投稿2016/12/11 09:27

C# インタラクティブでは

> var a = 1; > a 1 > new List<string> { "x", "yz" } List<string>(2) { "x", "yz" }

と見やすく表示されます。

csharp

1Console.WriteLine(a);

のようにデバッグ用に出力するときにもこのように表示したいです
単に ToString するだけでは List の中身がでなくて毎回見やすく表示するために整形することになってます

c# インタラクティブでは何を使ってこのように見やすく出力してるのでしょうか?
またこれに近い形で文字列化する方法はありますでしょうか?

退会済みユーザー👍を押しています

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

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

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

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

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

guest

回答3

0

ベストアンサー

こんにちは。
C# Interactiveが内部で使っているオブジェクトフォーマッタをnugetで手に入れることができます。
Microsoft.CodeAnalysis.CSharp.Scripting
こちらのパッケージをインストールした後、
以下のようにして利用可能になります。

csharp

1static void Main(string[] args) 2{ 3 // formatterのinstanceを取得 4 var formatter = Microsoft.CodeAnalysis.CSharp.Scripting.Hosting.CSharpObjectFormatter.Instance; 5 6 var x = new Dictionary<int, string> 7 { 8 [1] = "abc", 9 [12] = "def" 10 }; 11 12 var formattedString = formatter.FormatObject(x); // FormatObjectメソッドでstring化 13 Console.WriteLine(formattedString); 14} 15 16/*/ 17Output: 18Dictionary<int, string>(2) { { 1, "abc" }, { 12, "def" } } 19/*/

投稿2016/12/12 02:11

tamoto

総合スコア4103

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

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

lazex

2016/12/12 04:50

ありがとうございます!こういうの探してました。 csiのソースみてても全然わからなくてこまってたんですよね。 ちゃんとここだけでパッケージになっていたんですね。
guest

0

「毎回見やすく表示するために整形する」その内容をメソッド化してしまえばいいのでは。
拡張メソッドとかにして汎用的に使えるようにしておくといいと思います。
他の回答にもあるような方法を取るにしても、結局整形するという手間はあるわけですから、
自分好みのものにするなら結局は自作のメソッドが一番いいと思います。

投稿2016/12/12 03:46

twyujiro15

総合スコア217

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

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

0

私は json.netを用いてJSONにしたりしてます。

C#

1var obj = new { id = 1, str = "hoge" }; 2var str = JsonConvert.SerializeObject(obj); 3Console.WriteLine(str);

JSONは以下のサイトを使えば見やすくなります
http://json.parser.online.fr/

投稿2016/12/11 10:51

aglkjggg

総合スコア769

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

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

lazex

2016/12/11 11:47

JSONも考えたのですが、型がわからないのとDictionaryのキーにオブジェクトを使ったときなど対応できないケースも多々あるので csi.exe のような表示にできればなと思ってます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問