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

C# 如何从一个方法到另一个方法获取一个变量参数

C# 如何从一个方法到另一个方法获取一个变量参数,c#,variables,methods,C#,Variables,Methods,Hy 我有以下结构: public partial class SelectSize : Form { public SelectSize(String name) { this.Name = name; InitializeComponent(); } public String Name { get; set; } 我想在下面的方法中使用它: p pr

Hy

我有以下结构:

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

        public String Name
        { get; set; }
我想在下面的方法中使用它:

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为null,则调用了另一个构造函数,或者实际将null传递给了构造函数。检查一下。 当然,它可能同时被覆盖了。从我们的角度来看。由于我们不知道您的所有代码,因此,this.Name=null;可能位于
InstanciateComponent()

好吧,这两个方法可能不会在这个类的同一(相同)实例上执行。比较对象的地址是否相等


顺便说一句,您应该调用
this.Name
而不是
this.Name
并且
InstanciateComponent()
应该是
InstanciateComponent()

名称将为空,除非您设置它。您需要提供一个默认值来获取它。

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

按钮1\u单击\u? 我猜你和Form1.Name有冲突

当你写作时

this.Name = "value";
您试图更改表单1的名称

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
        }

    }
}

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

谢谢你们的帮助,你们的建议让我改进了我的代码并找到了解决方案

初始形式如下所示:

 private void nXNGameToolStripMenuItem_Click(object sender, EventArgs e)
        {

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

        }
现在选择Size Form并单击按钮:

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();

这两个方法在同一个类中吗?是的,它们是。构造函数中的名称来自另一种形式。构造函数正确地接收其参数。在构造函数中接收时,名称不为null,但在button1_Click()中为null:-(名称在SelectSize(字符串名称)构造函数中有一个值。是。我更改了Form1的名称,并在PlayMe表单签名PlayMe f=new PlayMe(int.Parse(noCols.Text),int.Parse中使用此名称作为参数(noCols.Text),名称);