項目がobject
として入力されています
手元のタスクを解決する簡単な方法は、単純に行うことです。したがって、C#は、彼らがAccN
という名前のメンバーを持っていることを知らない。
List<T>
という名前のArrayList
の一般的な型があります。あなたは、派生クラスCurrentAccount
とDepositAccount
のオブジェクトを含めることができ
List<Account> accounts = new List<Account>();
このリストを使用してリストを作成するときにここでは、明示的にリスト項目の種類を指定します。このように使用してください
public static void Remove(List<Account> L, int accnb)
{
foreach(Account acc in L)
{
if(acc.AccN == accnb)
L.Remove(acc);
}
}
注:C#1.0およびC#1.1ではジェネリックはありませんでした。したがって、弱い型指定のコレクションArrayList
が実装されました。ジェネリックはC#2.0で導入されたので、このタイプはほとんど廃止されています。あなたはまた別の問題を抱えていることが
if(((Account)acc).AccN == accnb)
を動作させるために右の型にオブジェクトをキャストする必要がありますArrayList
で
。 foreach
で列挙するコレクションを変更することはできません。これは、foreach
が混乱するためです。代わりにfor-loopを使用し、項目を削除するときに項目のインデックスを先に変更しないように逆順にループするようにしてください。
for (int i = L.Count - 1; i >= 0; i--) {
if (L[i].AccN == accnb) {
L.RemoveAt(i);
}
}
C# Referenceは言う:
foreach
文は、必要な情報を取得するためにコレクションを反復処理するために使用され、これにソースコレクションから項目を追加または削除するために使用することはできません予期しない副作用を避ける。ソースコレクションにアイテムを追加または削除する必要がある場合は、forループを使用します。
ah okk原因リストが機能しない、エラーが発生しました型または名前空間の名前 'List'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?) –
'using System.Collections.Genericあなたのコードの上部にあるか、あなたのためにそれを行う電球を使用してください。 –
それは動作しません:/私はそれの上で答えを試してみましたが、私にとっては新しいです –