字符串作为变量名是否可以在C#中像变量名一样使用字符串?我有一个:Stringx="matrix1_2";Microsoft.VisualBasic.PowerPacks.RectangleShapey=???;???-应该有变量的名称...matrix1_2不,你不能,老实说,拥有这样的功能是没有意义的。如果你需要用键和值动态分配一些数据,你可以使用字典:Dictionaryshapes=newDictionary();shapes.Add("matrix1_2",newRectangleShape(...));然后你可以简单地读取“变量”类shapes["matrix1_2"]没有。如果“matrix1_2”是局部变量,则不能这样做,因为编译完成后该变量甚至可能不存在,如果它实际上是一个实例字段,那么反射可能会有所帮助:objectvalue=obj.GetType().GetField(字段名).GetValue(obj);这不可能。您不能在C#、VB.NET或任何.NET语言中使用动态变量名称。不支持此功能。似乎是个坏主意。尝试使用枚举或您自己的数据类型/类您可以使用反射,但我怀疑在这种情况下您能否实现比使用反射更好的设计。如果您提供更多信息,我们中的一员也许可以为您提供帮助。声明一个字典变量:DictionaryrectangleDictionary=newDictionary();然后,而不是写“matrix1_2=somevalue;”在normallay中,您将编写:rectangleDictionary.add("matrix1_2",somevalue)然后,您将能够使用变量名称:rectangleDictionary["matrix1_2"]=someothervalue;rectangleDictionary["matrix1_2"].someproperty=something;Microsoft.VisualBasic.PowerPacks.RectangleShapey=rectangleDictionary["matrix1_2"];“matrix1_2”是否已经存在?换句话说,当你说y=???您是要访问现有变量还是创建变量?据我所知,没有办法在运行时创建一个新的“命名”实例。但是,您可以检索现有字段的名称并使用System.Reflection选择它们。字符串x="矩阵1_2";Microsoft.VisualBasic.PowerPacks.RectangleShapey;输入type=typeof(MyType);//获取类型指针FieldInfo[]fields=type.GetFields();foreach(varfieldinfields){if(field.Name=="matrix1_2"){y=field;}}上面的MyType是matrix1_2所在类的名称。您可以通过这种方式从动态类型中获取字段值(在Silverlight5项目中使用C#)。输入itemType=item.GetType();尝试{PropertyInfofield=itemType.GetProperty(fieldName);objectval=field.GetValue(item,null);}catch(Exceptionex){//字段不存在,做点别的事}*其中“item”是运行时生成的动态类型(但不一定是),“fieldName”是您要查找的属性名称。以上就是C#学习教程的全部内容:字符串作为变量名。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
