吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1082|回复: 11
收起左侧

[求助] 【C#】如何不用if等繁杂语句实现以下功能

[复制链接]
lizf2019 发表于 2023-1-3 22:00
引用代码来自:https://blog.csdn.net/myqq1418/article/details/106938626/
image.png
image.png
目的实现判断文件真实类型(匹配数值对应拓展名)
大致流程:
程序会执行一个函数 根据上图对应的数值判断文件类型
但是总共有十几个数 用if判断很麻烦

求助各位大佬有没有什么好方法

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yuqiu 发表于 2023-1-3 22:10
本帖最后由 yuqiu 于 2023-1-3 22:13 编辑

switch吧 而且我看了下他这个函数CheckTrueFileName没有返回值
Luckyu920 发表于 2023-1-3 22:20
Takitooru 发表于 2023-1-3 22:32
whg118 发表于 2023-1-3 22:50
4楼简便。
xiangzz 发表于 2023-1-4 02:47
枚举,一个if就搞定
天心阁下 发表于 2023-1-4 03:27
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

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
whitehack + 1 + 1 热心回复!
岔路ko + 1 + 1 我很赞同!

查看全部评分

LiuMou666 发表于 2023-1-4 03:47
使用键值对存放枚举,然后使用Dictionary[方法返回值]就是你所要的拓展名了

免费评分

参与人数 1热心值 +1 收起 理由
lizf2019 + 1 热心回复!

查看全部评分

MIAIONE 发表于 2023-1-4 07:35
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@)

官方示例:
[C#] 纯文本查看 复制代码
using System;

[Flags] 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吾爱币 +1 热心值 +1 收起 理由
lizf2019 + 1 + 1 感谢了 我去试试

查看全部评分

不知道改成啥 发表于 2023-1-4 08:34
直接数字强行转枚举不就行了吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 03:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表