首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用变量类型的C# Cast / Unbox

使用变量类型的C# Cast / Unbox
EN

Stack Overflow用户
提问于 2019-12-06 20:03:32
回答 2查看 217关注 0票数 2

是否有一种方法可以使用以下变量类型来解压缩/强制转换

代码语言:javascript
复制
var varType = typeof(int);
var variable = 5;
return (varType)variable;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-06 20:21:18

在你问题的前提下有个问题。C#是一种静态类型的语言,每个变量的类型必须在编译时知道。没有办法解决这个问题,所以要么指定对象的类型,要么使用dynamic作为类型(除非您正在执行互操作或类似的操作)。

在您的示例中,varType的类型是Typevariable的类型是int。但是,如果在C#中存在所提议的内容,那么这个函数的返回类型是什么?由于varType可以保存任何类型,此函数的返回类型只能在运行时才知道,这在静态类型语言中是不可能的。

也许,如果您提供了一个更具体的示例,说明您认为需要使用这样的东西,那么可能有更好的方法来实现这一点。

票数 2
EN

Stack Overflow用户

发布于 2019-12-06 20:22:00

你的问题需要更多的信息来回答,所以我要补充一些。假设您有一个类似于

代码语言:javascript
复制
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
}

你能做的另一件事是:

代码语言:javascript
复制
object GetBoxedInt () {
    var i = 5;
    return (object)i;        //here we are returning boxed int back to the caller
}

您不能做的是将装箱的任何内容返回给调用方,作为object以外的任何内容;据我所知,无法表达概念上可能是的类型:

代码语言:javascript
复制
Boxed<T> where T: struct

和,

“接受值类型实例并将其转换为object"

  • Unboxing”
  • be总是接受以前装箱的值类型实例,并将其转换回与它开始使用时完全相同的类型“

哦..。你在你的问题上说了更多的话。我的回答早于您的第一行代码:var varType = typeof(int);,我假设varType是一个类型名称(比如objectintMyClass)。然而,我的答案仍然基本成立-除了你的确切问题的答案(编辑后)是*No*

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59219634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档