Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保留csv字符串和字典的策略<;字符串,字符串>;始终同步_C# - Fatal编程技术网

C# 保留csv字符串和字典的策略<;字符串,字符串>;始终同步

C# 保留csv字符串和字典的策略<;字符串,字符串>;始终同步,c#,C#,如果我有逗号分隔的列表字符串属性: "age:123,name:john,last:doe" 和字典类型的另一个属性 我如何使这两个属性保持同步,以便添加到其中一个的属性将更新另一个属性 例如: obj.CsvString += "address:123 drive"; 或 我怎么能这样做?是否应该有其他方法来添加/删除?您需要实现自己的类,该类要么派生自Dictionary,要么实现IDictionary。然后,您可以重载(实现)自己的添加/更新/删除方法,这些方法既可以存储内存中的版本(

如果我有逗号分隔的列表字符串属性:

"age:123,name:john,last:doe"
和字典类型的另一个属性

我如何使这两个属性保持同步,以便添加到其中一个的属性将更新另一个属性

例如:

obj.CsvString += "address:123 drive";


我怎么能这样做?是否应该有其他方法来添加/删除?

您需要实现自己的类,该类要么派生自Dictionary,要么实现IDictionary。然后,您可以重载(实现)自己的添加/更新/删除方法,这些方法既可以存储内存中的版本(字典),也可以存储CSV。

您需要实现自己的类,该类可以从字典派生,也可以实现IDictionary。然后,您可以重载(实现)您自己的添加/更新/删除方法,这些方法既可以存储内存版本(字典),也可以存储CSV。

您可以实现或将其用作SomeDic。然后,在更改的事件中,更改CSV的备份字段。在set_CsvString setter中,您可以使用基于CSV的新字段替换dictionary字段。

您可以实现或将其用作SomeDic。然后,在更改的事件中,更改CSV的备份字段。在set_CsvString setter中,您可以使用基于CSV的新字段替换dictionary字段。

您必须同时执行这两项操作吗


我只想添加到字典中,并有一个方法将字典作为字符串返回。不需要同步

你必须两者都做吗


我只想添加到字典中,并有一个方法将字典作为字符串返回。不需要同步

您可以创建从IList继承的自己的类,然后创建在添加元素时引发的事件

然后,您可以订阅该事件,当它被引发时,您只需更新另一个列表/字典

public class CustomList : IList<T>
公共类自定义列表:IList

您可以创建从IList继承的自己的类,然后创建一个在添加元素时引发的事件

然后,您可以订阅该事件,当它被引发时,您只需更新另一个列表/字典

public class CustomList : IList<T>
公共类自定义列表:IList

您真的需要写入这两个属性吗?将这对属性封装为一个类型。这样一来,对其中一个属性的所有访问都必须通过类才能保持同步。您真的需要写入这两个属性吗?将这两个属性封装为一个类型。这样一来,对其中任何一个的所有访问都必须通过您的类才能保持同步。@bemused:Argh。。。ToList->ForEach。。。这里有一个更好的方法:
String.Join(“,”,dict.Select(x=>x.Key+”:“+x.Value))
@bemused:Argh。。。ToList->ForEach。。。这里有一个更好的方法:
String.Join(“,”,dict.Select(x=>x.Key+”:“+x.Value))