C# 如何正确操作变量

C# 如何正确操作变量,c#,C#,因此,我尝试创建一个字符串变量,其中包含一些文本和一个从文本框中获取数据的变量: string var1, var2; var1 = txt1.text; var2 = "some text" + var1 + "some text"; 当我在button事件中尝试它时,这并不难,但是var2将在我的程序中经常使用,它里面有很多文本。如果可能的话,我希望尽量减少在每个需要的事件上反复声明变量。我可以想象,如果发生这种情况会更容易: st

因此,我尝试创建一个字符串变量,其中包含一些文本和一个从文本框中获取数据的变量:

        string var1, var2;

        var1 = txt1.text;
        var2 = "some text" + var1 + "some text";
当我在button事件中尝试它时,这并不难,但是var2将在我的程序中经常使用,它里面有很多文本。如果可能的话,我希望尽量减少在每个需要的事件上反复声明变量。我可以想象,如果发生这种情况会更容易:

    string var1 = TextBox.Text;
    string var2 = "a lot of text" + var1 + "a lot of text";

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        rtextbox.Text = "a lot of text" + var2;
    } 
var2将被用作签名,因此我需要多次访问它。如果有更简单的方法,我愿意接受建议

当使用上面的代码声明变量时,我没有得到文本框的intellisense,所以我得到了一个错误。我需要帮助,以便能够像上面所示的那样声明变量。我正在使用vs2010。如果使用更高版本会有所帮助,那么我会试试


我只接触了c#编程的表面,因此您看到的任何可能有损编程的内容都不是这样的。

您可以在一个地方声明变量,如下所示:

public static string var1, var2;

然后您可以将它与classname.var1一起使用,其中classname是您声明var1的类。

类似于您想要的:

不推荐使用

public static class GlobalVariables{
   public static string Var2 {get;set;}
}

我假设当您更改文本框中的值并随后调用
var2
时,您希望看到新值。您可以使用函数返回它,例如

private string GetFormattedTextBoxValue()
{
  string var1 = TextBox.Text;
  string var2 = "a lot of text" + var1 + "a lot of text";
  return var2;
}

private void button1_Click(object sender, EventArgs e)
{
    rtextbox.Text = "a lot of text" + GetFormattedTextBoxValue();
} 
或者,如果要重用逻辑,可以在文本框中传递:

private string GetFormattedTextBoxValue(System.Windows.Forms.TextBox textbox)
{
  string var1 = textbox.Text;
  string var2 = "a lot of text" + var1 + "a lot of text";
  return var2;
}

private void button1_Click(object sender, EventArgs e)
{
    rtextbox.Text = "a lot of text" + GetFormattedTextBoxValue(TextBox1);
} 
或者,如果它总是同一个文本框,您可以将其设置为属性,而不需要括号

private string FormattedTextBoxValue
{
  get
  {
    string var1 = TextBox.Text;
    string var2 = "a lot of text" + var1 + "a lot of text";
    return var2;
  }
}

private void button1_Click(object sender, EventArgs e)
{
    rtextbox.Text = "a lot of text" + FormattedTextBoxValue;
} 
然后你可以去掉临时变量:

private string FormattedTextBoxValue
{
  get
  {
    return "a lot of text" + TextBox.Text + "a lot of text";
  }
}

private void button1_Click(object sender, EventArgs e)
{
    rtextbox.Text = "a lot of text" + FormattedTextBoxValue;
} 

您的问题并不清楚您是希望在所有表单中使用Var2还是在单个表单中使用它。如果您希望在所有表单中使用它,那么最好像这样声明静态类

static class GlobalClass
{
    private static string var2 = "";

    public static string Var2
    {
        get { return var2; }
        set { var2 = value; }
    }
}
GlobalClass.Var2 = "any string value";
像这样使用它

static class GlobalClass
{
    private static string var2 = "";

    public static string Var2
    {
        get { return var2; }
        set { var2 = value; }
    }
}
GlobalClass.Var2 = "any string value";

“我读到c#在全局变量方面不是很友好。”-你是说“c#开发者倾向于不使用全局变量,因为全局状态很难管理、测试和推理”?老实说,你的整个问题都很难理解……基本上,你已经在问题中写下了问题和答案,你似乎对此感到困惑。显然,你在抱怨……)当我在声明变量时使用上述代码时,我得到一个错误。同样,当以这种方式声明时,文本框的IntelliSense不会出现。如果我的问题不清楚或看起来像是胡扯,我道歉。谢谢你的建议,什里沙。我会检查一下,让你知道会发生什么。谢谢你的建议。。我会检查这一点,并让你知道。测试和工作。这是一本关于如何按照我的要求去做的完整指南。谢谢CompuChip,现在我对函数有了更好的理解。我来试一试。。我试过这个后会回来的。