-1

如何转换为 C# 中的两种类型之一?

这是我正在尝试做的事情:

public class BaseCl {}
public class Foo : BaseCl {}
public class Bar : BaseCl {}

BaseCl instance;
... some code which puts a value in the `instance`
var specificInstance = (instance as Foo) ?? (instance as Bar);

但我收到一个错误:

操作员 '??' 不能应用于“Foo”和“Bar”类型的操作数 [Assembly-CSharp] csharp(CS0019)

我在这里想念什么?如果 the也是 type或 type如果is ,我希望specificInstance是type 。因为,如果不是,我希望是。FooinstanceFooBarinstanceBarinstanceFoo(instance as Foo)null

4

1 回答 1

3

类型推断的重点是可以从初始化表达式中推断出变量的类型。当初始化表达式应该能够产生两种不同的类型时,如何推断变量的类型?必须在编译时知道变量的类型,因为只有这样你才能知道可以编写什么代码来使用它。如果它可以是任何一种类型,你怎么可能使用该变量编写代码?您缺少的是您尝试做的事情是不可能的。

如果您想处理这两种类型,那么您将需要编写条件代码,即 if 语句,检查一种类型,然后检查另一种类型,并声明每种类型的变量以在两种不同情况下使用。

于 2021-05-22T08:50:18.413 回答