2017-04-08 12 views
0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApp1 
{ 
    class Program 
    { 
     public static void Main(string[] args) 
     { 
      IList<PersonalDetails> EmpData = new List<PersonalDetails>() 
      { 
       new PersonalDetails(){ firstName="Alan", lastName="Al", age=25}, 
       new PersonalDetails(){ firstName="Brian", lastName="Br", age=30}, 
       new PersonalDetails(){ firstName="Carlie", lastName="Ca", age=35}, 
       new PersonalDetails(){ firstName="David", lastName="Da", age=40}, 
       new PersonalDetails(){ firstName="Eddie", lastName="Ed", age=45} 
      }; 
      foreach (PersonalDetails i in EmpData) { 
       Console.WriteLine(i); 
      } 
     } 
    } 

    public class PersonalDetails 
    { 
     public string firstName { get; set; } 
     public string lastName { get; set; } 
     public int age { get; set; } 
    } 
} 

このプログラムはC#のコンソールウィンドウにリストアイテムを表示するには?

ConesoleApp1.PersonalDetails 
ConesoleApp1.PersonalDetails 
ConesoleApp1.PersonalDetails 
ConesoleApp1.PersonalDetails 
ConesoleApp1.PersonalDetails 

を出力し、それは私がリストに入れたデータをプリントアウトしませんなぜ私は理解していません。私はたくさんの投稿を読んできましたが、どこが間違っているのか分かりません。あなたが正しい方向に私を向けることができれば、どんな助力も非常に高く評価されます。前もって感謝します。

答えて

1

PersonalDetailsToStringメソッドをオーバーライドする必要があります。そうしないと、タイプ名を出力するデフォルトのToString実装が呼び出されます。

は、あなたのクラスにこのメソッドを追加します。

public override string ToString() 
{ 
    return $"{firstName} {lastName}, {age}"; 
} 

あなたが欲しいしかし、形式を変更することができます。

1

クラスのデフォルト文字列表現は、そのクラスの名前です。これは、.NETがというアイデアがないためです。を印刷する方法はです。あなたはby overriding .ToString()、しかし、それを伝えることができます:

public override string ToString() 
{ 
    return string.Format("{0} {1} - {2}", firstName, lastName, age); 
    // or however you want to print the values 
} 
1

Console.WriteLine(i)Console.WriteLine(i.ToString())と同じです。独自のToString実装を持たないため、デフォルトの1つのObjectが使用されます。

これを修正するには、Object.ToString()を上書きする必要があります。他の人がすでに述べたように第一のオブジェクトに対してAlan, Al, 25

1

を返す

public override string ToString() 
{ 
    return $"{this.firstName}, {this.lastName}, {age.ToString()}"; 
} 

、あなたはそれがデフォルトの実装ですオーバーライドするためにToStringメソッドを指定する必要があります。

var objectString = JsonConvert.SerializeObject(myInstance, Formatting.Indented); 
このようないくつかのケースで

、動的オブジェクトを扱うときに特に、JSONシリアライザ(例えばNewtonsoft JSON)を使用して、それをシリアライズすることによりオブジェクト列表現を取得するために有用です
関連する問題