小编BOT*_*ine的帖子

C# 有没有更好的方法可以在泛型类型上使用 Switch-Case / If-Else

我目前正在尝试对泛型类型进行一些转换。所以基本的想法是有一个方法,它接受一个泛型类型,并根据传入的类型做不同的事情。

为简单起见,我将只展示float,booldefault

设置看起来像这样(T类本身定义的泛型类型在哪里):

protected T DoStuff(T value)
{
   switch (value) {
      case float floatValue:
         float result = DoFloatStuff(floatValue);
         switch (result) {
            case T output:
               return output;
         }
      case bool boolValue:
         bool result = DoBoolStuff(boolValue);
         switch (result) {
            case T output:
               return output;
         }
      default:
         // return value;
         DoRealGenericStuff(value) // Edited, since I just want to sort out some special cases
   }
}
Run Code Online (Sandbox Code Playgroud)

WhereDoFloatStuffDoBoolStuff只是分别具有 1 个参数和它们类型的返回类型的方法。

如果我不那样做(我尝试了一些 typeof()之前转换),编译器总是抱怨它不能从T …

c# generics casting if-statement switch-statement

0
推荐指数
1
解决办法
580
查看次数

标签 统计

c# ×1

casting ×1

generics ×1

if-statement ×1

switch-statement ×1