0

現在、構造体を含むリストがあり、デリゲートを使用してリスト内の構造体を次のように検索します。

stTest item = myList.Find(delegate(stTest test) 
{
   return ( string.Compare(test.StringA, somestring, true) == 0 );
});

これはアイテムを取得するために完全に機能していますが、実際のアイテムではなく、見つかったアイテムのコピーを返すようです。そのため、アイテムのフィールドを変更すると(私が行う)、更新は有効になりません。リスト内のアイテム。

デリゲートにリスト内のアイテムへの参照を返すようにする方法はありますか?

4

3 に答える 3

0

構造体は常にコピーされるため、リストメンバーをからに変更すると機能structします。class

于 2013-03-21T15:16:18.830 に答える
0
item=myList.FirstOrDefault(entry=> 
     string.Compare(entry.StringA, someString, true)==0);

構造体は参照型ではないことに注意してください。構造体を参照型にボックス化したい場合を除き、それを行うことはできませんが、追加のオーバーヘッドが発生します。

本当に参照を使用したい場合は、構造体をクラスに置き換えることを検討してください。

于 2013-03-21T15:04:16.483 に答える