gpt4 book ai didi

C#:如何使用类型执行 'as' 操作

转载 作者:太空狗 更新时间:2023-10-29 18:20:43 25 4
gpt4 key购买 nike

我想测试给定的 object 是否可以转换为给定的 Type

在这种情况下,我有一个对象,Type 表示我想将其转换为什么类型:

public function FooBar(..., object data, Type expected) {
...
var unboxedData = ?
if (unboxedData == null) {
....
}
...
}

如何将 data 转换为 type 表示的类型?

基本上,我想这样做:

    var unboxedData = data as Type;

...但是您当然不能将 Typeas 语句一起使用,那我该怎么办?

最佳答案

编辑 2: 我要说没有反射或泛型是不可能的。使用反射,您没有编译时检查,必须使用反射(或 dynamic)进一步调用对象的方法/属性。使用泛型,您不能单独使用 Type 对象到达那里。拿你的选择。是否可以重构您的调用代码以允许泛型?


如果允许,使用通用方法可能更容易处理:

public resultType FooBar<T>(..., object data) {
...
T unboxedData = (T)data;
...
}

编辑:此外,如果包含where T : class 的通用类型约束,则可以使用data as T:

public something FooBar<T>(..., object data)
where T : class
{
...
T unboxedData = data as T;
if (unboxedData == null) {
...
}
...
}

关于C#:如何使用类型执行 'as' 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7504863/

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