我如何从一个方法获得一个变量参数到另一个方法

时间:2014-04-06 16:23:08

标签: c# variables methods

Hy,

我有以下构造函数:

 public partial class SelectSize : Form
    {
        public SelectSize(String name)
        {
            this.Name = name;
            InitializeComponent();
        }

        public String Name
        { get; set; }

我想让Name在以下方法中使用它:

p private void button1_Click(object sender, EventArgs e)
    {

        if (((int.Parse(noRows.Text) % 2) == 0) && (((int.Parse(noCols.Text) % 2) == 0)) && ((int.Parse(noRows.Text) ==
            int.Parse(noCols.Text))) && ((int.Parse(noRows.Text) > 6) && ((int.Parse(noRows.Text) > 6))))
        {
            //String name = this.Name;
            PlayMe f = new PlayMe(int.Parse(noCols.Text), int.Parse(noCols.Text), Name);
            this.Hide();
            f.ShowDialog();
            this.Close();

但我得到Name的空引用。

我如何将一个变量转移到另一个方法?

诚恳,

5 个答案:

答案 0 :(得分:0)

如果this.Name为null,则调用另一个构造函数,或者实际将null传递给构造函数。检查一下。 当然,它可能在此期间被覆盖。例如。从我们的角度来看。因为我们不知道你的所有代码,this.Name = null;可能在InstanciateComponent()

嗯,可能会发生这两个方法都没有在这个类的相同(相同)实例上执行。比较ojbjects'地址,如果他们真的是平等的。

顺便说一句,您应该致电this.Name而不是this.nameInstanciateComponent()应该是instanciateComponent()

答案 1 :(得分:0)

除非您设置名称,否则名称将为null。你需要给出一个默认值来获得它。

答案 2 :(得分:0)

当然它将是空引用,因为你没有初始化它,你将如何设置名称的值?

答案 3 :(得分:0)

_button1_Click_? 我猜你与Form1.Name

发生冲突

写作时

this.Name = "value";

您尝试更改Form1的名称

UPD:

试试这个:

namespace test
{
    public partial class SelectSize : Form
    {
        public SelectSize(String name)
        {

            InitializeComponent();
            this.Name = name;
        }

        public String Name
        { get; set; }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(this.Name); // It must show a string from SelectSize's constructor
        }

    }
}

答案 4 :(得分:0)

我现在不知道上面的代码不起作用的原因。

谢谢大家的帮助,您的好建议让我改进了我的代码并找到了解决方案。

初始表格看起来如下:

 private void nXNGameToolStripMenuItem_Click(object sender, EventArgs e)
        {

            SelectSize ss = new SelectSize(this);
            ss.ShowDialog();

        }

现在SelectSize表单和button_Click是:

public partial class SelectSize : Form
    {
        MainWin f1;
        public SelectSize(MainWin f1)
        {
            this.f1 = f1;
            InitializeComponent();
        }

        public String Name
        { get; set; }

        private void button1_Click(object sender, EventArgs e)
        {

            if (((int.Parse(noRows.Text) % 2) == 0) && (((int.Parse(noCols.Text) % 2) == 0)) && ((int.Parse(noRows.Text) ==
                int.Parse(noCols.Text))) && ((int.Parse(noRows.Text) > 6) && ((int.Parse(noRows.Text) > 6))))
            {
                //String name = this.Name;
                PlayMe f = new PlayMe(int.Parse(noCols.Text), int.Parse(noCols.Text), f1.Name);
                this.Hide();
                f.ShowDialog();
                this.Close();