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

  • ColdfusTion

    ColdfusTion

    3 Aralık 2007
  • Dive In

    Dive In

    17 Temmuz 2013
  • kndx

    kndx

    11 Mart 2006