internal class DumbTable
{
internal const string AC = "V2_AC";
internal const string DG = "V2_DG";
......
}
我的变量名称为 abc ,其值为" AC"。
如何选择名称基于 abc 值的常量字符串的值,即AC
答案 0 :(得分:2)
基于最初的问题,prevoius回答和评论我认为你可以使用这样的字典(散列表):
// Just for simplicity.. in the real world you'd maybe use a property!
Dictionary<string, string> TablenamesDict = new Dictionary(string, string>();
// In your consturctor: Initialize dictionary
TablenamesDict.add('AC','V2_AC');
TablenamesDict.add('DG','V2_DG');
TablenamesDict.add('somekey','somevalue');
...
// You can use the dictionary like this:
string keyName = Getname();
string tableName = TablenamesDict[keyName];
答案 1 :(得分:0)
你在寻找像这样的东西
string val1 = DumbTable.AC;// will give "V2_AC"
string val2 = DumbTable.DG;// will give "V2_DG"
答案 2 :(得分:0)
我认为你想要的是这样的。
abc = Getname();
string tablename = GetTableName(abc);
...
public string GetTableName(string abc)
{
if (abc == "AC")
return DumbTable.AC;
else if (abc == "AG")
return DumbTable.DG;
else
return "";
}
我真的不明白你的问题。
答案 3 :(得分:0)
用Jerry Maguire的话来说,拉菲,&#34;帮助我们帮助你#34;你需要为我们写一个更全面的问题来理解你想要的东西。
我想你可能会说你有一个字符串变量abc
,可以为其分配值"AC"
或值"DG"
。您希望能够使用abc
的值来指示您是从Dumbtable
检索常量AC
还是DC
的值。
有比下面的代码更好的方法,但鉴于我们很少继续下去,你可以尝试:
var dummy = new DumbTable();
string result;
if (abc == "AC")
{
result = dummy.AC;
}
else
{
result = dummy.DG;
}
答案 4 :(得分:0)
还有一个有趣的事情,如反射。也许,这就是你要找的东西。 Reflection允许您编写可以检查代码本身的各个方面的代码。
例如,看看这段代码:
string abc = "AC";
var field = typeof (DumbTable).GetField(abc, BindingFlags.Static | BindingFlags.NonPublic);
if (field == null)
{
// throw Exception, probably
} else {
var value = field.GetValue(null);
}
Type.GetField
方法返回找到字段的FieldInfo
对象,如果找不到找到集null
的字段,则返回BindingFlags
。< / p>
然而,反射是我认为只有在没有其他方法适合时才应使用的东西。有几篇关于它的文章:
Is it good practice to use reflection in your business logic?
Why is the use of reflection in .NET recommended?
在您的情况下,使用switch
语句是最佳方式:
switch (abc)
{
case "AC";
break;
case "DG";
break;
default;
// throw Exception, probably
break;
}