如何设置某个类的私有变量
请问大虾,如何去设置另一个类实例的私有变量,请给出代码.谢谢 问题点数:100、回复次数:6Top
1 楼Mc_axe()回复于 2006-03-04 18:28:02 得分 0
包含私有变量的类加上get和set函数就行了
void setx(int x);
int getx(void);Top
2 楼Macosx(结贴)回复于 2006-03-04 18:31:53 得分 10
FieldInfo fi = typeof(ResourceStrings).GetField(fieldName, BindingFlags.Static | BindingFlags.GetField | BindingFlags.Private);
再使用FieldInfo.SetValue Method 具体看MSDN
Top
3 楼LixingTie(生铁)回复于 2006-03-04 18:36:15 得分 0
帮你写了个例子:
class Class1
{
private int myInt=1;
public int MyInt
{
get
{
return myInt;
}
set
{
myInt = value;
}
}
}
在外部要给myInt赋值就这样:
Class1 A = new Class1();
A.MyInt = 10;
Top
4 楼xxqq0824(赛跑)回复于 2006-03-04 18:55:33 得分 0
既然私有,就没办法在类外访问
只有使用属性,或者索引器。不过,这也只是个wrapTop
5 楼xiaohuasz()回复于 2006-03-04 19:18:33 得分 90
利用反射机制是可以获取和设置非公有成员的
using System;
using System.Reflection;
namespace ConsoleTest2
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Test test=new Test();
FieldInfo fi=typeof(Test).GetField("name",BindingFlags.NonPublic|BindingFlags.SetField|BindingFlags.Instance);
fi.SetValue(test,"ddd");
Console.WriteLine(test.Name);
Console.ReadLine();
}
}
public class Test
{
private string name;
public string Name
{
get
{
return name;
}
set
{
name=value;
}
}
}
}
Top
6 楼mole(鼹鼠)回复于 2006-03-04 19:28:53 得分 0
谢谢xiaohuasz,同时也谢谢Macosx,只是我用的版本上没有bindingflags.private枚举值,我是VS.NET 2003不知你用的是哪个版本?Top




