当前位置: 首页 > 知识库问答 >
问题:

C#如何检查object类型的变量是否可以转换为struct类型?

何章横
2023-03-14

在C#中,如果我有一个object类型的变量,如何检查是否可以将它强制转换为T类型,该类型是值类型?as运算符不起作用,因为T是一个值类型,而o.getType().equals(typeof(T))只检查object是否是类型T的装箱变量,而不检查它是否是可以强制转换为T的变量。

共有2个答案

彭雨华
2023-03-14

你可以试试这些:

object obj = "wer";
typeof(T).IsInstanceOfType(obj)

阅读详细信息:https://docs.microsoft.com/en-us/dotnet/api/system.type.IsInstanceOfType?view=netcore-3.1

object obj = "wer";
obj is T;

阅读详细信息:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/is

object obj = "wer";
typeof(T).IsAssignableFrom(obj.GetType())

阅读详细信息:https://docs.microsoft.com/en-us/dotnet/api/system.type.IsAssignableFrom?view=netcore-3.1

但是,您需要注意IsAssignableFromIsInstanceOfTypeIs之间的区别。点击此处阅读更多信息:

https://stackoverflow.com/A/497001/1666800

https://stackoverflow.com/A/15853224/1666800

端木夕
2023-03-14

试试这个

object obj = "wer";
var isCompatible = typeof(T).IsAssignableFrom(obj.GetType());
 类似资料:
  • 问题内容: 我想知道如何检查变量是否是类(不是实例!)。 我试图使用该函数来执行此操作,但我不知道类将具有哪种类型。 例如,在以下代码中 我试图用 ??? 代替“ ” ,但我意识到这是python中的关键字。 问题答案: 更好的是:使用该功能。

  • 本文向大家介绍如何检查JavaScript变量是否为函数类型?,包括了如何检查JavaScript变量是否为函数类型?的使用技巧和注意事项,需要的朋友参考一下 使用“ typeof”检查它是否是一个函数。您可以尝试运行以下代码来检查JavaScript变量是否为函数类型: 示例

  • 问题内容: 假设我有任何变量,定义如下: 我想要一个检查变量类型是否像函数一样的函数。即: 如何检查变量是否为上述定义的类型? 问题答案: 当然,下划线的方式效率更高,但是当效率不是问题时,最好的检查方法是写在@Paul Rosania链接的下划线页面上。 受下划线启发,最终的isFunction函数如下:

  • 问题 你希望检查一个变量是否为一个数组。 myArray = [] console.log typeof myArray // outputs 'object' “typeof” 运算符为数组输出了一个错误的结果。 解决方案 使用下面的代码: typeIsArray = Array.isArray || ( value ) -> return {}.toString.call( value ) i

  • 我需要一个代码来检查woocommerce产品类型是否不是“变量” 为了检查某物是否是可变产品,我通常使用这个: 但我需要检查它是否不是一个变量产品,所以我认为我应该这样做,但这会导致PHP错误。。。 编辑:我得到以下错误:"致命错误:未捕获错误:调用成员函数is_type()在空" 我以为我的代码有问题。但后来我在其他模板文件中测试了它,它成功了。我想在functions.php中使用我的php

  • 我想检查变量的类型是否为:dict[str,Any]。(python语言) 我尝试过的(不成功的)是这样的: 我得到以下错误消息: TypeError:isinstance()参数2不能是参数化泛型 我该怎么做呢? 谢谢你!

  • # 11.3 类型断言:如何检测和转换接口变量的类型 一个接口类型的变量 varI 中可以包含任何类型的值,必须有一种方式来检测它的 动态 类型,即运行时在变量中存储的值的实际类型。在执行过程中动态类型可能会有所不同,但是它总是可以分配给接口变量本身的类型。通常我们可以使用 类型断言 来测试在某个时刻 varI 是否包含类型 T 的值: v := varI.(T) // unchec

  • 问题内容: 我需要检查值是否为整数。我发现了这一点:如何检查输入值是整数还是浮点数?,但如果我没记错的话,即使 值 本身确实是,变量仍然是类型。 问题答案: 如果输入值可以是整数以外的其他数字形式,请按 如果传递字符串值, 请使用,请确保在转换失败的情况下使用try catch进行错误处理。