0

Customerオブジェクトのリストがあり、各オブジェクトで名前を検索しようとしています。Customerオブジェクトには、Contactオブジェクトを返すプロパティContactDataがあります。そして、Contactオブジェクト内に、名前の文字列を返すメソッドがあります。比較しようとしている名前ですが、Customerオブジェクトに存在しない名前を検索したにもかかわらず、毎回ヒットするため、正しく機能していません。私が使用しているコード:

foreach (Customer name in m_customers)
{
      if (name.ContactData.FullName == "Anna") 
      {
          MessageBox.Show(string.Format("Yes"), "Test!", MessageBoxButtons.OK, MessageBoxIcon.Information); // Just for testing  
      }
}

単純なforループを使用することもテストしましたが、同じ結果が得られます。私は正しいことをしているのかわからないので、助けていただければ幸いです。ありがとう!

4

1 に答える 1

1

これを試してみてください。コード、データベース、またはストアドプロシージャのどこかにあるすべての顧客に対して、「FullName」が何らかの形で「Anna」に設定されている可能性があります。

foreach (Customer name in m_customers) 
{ 
    if(name.ContactData != null) System.Diagnostics.Debug.WriteLine(name.ContactData.FullName);

    if (name.ContactData.FullName == "Anna")  
    { 
        MessageBox.Show(string.Format("Yes"), "Test!", MessageBoxButtons.OK, MessageBoxIcon.Information); // Just for testing   
    } 
} 

その場合は、キーワード「Anna」をグローバル検索して、何が表示されるかを確認してください。

もう1つの可能性は、各顧客で新しいContactDataオブジェクトを作成しておらず、単に変数を再利用していることです。ポインタが使用されているため、これはすべての顧客を同じContactDataオブジェクトで更新している可能性があります。代わりに、各顧客で、代わりに新しいContactDataオブジェクトを作成します。

これらの2つの可能性が役に立たない場合は、トラブルシューティングのためにさらにコードを投稿する必要があります。

于 2012-05-12T11:55:29.663 に答える