gpt4 book ai didi

c# - 如何将抽象类转换为T类型?

转载 作者:行者123 更新时间:2023-12-02 05:10:27 24 4
gpt4 key购买 nike

我有一个抽象类:

abstract class A {
// some stuff
float val = 0;
abstract float Foo();
}

class B1 : A {
override float Foo() {
Console.WriteLine("B1: " + val);
}
}

class B2 : A {
override float Foo() {
Console.WriteLine("B2: " + val);
}
}

我有一个List<A> a我想获得给定类型 T 的第一个项目:

public T GetTypeFromList<T>() {
foreach (var item in a) {
T tmp = item as T; // doesn't compile
if (tmp != null)
return tmp;
}
throw new Exception("Type isn't in list.");
}

有办法吗?
编辑:
它显示:类型参数“T”不能与“as”运算符一起使用 因为它没有类类型约束,也没有“类” 约束

最佳答案

不要使用as来检查类型。使用 is 代替:

if (item is T)
return (T)item;

Here msdn中有关于类型转换的详细解释。

关于c# - 如何将抽象类转换为T类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59512444/

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