【C#】如何不用if等繁杂语句实现以下功能
引用代码来自:https://blog.csdn.net/myqq1418/article/details/106938626/目的:实现判断文件真实类型(匹配数值对应拓展名)
大致流程:
程序会执行一个函数 根据上图对应的数值判断文件类型
但是总共有十几个数 用if判断很麻烦
求助各位大佬有没有什么好方法{:301_997:} 本帖最后由 yuqiu 于 2023-1-3 22:13 编辑
switch吧 而且我看了下他这个函数CheckTrueFileName没有返回值 可以试试switch语句。 c#使用表驱动法代替繁琐的if-else语句和switch case语句
https://blog.csdn.net/DETEREE/article/details/106292154 4楼简便。 枚举,一个if就搞定 string a=CheckTrueFileName();
if(Enum.TryParse(a,true,out FileExtension fileExtension))
{
Console.WriteLine(fileExtension);
}
https://learn.microsoft.com/zh-cn/dotnet/api/system.enum.tryparse 使用键值对存放枚举,然后使用Dictionary[方法返回值]就是你所要的拓展名了
Microsoft Docs Enum.TryParse<TEnum>(String, TEnum) 将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 用于指示转换是否成功的返回值
https://learn.microsoft.com/zh-cn/dotnet/api/system.enum.tryparse?view=net-7.0#system-enum-tryparse-1(system-string-0@)
官方示例:
using System;
enum Colors { None=0, Red = 1, Green = 2, Blue = 4 };
public class Example
{
public static void Main()
{
string[] colorStrings = { "0", "2", "8", "blue", "Blue", "Yellow", "Red, Green" };
foreach (string colorString in colorStrings)
{
Colors colorValue;
if (Enum.TryParse(colorString, out colorValue))
if (Enum.IsDefined(typeof(Colors), colorValue) | colorValue.ToString().Contains(","))
Console.WriteLine("Converted '{0}' to {1}.", colorString, colorValue.ToString());
else
Console.WriteLine("{0} is not an underlying value of the Colors enumeration.", colorString);
else
Console.WriteLine("{0} is not a member of the Colors enumeration.", colorString);
}
}
}
// The example displays the following output:
// Converted '0' to None.
// Converted '2' to Green.
// 8 is not an underlying value of the Colors enumeration.
// blue is not a member of the Colors enumeration.
// Converted 'Blue' to Blue.
// Yellow is not a member of the Colors enumeration.
// Converted 'Red, Green' to Red, Green.
我个人比较喜欢有泛型的, 强类型应该能确定就确定, 一般情况下我不用有type类型参数的相关重载. 直接数字强行转枚举不就行了吗
页:
[1]
2