用变量引用字段
本文关键字:字段 引用 变量 | 更新日期: 2023-09-27 18:12:32
我想知道是否可以通过变量引用类字段。像这样:
int variable = 0;
while (variable > 3)
{
class._fieldvariable = something;
i++
}
如果我有字段:_field1, _field2, _field3,我可以遍历它们。
这样做的主要原因是我有一个sql查询,将追加多个记录,我宁愿不做所有的参数多次,而是像这样:
while (i < 4)
}
command.Parameters.AddWithValue("@Alpha1", _alphai01.ToString());
i++
}
让我用_alpha101设置参数3次,_alpha201和_alpha301用于三个不同的查询。
谢谢!
将属性与字段关联,所有属性都具有get/set访问权限。
如果我们真的在谈论三个字段,一个或多或少干净的方法是使用函数 GetField(int index)
,它将返回相应的属性。然后你的代码可以是
class.GetField(i) = something;
数组在更一般的情况下更好(例如,如果字段的数量预计会改变)。
您可以使用invokeMember
调用属性的特定setter:
Object obj; //your instance;
obj.GetType().InvokeMember("Alpha1",
BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty,
Type.DefaultBinder, obj, "ValueForAlpha1");
等于
obj.Alpha1 = "ValueForAlpha1";
http://msdn.microsoft.com/en-US/library/vstudio/66btctbe.aspx 你可以像这样使用反射
如果你有a类
public class A
{
int field1, field2, field3;
}
你可以这样设置这些字段
A obj = new A();
for (int i = 1; i < 4; i++)
{
FieldInfo field = obj.GetType().GetField(String.Format("field{0}", i), BindingFlags.NonPublic | BindingFlags.Instance);
if (null != field)
{
field.SetValue(obj, i);
}
}