Jag vill skapa en klass "Pair" med medlems variablerna "first" och "second". Sedan vill jag skapa en array med Pair object där jag kan sortera efter "second". Och jag vill kunna konvertera till en string[] som innehålle bara värden från "first".
Så här långt har jag kommit:
public class Pair : IComparable
{
private object first;
private object second;
public Pair(object first, object second)
{
this.first = first;
this.second = second;
}
public object Second
{
get
{
return second;
}
set
{
second = value;
}
}
public object First
{
get
{
return first;
}
set
{
first = value;
}
}
public static explicit operator string(Pair p)
{
return p.first.ToString();
}
/*
public override string ToString()
{
return first.ToString();
}
*/
public int CompareTo(object obj)
{
Pair p = (Pair) obj;
return ((IComparable)this.second).CompareTo((IComparable)p.second);
}
}
Detta funkar då så klart inte:
ArrayList result = new ArrayList();
result.Add(new Pair("olle", 3));
result.Add(new Pair("nisse", 4));
result.Sort(); //funkar fint!
string[] members = (string[]) result.ToArray(typeof(string)); //blir galet
Jag får exception: "Additional information: At least one element in the source array could not be cast down to the destination array type."
Så till frågan: hur gör jag för att på ett snyggt sätt konvertera en lista med Pair object till en string[] med bara värden från first??
Självklart kan man göra det på det fula sättet med en loop men det vill jag hellst undvika.
tack för svar!
/Nisse