在尽可能少的代码中处理空值

Tri*_*ene 1 c#

我对C#比较新,所以请耐心等待!如果字典中没有任何内容,我想写的代码会抛出一个空引用.我必须将它作为字符串转换为字典返回一个对象:

string mainDirectorsInZim = (string)zimOrganisation.OrganizationFields["main_director"];
Run Code Online (Sandbox Code Playgroud)

我要编写的代码来解决这个问题?

if (zimOrganisation.OrganizationFields.ContainsKey("main_director"))
  {
      mainDirectorsInZim = (string)zimOrganisation.OrganizationFields["main_director"];
  }
  else
  {
     mainDirectorsInZim = null;
  }
Run Code Online (Sandbox Code Playgroud)

我写这些内容并不是很少,而且似乎效率低下.有一个更好的方法吗?

Gra*_*ICA 6

我试图通过使用该TryGetValue方法稍微减少代码,但正如serhiyb在评论中指出的那样,由于必须将其转换object为a ,它将无法工作string.

但这仍然会稍微有效.

string mainDirectorsInZim = null;
object tmp;

if (zimOrganisation.OrganizationFields.TryGetValue("main_director", out tmp))
{
    mainDirectorsInZim = (string)tmp;
}
Run Code Online (Sandbox Code Playgroud)

OTOH,您可以初始化您的字符串以null开始,并消除该else块,如果您碰巧发现更容易理解,因为它更接近您现有的代码.

string mainDirectorsInZim = null;

if (zimOrganisation.OrganizationFields.ContainsKey("main_director"))
{
    mainDirectorsInZim = (string)zimOrganisation.OrganizationFields["main_director"];
}
Run Code Online (Sandbox Code Playgroud)