我如何使用 bool 标志来决定是否在 MyComparer class 中使用反向?
How can I use a bool flag to decide if to use reverse or not in the MyComparer class?
private class MyComparer : IComparer<string>
{
[DllImport("Shlwapi.dll", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern int StrCmpLogicalW(string psz1, string psz2);
public int Compare(string psz1, string psz2)
{
return -StrCmpLogicalW(psz1, psz2);
}
}
当我在 return 行中添加减号时,它会将数组从最后一项排序到第一项。
如果没有减号,它将对数组进行排序,并保持从第一个到最后一个的顺序。
减号只是让排序也颠倒了数组。
我想以某种方式生成一个布尔值,这样我就可以select是否反转数组。
用法:
Array.Sort(files, new MyComparer());
我希望能够通过设置 true 或 false 来决定是否反转它,例如:
Array.Sort(filesRadar, new MyComparer(false));
如果 false 不反转它 return 没有减号如果 true 加减号。
尝试这样的事情:
bool SortArrayReversed = false;
if(SortArrayReversed == false)
{
Array.Sort(files);
}
else
{
Array.Sort(-files);
}
当您想切换数组的排序方式时,只需更改 SortArrayReversed 值即可。
您可以将 reverse
传递给 构造函数 :
private class MyComparer : IComparer<string>
{
// We may want to get rid of creation (see @aybe comment below)
public static readonly MyComparer Ascending = new MyComparer();
public static readonly MyComparer Descending = new MyComparer(false);
[DllImport("Shlwapi.dll", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern int StrCmpLogicalW(string psz1, string psz2);
public int Compare(string psz1, string psz2)
{
return (Reverse ? -1 : 1) * StrCmpLogicalW(psz1, psz2);
}
public MyComparer(bool reverse) {
Reverse = reverse;
}
public MyComparer()
: MyComparer(false) {}
public bool Reverse {get; private set;}
}
那你可以把
Array.Sort(filesRadar, new MyComparer(false));
甚至
Array.Sort(filesRadar, MyComparer.Ascending);
private class MyComparer : IComparer<string>
{
[DllImport("Shlwapi.dll", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern int StrCmpLogicalW(string psz1, string psz2);
public int Compare(string psz1, string psz2)
{
return -StrCmpLogicalW(psz1, psz2);
}
}
当我在 return 行中添加减号时,它会将数组从最后一项排序到第一项。 如果没有减号,它将对数组进行排序,并保持从第一个到最后一个的顺序。
减号只是让排序也颠倒了数组。
我想以某种方式生成一个布尔值,这样我就可以select是否反转数组。
用法:
Array.Sort(files, new MyComparer());
我希望能够通过设置 true 或 false 来决定是否反转它,例如:
Array.Sort(filesRadar, new MyComparer(false));
如果 false 不反转它 return 没有减号如果 true 加减号。
尝试这样的事情:
bool SortArrayReversed = false;
if(SortArrayReversed == false)
{
Array.Sort(files);
}
else
{
Array.Sort(-files);
}
当您想切换数组的排序方式时,只需更改 SortArrayReversed 值即可。
您可以将 reverse
传递给 构造函数 :
private class MyComparer : IComparer<string>
{
// We may want to get rid of creation (see @aybe comment below)
public static readonly MyComparer Ascending = new MyComparer();
public static readonly MyComparer Descending = new MyComparer(false);
[DllImport("Shlwapi.dll", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern int StrCmpLogicalW(string psz1, string psz2);
public int Compare(string psz1, string psz2)
{
return (Reverse ? -1 : 1) * StrCmpLogicalW(psz1, psz2);
}
public MyComparer(bool reverse) {
Reverse = reverse;
}
public MyComparer()
: MyComparer(false) {}
public bool Reverse {get; private set;}
}
那你可以把
Array.Sort(filesRadar, new MyComparer(false));
甚至
Array.Sort(filesRadar, MyComparer.Ascending);