Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.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#_Winforms_Variables_Call_Var - Fatal编程技术网

C# 调用单独函数中的变量

C# 调用单独函数中的变量,c#,winforms,variables,call,var,C#,Winforms,Variables,Call,Var,我在检索两个变量的值时遇到一些问题。我从在一个函数中单击按钮时创建的变量开始(private void loadButton\u lick\u 1(object sender,EventArgs e)) 现在我想在另一个函数(public类)中再次调用finalString和dllString变量,以使用在上一步中创建的项,我无法将public类中的项放入上一个函数,因为它停止工作。如何使变量finalString和dllString可以在同一个C#visualform中的多个函数中使用?非常感

我在检索两个变量的值时遇到一些问题。我从在一个函数中单击按钮时创建的变量开始(
private void loadButton\u lick\u 1(object sender,EventArgs e)


现在我想在另一个函数(public类)中再次调用
finalString
dllString
变量,以使用在上一步中创建的项,我无法将public类中的项放入上一个函数,因为它停止工作。如何使变量
finalString
dllString
可以在同一个C#visualform中的多个函数中使用?非常感谢您提供的任何帮助:D

在方法外部声明dllChars,以便可以通过多个方法访问。考虑下面的例子:

private string dllChars;

public main()
{
    foo();
    bar();
}

public void foo()
{
    dllString = new String(stringChars);
}

public void bar()
{
    if (dllChars.Equals("urmom"))
        MessageBox.Show("Hi, mom");
}
如果不需要在类之外访问dllString,则没有必要将其设置为public。出于安全考虑,并遵循面向对象编程和封装设计的原则,将成员私有化通常是一个好主意。但是,如果需要在类外阅读,则更改

private string dllChars;
为此:

public string dllChars
{
    set; private set;
}

如果您确实希望在类之外修改变量,则删除该“private”

,假设
finalString
dllString
位于如下函数中:

public void someFunction()
{
    var finalString = new String(stringChars);
    var dllString = new String(stringChars);
}
要在另一个方法上访问它们,只需在函数外部声明它们:

var finalString;
var dllString;

public void someFunction()
{
    finalString = new String(stringChars);
    dllString = new String(stringChars);
}

无法访问方法之外的局部变量。 在方法中创建的局部变量将在方法结束时立即删除,因为它们是局部变量,因此不再可访问,并且只有在未删除时才会占用空间

访问在不同时间调用的多个方法中的变量的唯一方法是在方法之外创建它们:

public class YourClass()
{
    string finalString, dllString;
    private void loadButton_lick_1(object sender, EventArgs e)
    {
        // Do you stuff and set the values to finalString and dllString
    }

    private void YourSecondMethod()
    {
        // Happily acess finalString and dllString
    }
}

请参见:

将您的
finalString
dllString
声明为全局变量,表示在任何方法范围之外,以便可以通过您的类对其进行访问。@Ephraim我该怎么做?我需要它在每次执行时创建新的文件夹和文件名,但似乎我只能全局保存int值,而不能保存var值。也许我遗漏了什么,我对C#还相当陌生,还有很多东西要学。请将其命名为
string finalString=“”
字符串dllString=“”超出方法范围。我如何让它使用它生成随机生成的文件夹和文件名?我太迷路了,我找不到任何方法让这项工作按我的需要进行
var finalString;
var dllString;

public void someFunction()
{
    finalString = new String(stringChars);
    dllString = new String(stringChars);
}
public class YourClass()
{
    string finalString, dllString;
    private void loadButton_lick_1(object sender, EventArgs e)
    {
        // Do you stuff and set the values to finalString and dllString
    }

    private void YourSecondMethod()
    {
        // Happily acess finalString and dllString
    }
}