1

選択した値を別のクラスで作成した名前の値と比較する if 条件を作成しようとしています。

// リストに次のコードを入力します。

module.Add(new Modules(code, name, semester, preReq, lSlot, tSlot, info));

// リストボックスに次のコードを入力します。

foreach (object o in module)
        {
            Modules m = (Modules)o;
            selectionBox.Items.Add(m);
            //foreach statement loops for object in module and adds the name to the listbox
        }

// 条件は次のとおりです。

if (selectionBox.SelectedItem.Equals(((Modules)selectionBox.Items[i]).mName))

だから私の質問は、リストボックスで選択された値とモジュール名の値のインデックスを比較できる条件が有効である場合はどうなるでしょうか?

4

1 に答える 1

1

selectionBox の各項目は Module インスタンスです。オブジェクト全体を別の単一のプロパティまたは同じクラスの同じインスタンスと比較することはできません。

テストを分割してみてください

 Modules m = selectionBox.SelectedItem as Modules;
 if(m.nName == (selectionBox.Items[i] as Modules).mName)
     ......

もちろん、selectedItems の mName プロパティを選択ボックス内の任意の [i] アイテムの mName プロパティと比較したい場合は、これは当てはまります。代わりにオブジェクトインスタンスを比較したい場合、比較は

 Modules selected = selectionBox.SelectedItem as Modules;
 Modules aModule = selectionBox.Items[i] as Modules;
 if (selected.Equals(aModule))
    .....

編集:を使用してList<Modules>

List<Modules> modulesList = new List<Modules>();
modulesList.Add(new Modules(code, name, semester, preReq, lSlot, tSlot, info));
.....    
foreach(Modules m in modulesList)
{
     // No cast needed here...
     selectionBox.Items.Add(m);
}
.....
// Find an element....
if(modulesList.Contains(m))
    ....
于 2013-03-13T23:46:28.133 に答える