首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能使用“类型”在C#中创建一个新的变量?

为什么我不能使用“类型”在C#中创建一个新的变量?
EN

Stack Overflow用户
提问于 2010-04-23 20:56:21
回答 7查看 188关注 0票数 1
代码语言:javascript
复制
int number = 5;

Type dynamicType = number.GetType();    // dynamic type is "int"

dynamicType x = (number as dynamicType);
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-04-23 20:59:25

您希望编译器在稍后的代码中如何处理变量x?它对此一无所知。所以它不能解析任何方法调用等等。

基本上,您所追求的是动态类型,它在C# 4中通过“动态”伪类型得到支持:

代码语言:javascript
复制
int number = 5;
dynamic d = number;
// Calls to d are resolved at execution time, so this compiles:
d.ThisWillThrowAtExecutionTime();
票数 9
EN

Stack Overflow用户

发布于 2010-04-23 20:58:25

type是表示有关类型的信息的对象。它不是表示该类型的变量的指示符。

票数 5
EN

Stack Overflow用户

发布于 2010-04-23 21:09:41

代码语言:javascript
复制
SomeObject myObject = new SomeObject();
Type t = myObject.GetType();
SomeObject myOtherObject = (SomeObject)Activator.CreateInstance(t);

这样做的能力可以一直追溯到.Net v1.0。不需要花哨的动态类型或类似的东西。

使用更复杂的构造函数构造对象需要更多的工作,但这是相同的想法。

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

https://stackoverflow.com/questions/2698637

复制
相关文章

相似问题

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