C# 如何从静态函数中获取/设置成员变量?
我正在尝试这样做:C# 如何从静态函数中获取/设置成员变量?,c#,.net,static-members,oop,C#,.net,Static Members,Oop,我正在尝试这样做: string strFirstName; string strSurname; public static bool MyItem(string FirstName, string Surname) { strFirstName = FirstName; //won't work obviously strSurname = Surname; } private MyPrivateCode() { string MyPrivateFirstName
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#编码。静态方法只能引用静态成员。让不同数据与类的不同实例关联的唯一方法是使用非静态成员。对于特定类的所有实例,静态成员共享相同的数据 解决方案是将该类的实例传递给另一个类(需要从中访问存储在第一个类中的数据的类),并通过该实例访问所需的数据
如果没有关于您想要完成什么的详细信息,就很难更加具体。静态方法只能引用静态成员。让不同数据与类的不同实例关联的唯一方法是使用非静态成员。对于特定类的所有实例,静态成员共享相同的数据 解决方案是将该类的实例传递给另一个类(需要从中访问存储在第一个类中的数据的类),并通过该实例访问所需的数据
如果没有关于您想要完成的具体内容的更多信息,就很难更加具体。MyItem是静态的。因此,您无法访问对象的实例变量 静态方法只能访问其他静态变量。
其中的逻辑是,在运行时只有1个静态方法,但可能有1000个对象实例,那么您如何知道要使用哪些变量呢
static string strFirstName;
static string strSurname;
public static bool MyItem(string FirstName, string Surname)
{
strFirstName = FirstName; //won't work obviously
strSurname = Surname;
}
MyItem是静态的。因此,您无法访问对象的实例变量 静态方法只能访问其他静态变量。
其中的逻辑是,在运行时只有1个静态方法,但可能有1000个对象实例,那么您如何知道要使用哪些变量呢
static string strFirstName;
static string strSurname;
public static bool MyItem(string FirstName, string Surname)
{
strFirstName = FirstName; //won't work obviously
strSurname = Surname;
}
因为类的每个实例都有自己的
strFirstName
和strSurname
,所以从静态方法内部设置它是没有意义的:不清楚应该设置哪一个
你要么写
static string strFirstName;
static string stdSurname;
否则
public bool MyItem(string FirstName, string Surname)
i、 e.将变量设置为静态(在这种情况下通常没有意义)或将方法设置为非静态(您也可以从“另一个类”调用它,但您需要给出一个实例)
PS:还要注意,
MyItem
必须返回一个布尔值才能正确编译。因为类的每个实例都有自己的strFirstName
和strSurname
,所以从静态方法内部设置它是没有意义的:不清楚应该设置哪一个
你要么写
static string strFirstName;
static string stdSurname;
否则
public bool MyItem(string FirstName, string Surname)
i、 e.将变量设置为静态(在这种情况下通常没有意义)或将方法设置为非静态(您也可以从“另一个类”调用它,但您需要给出一个实例)
PS:还要注意,
MyItem
必须返回一个布尔值才能正确编译。我认为您可能误用了static
。你想完成什么?又是一个“红鲱鱼”的例子!!当然,你在这里寻找一个错误的问题,请在这里展示“真正的”问题/用例,而不是你认为是解决方案的想法!!。我认为您可能误用了静态。你想完成什么?又是一个“红鲱鱼”的例子!!当然,你在这里寻找一个错误的问题,请在这里展示“真正的”问题/用例,而不是你认为是解决方案的想法!!。