2017-03-04 4 views
0

私は、文字列のリストへのリンクまたは参照を作成する方法を考えています。私の状況は、私はARPテーブルを作成していると私は応答メッセージをキャプチャした私のインターフェイスのIP(文字列として)を保存する必要があります。インターフェイスのIPアドレスはリスト<String>に保存されます。私はしたくない何C#リストの要素をリンクする

ARP_Table_entry(System.Net.IPAddress host_ip_addr, System.Net.NetworkInformation.PhysicalAddress host_mac_addr, int position) 
    { 
     this.host_ip_addr = host_ip_addr; 
     this.host_mac_addr = host_mac_addr; 
     this.time = System.DateTime.Now.Ticks/TimeSpan.TicksPerMillisecond; 
     this.local_inter = ??; 
    } 

は、list.ElementAtようlocal_interのSMTを割り当てることです(0)、なぜなら私は、値(一覧が新しいもの/ wが更新されます)インターフェイス上でIPアドレスを変更するときエントリは変更されません - 私はすべてのエントリ(悪くはありません...)のforeachをしなければならないでしょう

代わりに私は解決策を探しています、その特定のリスト要素をlocal_interパラメータリスト内のIPを変更すると、古いものを含むすべてのエントリが自動的に更新されます。 ARP_Table_entryちょうどその神秘的なリストから値を返すlocal_interプロパティを作るために、あなたがコードを制御することができた場合は

+0

あなたのリストの要素を 'local_inter'にバインドしたいのですか? – dbraillon

+0

はい、それがアイデアです。 – MMMaroko

答えて

0

:あなたには、いくつかの理由のためにフィールドを使用したい場合は

class ARP_Table_entry 
{ 
    List<string> mysteriousList; 
    int pos; 
    public ARP_Table_entry(List<string> mysteriousList, int pos,...) 
    { 
     this.mysteriousList = mysteriousList; 
     this.pos = pos; 
     ... 
    } 

    // TODO: add null check/position verification as needed 
    string local_inter => mysteriousList[pos]; 
    // or {get { return mysteriousList[pos];} for C# 5 and below 
    ... 

また、タイプとしてFunc<string>local_interを使用することができます。

いずれの方法でもリストの置き換えを完全に置き換えることはできません。originalMysteriousList = new List<string>()です。

もう1つの選択肢は、その変更について通知するIPのリスト(ObesrvableCollectionに似ています)を保存し、コレクションの変更時にフィールドを更新することです。

関連する問題