是否有一种使用类似变量类型的开箱/播出方式
var varType = typeof(int);
var variable = 5;
return (varType)variable;
答案 0 :(得分:2)
在您提出问题的前提下有一个问题。 C#是一种静态类型的语言,每个变量的类型必须在编译时就知道。无法解决这个问题,因此您必须指定对象的类型,或者使用dynamic
作为类型(请,除非您要进行互操作或类似操作,否则请)。
在您的示例中,varType
的类型为Type
。 variable
的类型为int
。但是,如果您提出的内容存在于C#中,那么此函数的返回类型是什么?由于varType
可以保留任何类型,因此该函数的返回类型只能在运行时知道,而在静态类型语言中则不可能。
也许如果您提供了一个更具体的示例,说明您认为需要使用类似的内容,那么可能会有更好的方法来实现。
答案 1 :(得分:1)
您的问题需要更多信息才能回答,因此我将添加一些信息。假设您有
之类的函数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*