2012-04-12 8 views
1

コンソールに結果を出力「テスト);」私はToStringメソッド、Convert.ToString、などを試してみましたが、私はまだその出力を得るのIListをstring.Joinしようとすると、「string.Join(」使用

「Ilistprac.Location、Ilistprac.Location、Ilistprac.Location」

:作品は、しかし、いくつかの理由のために私はの出力を取得します。

すべてのIListインターフェイスは、(誰かが私がしたいと考えていない限り、単にここに記載されていない)あまりにもIEnurmerableで実装されています。

class IList2 
{ 
    static void Main(string[] args) 
    { 

    string sSite = "test"; 

string sBldg = "test32"; 
    string sSite1 = "test"; 
    string sSite2 = "test"; 

    Locations test = new Locations(); 
    Location loc = new Location(); 
    test.Add(sSite, sBldg) 
    test.Add(sSite1) 
    test.Add(sSite2) 
    string printitout = string.Join(",", test); //having issues outputting whats on the list 

    } 
} 
string printitout = string.Join(",", test.ToArray<Location>); 


public class Location 
{ 
    public Location() 
    { 

    } 
    private string _site = string.Empty; 
    public string Site 
    { 
     get { return _site; } 
     set { _site = value; } 
    } 
} 

public class Locations : IList<Location> 
{ 
    List<Location> _locs = new List<Location>(); 

    public Locations() { } 

    public void Add(string sSite) 
    { 
     Location loc = new Location(); 
     loc.Site = sSite; 

     loc.Bldg = sBldg; 
     _locs.Add(loc); 
    } 

    private string _bldg = string.Empty; 

    public string Bldg 

    { 

     get { return _bldg; } 

     set { _bldg = value; } 

    } 


} 

答えて

3

あなたはJoinは、各要素のためにそれを呼び出しているようLocationに役立つToString実装を提供する必要があります。デフォルトの実装では、型の名前が返されます。 documentationを参照してください。

あなたは

class SomeType 
{ 
    public string FirstName { get; private set; } 
    public string LastName { get; private set; } 

    public SomeType(string first, string last) 
    { 
     FirstName = first; 
     LastName = last; 
    } 

    public override string ToString() 
    { 
     return string.Format("{0}, {1}", LastName, FirstName); 
    } 
} 

のようなタイプを持っているのであればあなたはそれが文字列として表現する方法を指定する必要があります。あなたがそれを行う場合は、以下の出力を生成するために、このようstring.Joinを使用することができます。

var names = new List<SomeType> { 
    new SomeType("Homer", "Simpson"), 
    new SomeType("Marge", "Simpson") 
}; 

Console.WriteLine(string.Join("\n", names)); 

出力:

Simpson, Homer 
Simpson, Marge 
+0

、 1つ以上の値を返すには、フォーマットする必要があるようです。ありがとう! – nhat

+0

これは、複数の値を返すについては本当にありません。これは、あなたの型を 'string'で表現する方法です。 'Join'シーケンスにおけるLocation''の各インスタンスに 'ToString'呼び出します。クラスのデフォルト文字列表現は型名です。他のものが必要なら、その型に対して 'ToString'をオーバーライドする必要があります。 –

+0

Gotcha、私はデフォルトの実装が何であるか分からず、文字列を取得するためにオーバーライドが必要でした。私はそれらの値を返す問題を持っていましたが、そのようにフォーマットされているのはトリックでした – nhat

3

あなたは、ToString()はあなたの現在のアプローチを維持したい場合は、いくつかの意味のある出力を提供するために、あなたのLocationクラスをincの上書きする例:持っている:私は見

public override string ToString() 
{ 
    return Site; 
} 
関連する問題