首页 > 解决方案 > 如果不为空,是否可以使用空合并来分配属性?

问题描述

我正在尝试做某事

如果该对象不为空,我试图在该对象上分配属性。但是标准形式的非空调用不适用于这样的赋值

socket?.Blocking = false

如果可能的话,我想做的是缩短这个:

if(socket != null) socket.Blocking = false

标签: c#linqnull-coalescing-operator

解决方案


我认为唯一的方法是使用扩展方法,所以你可以写:

socket?.SetBlocking(false);  

您可以像这样创建扩展方法:

public static class SocketExtensions
{
    public static void SetBlocking(this Socket socket, bool blocking)
    {
        if (socket != null) socket.Blocking = blocking;
    }
}

推荐阅读