c# - 如果不为空,是否可以使用空合并来分配属性?
问题描述
我正在尝试做某事
如果该对象不为空,我试图在该对象上分配属性。但是标准形式的非空调用不适用于这样的赋值
socket?.Blocking = false
如果可能的话,我想做的是缩短这个:
if(socket != null) socket.Blocking = false
解决方案
我认为唯一的方法是使用扩展方法,所以你可以写:
socket?.SetBlocking(false);
您可以像这样创建扩展方法:
public static class SocketExtensions
{
public static void SetBlocking(this Socket socket, bool blocking)
{
if (socket != null) socket.Blocking = blocking;
}
}
推荐阅读
- c# - 模型抛出 System.InvalidCastException 上的 IDictionary 属性
- python - 使用 for 循环的多个水平堆积条形图
- python - 将我的代码中的结果打印到 .txt 不再起作用
- ruby-on-rails - 如何修复rails模型中的“SystemStackError(堆栈级别太深)”
- sql - Oracle 12c:ORDER BY 排序工作,除了回退机制
- python - 部署天蓝色函数(python)时找不到文件错误
- matplotlib - 使用 seaborn 的子图
- ionic4 - 在底部弹出
- gitlab - Gitlab CI / CD:运行者尝试克隆项目时未经授权
- .net - 在 Azure Devops 的 linux 映像中构建 .NET Core 项目时出现 MissingMethodException