Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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# 如何在WPF中只将一个对象存储到数组中?_C#_Wpf - Fatal编程技术网

C# 如何在WPF中只将一个对象存储到数组中?

C# 如何在WPF中只将一个对象存储到数组中?,c#,wpf,C#,Wpf,为什么下面的代码不将一个对象存储到数组中?我找不到我的错误。如果数组已经有一个对象,它应该显示另一条消息。 这是C代码。我想XAML代码不是必需的。也许我的错误是空的 TraderInfos[] bossArray = new TraderInfos[1]; public Reset_Register() { InitializeComponent(); } private void CheckP

为什么下面的代码不将一个对象存储到数组中?我找不到我的错误。如果数组已经有一个对象,它应该显示另一条消息。 这是C代码。我想XAML代码不是必需的。也许我的错误是空的

 TraderInfos[] bossArray = new TraderInfos[1];

        public Reset_Register()
        {
            InitializeComponent();
        }




        private void CheckPassword(object sender, RoutedEventArgs e)
        {

            if (bossArray != null)
            {

                if (SecurtyQuestionMother.Text == securityQ_mother_textbox.Text  && SecurityQuestionSchool.Text == securityQ_school_texbox.Text) 
                {

                    foreach (var item in bossArray)
                    {
                        PasswordApears.Text = $"Your password is: {item.Password}";
                    }
                }
                else
                {
                    PasswordApears.Text = "You've not found it";
                }
            }
            else
            {
                MessageBox.Show("There isnt being any data stored yet");
            }
        }

        private void SafeTheEntries(object sender, RoutedEventArgs e)
        {

            if (bossArray == null)

            {
                TraderInfos boss = new TraderInfos()
                {
                    First_Name = first_name_textbox.Text,
                    Last_Name = last_name_textbox.Text,
                    Company_Name = company_name_textbox.Text,
                    Phonenumber = phonenumber_textbox.Text,
                    Password = passwordText.Text,
                    SecurityQuestionMother = securityQ_mother_textbox.Text,
                    SecurityQuestionSchool = securityQ_school_texbox.Text
                };

                bossArray[0] = boss;

                MessageBox.Show($"dear {boss.First_Name}!\nYour data has been saved!");

            }
            else
            {
                MessageBox.Show("You can't enter more one entry!");

            }

        }


您的代码在顶部创建数组,因此,您的数组将不会为null。
bossArray[0]
应该等于
null
,而不是
bossArray

所以检查

if (bossArray[0] != null)


使用这样的数组是没有意义的。只需使用
TraderInfos boss改为检查
如果(boss!=null)
嘿,布雷特,非常感谢!它解决了问题!!但是,当我添加第二个对象时,会出现正确的消息,但会删除第一个对象!因为对于密码恢复,在第二个对象输入后会显示“没有存储任何对象”!请告诉我好吗?
bossArray
已初始化为
new TraderInfo[1]
,因此
bossArray
中只能有一项。您应该重新思考
bossArray
的意图,看看是否存在更好的收集类型(即
列表、
等)。谢谢!!是的,我只希望数组中有一个对象,因此不需要其他集合,我猜!目前的问题只是,为什么它在第二个对象条目之后删除第一个对象,我没有得到您的解释。当您使用
new TraderInfo[1]
时,
1
是数组的大小。数组中不能再容纳任何
TraderInfos
对象。所以当你把
bossArray[0]=boss
,它将覆盖
bossArray[0]
中的条目。这有助于解释吗?如果要避免覆盖,必须保留原始输入信息。如果是这样,我建议创建一个
List bossList=new List()
,而不是
bossArray[0]=boss
,使用
bossList.Add(boss)如果没有理由保留原始输入信息,只需保持代码原样即可。
if (bossArray[0] == null)