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