C#中NSMutableDictionary、NSMutableArray、NSArray及NSDictionary的等价类型是什么?
嘿,刚好对这俩语言的集合类型都熟,直接给你列清楚对应关系,都是日常开发里最常用的等价类型:
NSMutableDictionary →
System.Collections.Generic.Dictionary<TKey, TValue>
两者都是可变的键值对集合,支持动态添加、删除、修改键值对。区别是C#的Dictionary是强类型泛型,比OC里弱类型的NSMutableDictionary更安全,不用操心类型转换的问题。NSDictionary →
System.Collections.Generic.IReadOnlyDictionary<TKey, TValue>或只读Dictionary<TKey, TValue>NSDictionary是不可变的键值对集合,C#里的IReadOnlyDictionary接口完美对应这种只读访问的场景;如果需要创建不可变实例,也可以用new Dictionary<TKey, TValue>(...).AsReadOnly()得到一个只读包装。NSMutableArray →
System.Collections.Generic.List<T>
都是动态可变的有序集合,支持随时添加、删除、插入元素。同样C#的List<T>是强类型泛型,编译期就能检查类型错误,比OC的NSMutableArray更靠谱。NSArray →
System.Collections.Generic.IReadOnlyList<T>或只读List<T>NSArray是不可变的有序集合,C#里的IReadOnlyList提供只读的元素访问和遍历能力;也可以通过new List<T>(...).AsReadOnly()生成对应的只读集合实例。
小补充:C#的泛型集合都是强类型设计,不像Objective-C的集合默认存储id类型,所以使用时必须指定具体的类型参数(比如Dictionary<string, int>、List<MyClass>),这在类型安全上是很大的优势~
内容的提问来源于stack exchange,提问作者xam

