Ну, для начала вам не хватает скобок, но я бы написал это так:
if (dict == null)
{
dict = IsolatedStorage.GetDropDowns();
}
return dict["Priority"];
Обратите внимание, что вам, вероятно, потребуется некоторая блокировка, чтобы сделать этот потокобезопасным. На самом деле, почему бы просто не написать это как:
public static Dictionary<string,List<LookupItem>> dict
= IsolatedStorage.GetDropDowns();
для начала? Тогда вы знаете, что он никогда не будет нулевым.
В любом случае, пожалуйста, не используйте вторую идею. Проверка на ничтожность безумно быстра, и в любом случае вы все равно не справитесь с NullReferenceException
вместо KeyNotFoundException
...
Если вы действительно хотите вести себя по-разному в зависимости от того, присутствует или нет ключ, вы должны использовать (при условии, что dict
уже не равен нулю):
List<LookupItem> list;
if (!dict.TryGetValue("Priority", out list))
{
// Deal with the key being missing
}
else
{
return list;
}
Я бы также поставил под сомнение ваше мнение о том, что этот подход должен быть "максимально быстрым" - после того, как вы убедились, что выполняете выборку из WCF только один раз, вы уверены, что действительно производительность горлышко бутылки? Я был бы шокирован, если бы это было так.