C#列表的链接元素
我正在考虑一种方法来创建字符串列表的链接或引用。我的情况是,我正在创建ARP表,我需要保存捕获响应消息的接口的IP(作为字符串)。接口的IP地址保存在列表C#列表的链接元素,c#,C#,我正在考虑一种方法来创建字符串列表的链接或引用。我的情况是,我正在创建ARP表,我需要保存捕获响应消息的接口的IP(作为字符串)。接口的IP地址保存在列表中 我不想做的是分配本地\u inter-smt-like list.ElementAt(0),因为当我更改接口上的IP地址时(列表更新为新的),条目中的值不会更改-并且我必须为每个条目执行foreach(不错,但是…) 相反,我正在寻找解决方案,这将“链接”将特定的列表元素设置为local_inter参数-因此在列表中更改IP将导致自动更新包
中
我不想做的是分配本地\u inter-smt-like list.ElementAt(0),因为当我更改接口上的IP地址时(列表更新为新的),条目中的值不会更改-并且我必须为每个条目执行foreach(不错,但是…)
相反,我正在寻找解决方案,这将“链接”将特定的列表元素设置为local_inter参数-因此在列表中更改IP将导致自动更新包含旧条目的每个条目。如果您可以控制
ARP_Table_条目的代码
,只需创建从神秘列表返回值的local_inter
属性即可:
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
...
请注意,这两种方法都不会保护您不将列表全部替换为originalysteriouslist=new list()
另一种选择是使用更复杂的类型来存储IP列表,这些IP列表将通知其更改(类似于
ObesrvableCollection
),并在集合中更改时更新字段。基本上,您希望将列表中的一个元素绑定到您的本地\u inter
?是的,这就是想法。
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
...
class ARP_Table_entry
{
public Func<string> local_inter;
...
public ARP_Table_entry(List<string> mysteriousList, int pos,...)
{
local_inter = () => mysteriousList[pos];
...
}