Tob*_*oby 13 c# dictionary c#-6.0
我有一个在课堂上暴露的不变的字典.
目前我的代码看起来像
using System.Collections.Generic;
using System.Collections.ObjectModel;
public class FooClass
{
private static ReadOnlyDictionary<string, byte> _validRevisions
= new ReadOnlyDictionary<string, byte>(
new Dictionary<string, byte>() {
{ "1.0", 0x00 },
{ "1.1", 0x01 },
{ "1.2", 0x02 },
{ "1.3", 0x03 }
} );
public static ReadOnlyDictionary<string, byte> ValidRevisions => _validRevisions;
// other FooClass contents...
}
Run Code Online (Sandbox Code Playgroud)
我已经使用了支持字段,_validRevisions因为我无法找到创建共享常量字典属性的更好方法.是否有更简洁的方法来管理这个或者我应该让这个领域公开?
我的主要问题是有一个较短的方法来初始化_validRevisions字段本身?创建一个内联字典以将其传递到一个字典(恰好是只读)似乎有点......代码味道.是吗?有没有更好的办法?
编辑:关于ROD的另一件事我刚才注意到,没有方法支持检查它是否包含给定值...是否有与之相关的原因'只读 - 是什么?
SO *_*ood 13
如果你不介意IReadOnlyDictionary代替a ReadOnlyDictionary,你可以使用它,因为Dictionary实现IReadOnlyDictionary:
private static IReadOnlyDictionary<string, byte> _validRevisions
= new Dictionary<string, byte>
{
{ "1.0", 0x00 },
{ "1.1", 0x01 },
{ "1.2", 0x02 },
{ "1.3", 0x03 }
};
public static IReadOnlyDictionary<string, byte> ValidRevisions => _validRevisions;
Run Code Online (Sandbox Code Playgroud)
的ReadOnlyDictionary<TKey,?TValue>是就在一个正常的字典的包装,并且只有一个构造函数初始化它这需要另一个Dictionary实例.
所以不,没有更短的方式.但我会使用静态构造函数初始化复杂的静态对象:
private static ReadOnlyDictionary<string, byte> _validRevisions;
static FooClass()
{
IDictionary<string, byte> dict = new Dictionary<string, byte>() {
{ "1.0", 0x00 },
{ "1.1", 0x01 },
{ "1.2", 0x02 },
{ "1.3", 0x03 }
};
_validRevisions = new ReadOnlyDictionary<string, byte>(dict);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10302 次 |
| 最近记录: |