これは、enum値(辞書に保持されている)に関連付けられた文字列を返すメソッドの2つのバリアントです。最初のバリアントは低速ですが、スレッドセーフです。2番目のバリアントは高速ですが、スレッドセーフかどうかはわかりません。初め:
string GetStringForEnum (SomeEnum e)
{
string str = null;
lock (someDictionary) //someDictionary is not used anywhere else (only in this method)
{ if (!someDictionary (e, out str)) { someDictionary.Add (e, "somehowCreatedString"); }
return str;
}
2番目のバリアント:
string GetStringForEnum (SomeEnum e)
{
string str = null;
if (!someDictionary (e, out str))
{
lock (someDictionary) //someDictionary is not used anywhere else (only in this method)
{ if (!someDictionary (e, out str)) { someDictionary.Add (e, "somehowCreatedString"); }
}
return str;
}
2番目のバリアントは毎回「ロック」で使用されるわけではありませんが、スレッドセーフかどうか。