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

本文关键字:处理 空值 代码 尽可能 | 更新日期: 2023-09-27 18:32:18

我对C#比较陌生,所以请耐心等待!如果字典中没有任何内容,我更愿意编写的代码会抛出空引用,因为它应该这样做。我必须将其转换为字符串,因为字典返回一个对象:

string mainDirectorsInZim = (string)zimOrganisation.OrganizationFields["main_director"];

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

if (zimOrganisation.OrganizationFields.ContainsKey("main_director"))
  {
      mainDirectorsInZim = (string)zimOrganisation.OrganizationFields["main_director"];
  }
  else
  {
     mainDirectorsInZim = null;
  }

我有不少这些东西要写,而且似乎效率低下。有没有更好的方法可以做到这一点?

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

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

但这应该更有效率。

string mainDirectorsInZim = null;
object tmp;
if (zimOrganisation.OrganizationFields.TryGetValue("main_director", out tmp))
{
    mainDirectorsInZim = (string)tmp;
}

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

string mainDirectorsInZim = null;
if (zimOrganisation.OrganizationFields.ContainsKey("main_director"))
{
    mainDirectorsInZim = (string)zimOrganisation.OrganizationFields["main_director"];
}