我有一个在课堂上暴露的不变的字典。
目前我的代码看起来像
public void sendd(View view)
{
amount=(EditText)findViewById(R.id.amt);
String message1=amount.getText().toString();
Intent i=new Intent(this,MainActivity.class);
i.putExtra(MESSAGE_KEY1,message1);
startActivity(i);
}
我使用了支持字段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...
}
,因为我无法找到创建共享常量字典属性的更好方法。有没有更简洁的方法来管理这个或者我应该公开这个领域?
我的主要问题是初始化_validRevisions
字段本身的方法较短?创建一个内联字典以将其传递到一个字典(恰好是只读)似乎有点......代码味道。是吗?还有更好的方法吗?
答案 0 :(得分:13)
如果您不介意使用IReadOnlyDictionary
代替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;
答案 1 :(得分:7)
ReadOnlyDictionary<TKey, TValue>
只是普通字典的包装器,只有一个constructor来初始化它,需要另一个var message = "Hello your Student" + row[1] + '\n'
+ " Has done a marvelous job in Class" + row[2] + '\n'
+ " His new area to grow involves" + row[3]+ row [4]+ row [5] ;
实例。
所以没有,没有更短的方法。但是我使用static constructor来初始化复杂的静态对象:
Dictionary