2015-07-20 91 views
-8

对不起一个变量,如果这是一个重复的,但我没有找到我所需要的(超过30分钟搜索网页的)命名基于另一个变量

我想与其他变量名创建变量(字符串) 有没有可能在c#中做到这一点? 我是新来的c#。

+8

为什么你会需要在运行时改变一个变量名的东西的最佳方式? – ken2k

+1

你有什么尝试?你打算如何使用这个动态命名的变量?使用某种类型的集合可能会更好。 – maniak1982

+1

我通常使用一个字典为那种事情。如果您希望获得帮助,您需要更好地解释您的用例。 –

回答

5

不,你不能,诚实地说,有这样的功能是没有道理的。

如果你愿意,你可以使用字典,在那里你可以有钥匙是串:

Dictionary<string, RectangleShape> shapes = new Dictionary<string, RectangleShape>(); 
    shapes.Add("nameTheKey", new RectangleShape(...)); 

然后,你可以简单地阅读“变量”像

shapes["nameTheKey"] 
2

没有,并没有任何意义。

变量(或更准确地说,本地)名称仅在编译时很重要,并且它们在运行时只有值。如果你添加一个新变量,你还需要添加代码来处理该变量 - 但是如何在没有编译器的情况下编写和使用该代码?

但是,如果你只是想将一些数据存储在一个键值的方式,你可以使用字典:

var data = new Dictionary<string, decimal>(); 

第一种说法是关键,第二个是值。请注意,所有值都必须是相同的类型,或者是来自某种常见类型的类型。如果你想要更像JavaScript的东西,你可以看看C#的动态特性(dynamicExpandoObject,...) - 但坦率地说,你会更好地采用C#的成语99%时间。

ExpandoObject允许你使用这样的代码:

dynamic item = new ExpandoObject(); 
((IDictionary<string, object>)item)["Message"] = "Hi!"; 

Console.WriteLine(item.Message); 

但同样,这是很少做:)

相关问题