是否有一种方法可以使用以下变量类型来解压缩/强制转换
var varType = typeof(int);
var variable = 5;
return (varType)variable;发布于 2019-12-06 20:21:18
在你问题的前提下有个问题。C#是一种静态类型的语言,每个变量的类型必须在编译时知道。没有办法解决这个问题,所以要么指定对象的类型,要么使用dynamic作为类型(除非您正在执行互操作或类似的操作)。
在您的示例中,varType的类型是Type。variable的类型是int。但是,如果在C#中存在所提议的内容,那么这个函数的返回类型是什么?由于varType可以保存任何类型,此函数的返回类型只能在运行时才知道,这在静态类型语言中是不可能的。
也许,如果您提供了一个更具体的示例,说明您认为需要使用这样的东西,那么可能有更好的方法来实现这一点。
发布于 2019-12-06 20:22:00
你的问题需要更多的信息来回答,所以我要补充一些。假设您有一个类似于
int GetSomeInt () {
var i = (object)5; //at this point, i is a boxed int
return (int)i; //we are unboxing I back into an int and returning it
}你能做的另一件事是:
object GetBoxedInt () {
var i = 5;
return (object)i; //here we are returning boxed int back to the caller
}您不能做的是将装箱的任何内容返回给调用方,作为object以外的任何内容;据我所知,无法表达概念上可能是的类型:
Boxed<T> where T: struct和,
“接受值类型实例并将其转换为object"
。
哦..。你在你的问题上说了更多的话。我的回答早于您的第一行代码:var varType = typeof(int);,我假设varType是一个类型名称(比如object、int或MyClass)。然而,我的答案仍然基本成立-除了你的确切问题的答案(编辑后)是*No*。
https://stackoverflow.com/questions/59219634
复制相似问题