Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从静态函数中获取/设置成员变量?_C#_.net_Static Members_Oop - Fatal编程技术网

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
。你想完成什么?又是一个“红鲱鱼”的例子!!当然,你在这里寻找一个错误的问题,请在这里展示“真正的”问题/用例,而不是你认为是解决方案的想法!!。我认为您可能误用了
静态
。你想完成什么?又是一个“红鲱鱼”的例子!!当然,你在这里寻找一个错误的问题,请在这里展示“真正的”问题/用例,而不是你认为是解决方案的想法!!。