Jeg får nogle underligt sorterede lister ud af nedenstående kode.
before aaa bbb ccc aaa bbb
after bbb bbb ccc aaa aaa
hvad går galt?
using System;
class Sandbox {
public Sandbox() { MyCompare[] blah = new MyCompare[5]; blah[0] = new MyCompare("aaa"); blah[1] = new MyCompare("bbb"); blah[2] = new MyCompare("ccc"); blah[3] = new MyCompare("aaa"); blah[4] = new MyCompare("bbb"); Console.WriteLine("before"); foreach (MyCompare mp in blah) { Console.WriteLine(mp.myvar); } Array.Sort(blah); Console.WriteLine("after"); foreach (MyCompare mp in blah) { Console.WriteLine(mp.myvar); } }
public static void Main() { new Sandbox(); }
private class MyCompare : IComparable { public String myvar;
public MyCompare(string myvar) { this.myvar = myvar; }
public int CompareTo(object obj) { if (obj is MyCompare) { MyCompare temp = (MyCompare)obj; return this.myvar.CompareTo(temp.myvar); } else { throw new ArgumentException("object er ikke MyCompare"); } } } }
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
erikjacobsen har ret. Problemet er at du arbejder med et dansk system. Løsningen er at ændre din CultureInfo til engelsk:
public int CompareTo(object obj) { if (obj is MyCompare) { MyCompare temp = (MyCompare)obj; return string.Compare(this.myvar, temp.myvar, false, new System.Globalization.CultureInfo("en")); } else { throw new ArgumentException("object er ikke MyCompare"); } }
The CultureInfo class holds culture-specific information, such as the associated language, sublanguage, country/region, calendar, and cultural conventions. This class also provides access to culture-specific instances of DateTimeFormatInfo, NumberFormatInfo, CompareInfo, and TextInfo. These objects contain the information required for culture-specific operations, such as casing, formatting dates and numbers, and comparing strings.
The String class indirectly uses this class to obtain information about the default culture.
tak for kommentarerne gutter... må nok indrømme at arnes løsning er kønnest. Smid et svar og du får points.
Forresten er det her første gang jeg er blevet rigtigt sur på .net framework... Hvad bilder de sig ind? Jeg mener absolut ikke "å" så havde jeg skrevet "å" ffs!
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.