gpt4 book ai didi

c# - C# 中的自然排序顺序

转载 作者:IT王子 更新时间:2023-10-29 03:33:38 24 4
gpt4 key购买 nike

谁有好的资源或提供 C# 中 FileInfo 数组的自然顺序排序示例?我在我的排序中实现了 IComparer 接口(interface)。

最佳答案

最简单的方法就是在 Windows 中 P/Invoke 内置函数,并将其用作 IComparer 中的比较函数:

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

Michael Kaplan 有一些 examples of how this function works here ,以及为使 Vista 更直观地工作而进行的更改。此函数的优点是它将具有与其运行的 Windows 版本相同的行为,但这确实意味着它在 Windows 版本之间有所不同,因此您需要考虑这对您来说是否是个问题。

所以一个完整的实现应该是这样的:

[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);
}
}

关于c# - C# 中的自然排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/248603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com