gpt4 book ai didi

c# - 通过反射检测可空类型

转载 作者:IT王子 更新时间:2023-10-29 04:28:51 26 4
gpt4 key购买 nike

令人惊讶的是,以下代码未能通过断言:

int? wtf = 0;
Assert.IsType<Nullable<int>>(wtf);

出于好奇,您如何确定给定实例是否为 Nullable<> 对象?

最佳答案

首先,Nullable<T>是一个结构,所以没有这样的对象。你不能调用 GetType() ,因为这会将值装箱(此时您要么得到 null 并因此出现异常,要么装箱的不可为 null 的值因此不是您想要的类型)。

(拳击是什么搞砸了你的断言 - 我会假设 IsType 接受 object 。)

虽然您可以使用类型推断来获取变量的类型作为类型参数:

public bool IsNullable<T>(T value)
{
return Nullable.GetUnderlyingType(typeof(T)) != null;
}

当您像您的示例那样在编译时知道确切的类型时,这并不是一个很大的用处,但它对泛型很有用。 (当然,还有其他实现方式。)

你的真实生活情况是怎样的?我假设这不是这样的断言,因为您在编译时就知道这个问题的答案。

关于c# - 通过反射检测可空类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6026824/

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