根据另一个变量命名一个变量

本文关键字:变量 一个 另一个 | 更新日期: 2023-09-27 18:03:49

抱歉,如果这是一个重复,但我没有找到我需要的(超过30分钟的搜索网络)

我想用其他变量(字符串)的名称创建变量有可能在c#中做到这一点吗?我是c#新手

根据另一个变量命名一个变量

不,你不能,老实说,有这样一个功能是没有意义的。

如果你愿意,你可以使用字典,你可以让键是一个字符串:

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

那么你可以简单地读"变量",像

shapes["nameTheKey"]

不,这没有任何意义。

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

但是,如果您只是想以键值方式存储一些数据,则可以使用字典:

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

第一个类型参数是键,第二个是值。请注意,所有的值必须具有相同的类型,或者是从某种公共类型派生的类型。

如果你想要更像JavaScript的东西,你可以看看c#的动态特性(dynamic, ExpandoObject,…)——但坦率地说,99%的时候你最好采用c#的习惯用法。

ExpandoObject允许您使用如下代码:

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

但是,这也不是最好的方法:)