🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

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

Q&A

1回答

2095閲覧

ToString関数のオーバーライドについて

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

0グッド

0クリップ

投稿2021/03/15 01:53

編集2021/03/15 02:12

引数として渡したクラスをログ出力するために、下記のようにToString関数のオーバーライドを行っています。

C#

1public class Human 2{ 3 public int ID{get;set;} 4 public string Name{get;set;} 5 public Information Info{get;set;} 6 public override string ToString() 7 { 8 var builder = new StringBuilder(); 9 builder.AppendFormat("ID:{0},", ID); 10 builder.AppendFormat("Name:{0}", Name); 11 builder.AppendFormat("Info:{0}", Info); 12 return builder.ToString(); 13 } 14} 15public class Information 16{ 17 public int Age{get;set;} 18 public string Area{get;set;} 19}

上記を下記のようにログ出力を行った場合にInformationクラスのプロパティがうまく出力されません。

C#

1using log4net; 2public void LogTest(Human human) 3{ 4 ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().Name); 5 human.ID = 1; 6 human.Name = "佐藤"; 7 human.Info.Age = 23; 8 human.Info.Area = "日本" 9 log.Info(human); 10} 11//出力結果 12//ID:1,Name:佐藤,Info:,

結果の「Info」の部分を、Age:23,Area:日本のように出力したいのですがどうすればよいでしょうか?

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

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

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

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

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

YT0014

2021/03/15 02:05

Debugクラスの完全名称をご提示ください。 System.Diagnostics.Debugではないようですが。
退会済みユーザー

退会済みユーザー

2021/03/15 02:12

すみません記載に誤りがありましたので修正いたしました。 ログの出力にはlog4netを使っています。
hihijiji

2021/03/15 02:23

InformationのToString()をオーバーライドしたほうが簡単かも
退会済みユーザー

退会済みユーザー

2021/03/15 02:50 編集

public void LogTest(Human human) の引数に渡される human は渡す前に Info プロパティに Information クラスを初期化して代入していると想像して・・・ > 結果の「Info」の部分を、Age:23,Area:日本のように出力したい builder.AppendFormat("Info:{0}", Info); に代えて以下のようにしたらどうなりますか? builder.AppendFormat("Age:{0},Area{1}", Info.Age, Info.Area);
guest

回答1

0

InformationクラスにToStringをオーバーライドしてやればいいという話では

投稿2021/03/15 03:01

y_waiwai

総合スコア88040

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問