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

  • Bobbylee Budde

    Bobbylee Bud

    13 ŞUBAT 2011
  • LivestrongWoman

    LivestrongWo

    1 Aralık 2011
  • MkElite

    MkElite

    13 NİSAN 2012