SORU
29 EKİM 2008, ÇARŞAMBA


C doğal Sıralama Düzeni#

Herkes iyi bir kaynak var veya C doğal düzenin bir tür bir örnek verin# FileInfo bir dizi için? Benim türlü IComparer arayüz başlatıyorum.

CEVAP
29 EKİM 2008, ÇARŞAMBA


Yapılacak en kolay şey, sadece P Windows yerleşik işlev Çağırmak, ve IComparer içinde: karşılaştırma işlevi olarak kullanabilirsiniz

[DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
private static extern int StrCmpLogicalW(string psz1, string psz2);

Michael Kaplan examples of how this function works here ve Vista için daha rahat çalışması için yapılan değişiklikler. Artı tarafı bu işlevi olduğu alacağım davranış olarak sürüm Windows üzerinde çalışır, ancak bu demek o farklı sürümleri arasında Windows yani düşünün gerekir bu olup olmadığını sorun.

Tam bir uygulama gibi bir şey olacaktır:

[SuppressUnmanagedCodeSecurity]
internal static class SafeNativeMethods
{
    [DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
    public static extern int StrCmpLogicalW(string psz1, string psz2);
}

public sealed class NaturalStringComparer : IComparer<string>
{
    public int Compare(string a, string b)
    {
        return SafeNativeMethods.StrCmpLogicalW(a, b);
    }
}

public sealed class NaturalFileInfoNameComparer : IComparer<FileInfo>
{
    public int Compare(FileInfo a, FileInfo b)
    {
        return SafeNativeMethods.StrCmpLogicalW(a.Name, b.Name);
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ElChakotay Andrich

    ElChakotay A

    10 EKİM 2013
  • Michael Lummio

    Michael Lumm

    25 Mayıs 2007
  • TimMinchinLive

    TimMinchinLi

    23 ŞUBAT 2009