我想写一个不同种类的课程。原来的版本是:
public static T[] BubbleSort(this T[] array, string sortOrder = "ASC")
{
if (array.Equals(null))
return null;
switch (sortOrder.ToLower())
{
case "asc":
for (var i = 0; i < array.Length; i++)
{
for (var j = 1; j < array.Length - i; j++)
{
if (array[j - 1].CompareTo(array[j]) > 0)
Swap(ref array[j - 1], ref array[j]);
}
}
break;
// etc.
}
在我看来,以这种方式使用字符串(参数 2)并不美观,因此我决定使用枚举:
public enum SortOrder
{
ASC,
DESC
};
而现在,事实上,问题本身:“在哪里写 enum 更好?”
- 在单独的文件中?但是最终用户将不得不随身携带两个文件(是的,我想将代码上传到我的 github 存储库)。
- 课堂内?但是,您必须编写一大行代码:
Sorting<int>.SortOrder.ASC
代替
SortOrder.ASC
- 在类所在的同一个文件中,但在外面?似乎是的,但是..它看起来很漂亮吗?帮助我决定最好的做法是什么?:)
可执行文件(如果枚举位于单独的文件中或与类位于同一文件中,但在类之外):
int[] array = { 2, 1 };
Sorting<Int32> sortingInt32 = new Sorting<Int32>();
sortingInt32.BubbleSort(array, SortOrder.ASC);
可执行文件(枚举在类内):
int[] array = { 2, 1 };
Sorting<Int32> sortingInt32 = new Sorting<Int32>();
sortingInt32.BubbleSort(array, Sorting<int>.SortOrder.ASC); // Вообще не красиво, согласны?
这就是我的班级的样子:
namespace Sorting
{
public class Sorting<T>
where T : IComparable<T>
{
// etc.
}
}
提前致谢!:) PS如果有没有枚举的提案,我会非常感兴趣地考虑它们。
扩展方法看起来挺合理的,枚举可以放在旁边
调用这样的东西