public class Names
{
private string _name1 = "";
private string _name2 = "";
private string _name3 = "";
public string Name1
{
get { return _name1; }
set { _name1 = value; }
}
public string Name2
{
get { return _name2; }
set { _name2 = value; }
}
public string Name3
{
get { return _name3; }
set { _name3 = value; }
}
}
collection Names = new Names();
我有一长串文字(longString)。如果位置10的文本是2,那么我需要为两个名称设置值:Name1和Name2。我的变量属于我已经实现过的类。所以我需要动态设置动态数量的变量值。如何调用变量并动态设置值?基本上是这样的:
for (int i = 1; i <= collection.Count(); i++)
{
col.Name + i = longString.Substring(11, 4);
}
答案 0 :(得分:1)
试试这个:
public class Names
{
public string Name1 { get; set; }
public string Name2 { get; set; }
public string Name3 { get; set; }
}
for (int i = 1; i <= collection.Count(); i++)
{
var col = collection.ElementAt(i);
col.GetType().GetProperty("Name + i").SetValue(col, longString.Substring(11, 4), null);
}
Name1,Name2和Name3是自动实现的属性。我们使用反射按名称获取属性并设置其值。
答案 1 :(得分:1)
比使用反射更快:
public class Names
{
private string[] _names = {"", "", ""};
public string[] Names { get {return _names; } } // ReadOnlyCollection?
public string Name1
{
get { return _names[0]; }
set { _names[0] = value; }
}
}