我正在尝试做这样的事情:
string strFirstName;
string strSurname;
public static bool MyItem(string FirstName, string Surname)
{
strFirstName = FirstName; //won't work obviously
strSurname = Surname;
}
private MyPrivateCode()
{
string MyPrivateFirstName = strFirstName;
string MyPrivateSurname = strSurname;
}
显然,它不起作用。我需要“MyItem”是公共静态的,因为我需要能够从另一个类访问它。我在C#编码。
答案 0 :(得分:4)
静态方法只能引用静态成员。将不同数据与类的不同实例相关联的唯一方法是使用非静态成员。静态成员共享特定类的所有实例的相同数据。
解决方案是将另一个类(您需要能够访问存储在第一个类中的数据的类)传递给此类的实例,并访问您需要的数据通过那个例子。
如果没有关于你想要完成什么的更多信息,就很难具体化。
答案 1 :(得分:1)
MyItem是静态的。因此,您无法访问对象的实例变量。
静态方法只能访问其他静态变量 这里的逻辑是,在运行时只有一个静态方法,但可能是1000个对象实例,所以你怎么知道要使用谁的变量?
static string strFirstName;
static string strSurname;
public static bool MyItem(string FirstName, string Surname)
{
strFirstName = FirstName; //won't work obviously
strSurname = Surname;
}
答案 2 :(得分:1)
由于该类的每个实例都有自己的strFirstName
和strSurname
,因此从静态方法中设置它是没有意义的:不清楚应该设置哪一个。
你需要写
static string strFirstName;
static string stdSurname;
或者
public bool MyItem(string FirstName, string Surname)
即。使变量变为静态(在这种情况下通常没有意义)或使方法非静态(你也可以从“另一个类”调用它,但你需要给出一个实例)
PS:另请注意,MyItem
必须返回一个布尔值才能正确编译。