gpt4 book ai didi

C# 8.0 基于输入类型的 switch 表达式

转载 作者:行者123 更新时间:2023-12-03 23:33:44 25 4
gpt4 key购买 nike

是否可以在 C# 8 中根据输入类型创建 switch 表达式

我的输入类如下所示:

public class A1
{
public string Id1 {get;set}
}

public class A2 : A1
{
public string Id2 {get;set}
}

public class A3 : A1
{
public string Id3 {get;set;}
}

我想根据输入类型(A1A2A3)运行不同的方法:

var inputType = input.GetType();
var result = inputType switch
{
inputType as A1 => RunMethod1(input); // wont compile,
inputType as A2 => RunMethod2(input); // just showing idea
inputType as A3 => RunMethod3(input);

}

但它不会工作。任何想法如何根据输入类型创建开关或开关表达式?C

最佳答案

您可以使用模式匹配,首先检查最具体的类型。

GetType 是不必要的:

var result = input switch
{
A2 _ => RunMethod1(input),
A3 _ => RunMethod2(input),
A1 _ => RunMethod3(input)
};

然而,一种更面向对象的方法是在类型本身上定义一个方法:

public class A1
{
public string Id1 { get; set; }
public virtual void Run() { }
}

public class A2 : A1
{
public string Id2 { get; set; }
public override void Run() { }
}

那就简单了:

input.Run();

关于C# 8.0 基于输入类型的 switch 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64331111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com