私はこの短いウィンドウフォームアプリケーションコードを正しく動作させることができません。クラスのインスタンスを一時的な格納場所として使用して、同じクラス型の配列を生成します。それはボタンとテキストボックスを持っています。ボタンを押すと、テキストが名前のメンバーに保存され、配列に追加されます。 の名前が別の配列メンバーによって使用されている場合は、 "name taken!"というメッセージが表示されます。それを配列に追加しないでください。問題は、この状態チェックが常に真であることです!一方が他方を指しているかのようにクラスの配列要素がポインタのように動作するのはなぜですか? (C#)
if ("Marry" == "Marry")
:私たちは「結婚」と入力した場合 、デバッガは
if (examleArray[i].Name == temp.Name)
と等価であることを示しています。どうしてこれなの?どのように私はそれを修正するのですか?ありがとうございました!
namespace errorexample
{
public partial class Form1 : Form
{
example temp = new example();
example[] examleArray = new example[10];
int examleArrayIndex = 0;
bool NameTaken = false;
public Form1()
{ InitializeComponent(); }
private void button1_Click(object sender, EventArgs e)
{
temp.Name = textBox1.Text;
NameTaken = false;
for (var i = 0; i < (examleArrayIndex); i++)
{
if (examleArray[i].Name == temp.Name)
{
NameTaken = true;
MessageBox.Show("Name taken!");
}
}
if (NameTaken == false)
{
examleArray[examleArrayIndex] = temp;
examleArrayIndex++;
}
}
}
public class example {
public string Name;
}
}
フォーム内に 'example'のインスタンスが1つしかないので、再利用し続けます。 – harold
同じ' example'オブジェクトを指す参照の配列があるため、作成するだけです。 – juharr