0

私はプログラミングに非常に慣れていないため、C# を学習しています。4週目!

ユーザー入力を求めるプログラムの作成:

  • 友達の名前
  • 電話
  • 生年月日
  • 生年。

オブジェクトの配列として作成し、IComparable を使用してオブジェクトの比較を有効にします。オブジェクトを文字列、アルファベット順に並べ替える必要があります。比較する文字列を取得することを除いて、残りのコードはすべて揃っていると思います。これが私が持っているものですIComparable.CompareTo(Object o)

int IComparable.CompareTo(Object o)
{
    int returnVal;

    Friend temp = (Friend)o;
    if(this.Name > temp.Name)
        returnVal = 1;
    else
        if(this.Name < temp.Name)
            returnVal = -1;
        else returnVal = 0;
    return returnVal;
}

コンパイル時に受け取るエラーは次のとおりです。

CS0019 演算子'>' は、型 'string' および 'string' のオペランドには適用できません。

インストラクターはあまり役に立ちません。テキストはこの不測の事態を総合しません。

4

2 に答える 2

3

に委任するだけString.CompareToです:

int IComparable.CompareTo(Object o) {
    Friend temp = (Friend)o;

    return this.Name.CompareTo(temp.Name);
}
于 2012-07-28T23:41:29.703 に答える
0

これは、おそらく慣れていないいくつかの言語機能を使用しますが、少し簡単になります。

people = people.OrderBy(person => person.Name).ToList();

次のように使用されます:

var rnd = new Random();
var people = new List<Person>();
for (int i = 0; i < 10; i++)
    people.Add(new Person { Name = rnd.Next().ToString() });

//remember, this provides an alphabetical, not numerical ordering,
//because name is a string, not numerical in this example.
people = people.OrderBy(person => person.Name).ToList();

people.ForEach(person => Console.WriteLine(person.Name));
Console.ReadLine();

GoogleLINQ[そして'System.Linq;'を使用して'を追加することを忘れないでください]とLambda's。

于 2012-07-29T00:49:16.010 に答える