命名基于另一个变量
问题描述:
对不起一个变量,如果这是一个重复的,但我没有找到我所需要的(超过30分钟搜索网页的)命名基于另一个变量
我想与其他变量名创建变量(字符串) 有没有可能在c#中做到这一点? 我是新来的c#。
答
不,你不能,诚实地说,有这样的功能是没有道理的。
如果你愿意,你可以使用字典,在那里你可以有钥匙是串:
Dictionary<string, RectangleShape> shapes = new Dictionary<string, RectangleShape>();
shapes.Add("nameTheKey", new RectangleShape(...));
然后,你可以简单地阅读“变量”像
shapes["nameTheKey"]
答
没有,并没有任何意义。
变量(或更准确地说,本地)名称仅在编译时很重要,并且它们在运行时只有值。如果你添加一个新变量,你还需要添加代码来处理该变量 - 但是如何在没有编译器的情况下编写和使用该代码?
但是,如果你只是想将一些数据存储在一个键值的方式,你可以使用字典:
var data = new Dictionary<string, decimal>();
第一种说法是关键,第二个是值。请注意,所有值都必须是相同的类型,或者是来自某种常见类型的类型。如果你想要更像JavaScript的东西,你可以看看C#的动态特性(dynamic
,ExpandoObject
,...) - 但坦率地说,你会更好地采用C#的成语99%时间。
ExpandoObject
允许你使用这样的代码:
dynamic item = new ExpandoObject();
((IDictionary<string, object>)item)["Message"] = "Hi!";
Console.WriteLine(item.Message);
但同样,这是很少做:)
为什么你会需要在运行时改变一个变量名的东西的最佳方式? – ken2k
你有什么尝试?你打算如何使用这个动态命名的变量?使用某种类型的集合可能会更好。 – maniak1982
我通常使用一个字典为那种事情。如果您希望获得帮助,您需要更好地解释您的用例。 –