下面是一个场景...

if (entry.Properties["something"].Value != null)
  attribs.something = entry.Properties["something"].Value.ToString();

虽然有效且工作正常,但在我看来这很难看.如果我在执行ToString()之前没有判断null,那么如果属性为null,它就会抛出一个异常.有没有更好的方法来处理这种情况?

非常感谢!

推荐答案

8年后更新(哇!)要覆盖c# 6's null-conditional operator:

var value = maybeNull?.ToString() ?? String.Empty;

其他方法:

object defaultValue = "default";
attribs.something = (entry.Properties["something"].Value ?? defaultValue).ToString()

我也用过这个,虽然不是很聪明,但很方便:

public static string ToSafeString(this object obj)
{
    return (obj ?? string.Empty).ToString();
}

.net相关问答推荐

为什么.Net 8.0.100是预览版?

升级到.NET8后,SignalR(在坞站容器上)网关损坏

从容器化客户端应用程序连接到 OPC-UA 服务器

如何手动注入依赖注入

为什么解码后的字节数组与原始字节数组不同?

MassTransit RespondAsync 无法返回空值

Erlang 的让它崩溃的哲学 - 适用于其他地方吗?

如何摆脱 VS2008 中的目标程序集不包含服务类型错误消息?

C# 是否(或将)包含用于副作用验证的功能?

如何将 NuGet 与 Visual C# Express 一起使用?

Convert.ToBoolean 和 Boolean.Parse 不接受 0 和 1

软件包版本始终为 1.0.0,带有 dotnet pack

react 式扩展使用的好例子

如何允许程序集(单元测试)访问另一个程序集的内部属性?

使用语句与最终try

.NET 配置文件 configSource 在应用程序目录文件夹之外

我应该绑定到 ICollectionView 还是 ObservableCollection

Microsoft.Bcl.Build NuGet 包有什么作用?

如何修复 .NET Windows 应用程序在启动时崩溃并出现异常代码:0xE0434352?

没有科学记数法的双精度字符串转换