可空类型:在 C# 中检查 null 或零的更好方法

2024-05-24

我正在开展一个项目,我发现我正在很多很多地方检查以下内容:

if(item.Rate == 0 || item.Rate == null) { }

更多的是出于好奇,检查这两种情况的最佳方法是什么?

我添加了一个辅助方法:

public static bool nz(object obj)
{
    var parsedInt = 0;
    var parsed = int.TryParse(obj.ToString(), out parsedInt);
    return IsNull(obj) || (parsed && parsedInt == 0);
}

有没有更好的办法?


I like if ((item.Rate ?? 0) == 0) { }

更新1:

您还可以定义一个扩展方法,例如:

public static bool IsNullOrValue(this double? value, double valueToCheck)
{
    return (value??valueToCheck) == valueToCheck;
}

并像这样使用它:

if(item.IsNullOrValue(0)){}// 但你并没有从中得到太多

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可空类型:在 C# 中检查 null 或零的更好方法 的相关文章

  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 字符串索引和替换

    我今天刚刚遇到这个问题 想知道是否有人知道为什么这个测试可能会失败 取决于文化 目的是检查测试文本是否包含两个相邻的空格 这是根据string IndexOf 即使我告诉字符串替换所有出现的两个相邻空格 经过一些测试似乎 xAD以某种方式导
  • 如何在 iOS 中将 URL 添加到 Safari 的阅读列表?

    在我的 UIWebView 中 我想添加一个选项来将当前页面添加到 Safari 的阅读列表中 我知道这个功能的存在 因为 GMail 在长按链接时提供了它 但我找不到任何有关要使用的 URL 方案的信息 可能重复 如何从 iOS 以编程方
  • 使用 sparql 将 rdf 有序列表从一个图移动到另一个图

    我在 Fuseki 数据集中的 rdf 知识图中有一个列表 我可以用类似的方法获取列表的元素 select webpage where graph
  • HoughLinesP后如何合并线?

    My task is to find coordinates of lines startX startY endX endY and rectangles 4 lines Here is input file 我使用下一个代码 img c
  • 如何在 Visual Studio 2012 中安装 GLUT 和 OpenGL?

    我今天刚安装了Visual Studio 2012 我想知道如何在该平台上安装GLUT和OpenGL OpenGL 应该已经存在 可能会缺少 Freeglut GLUT GLUT 现在已经非常过时并且没有得到积极的支持 所以你当然应该使用
  • 分页当前链接未突出显示

    我遇到了一个奇怪的问题 我当前的分页链接未突出显示 我制作的分页网址如下所示 site com list 50 some value 一切工作正常 但当前视图中的分页链接未突出显示 我检查了CSS 没问题 我猜问题出在库上 这是我的代码 我
  • 从 firebase swift 读取数据

    我正在尝试从 firebase 数据库检索数据 但是当我运行代码时 它没有显示任何内容 但没有显示错误 我从Firebase手册中得到了这段代码 顺便说一句 我很确定路径是正确的 let ref FIRDatabase database r
  • 当安装的包使用 conda 虚拟环境时,如何使 Python 控制台脚本入口点工作?

    问题 从非虚拟环境转移到 conda 虚拟环境会导致控制台脚本入口点无法识别 背景 我最近尝试在我的 Python 项目中使用虚拟环境 在更新 macOS Catalina 导致我的所有 PyCharm 项目显示无效解释器错误后 我决定执行
  • Groovy 中缺少生成器/yield 关键字的解决方法

    想知道是否有一种方法可以使用sql eachRow像生成器一样 在需要 Collection 或 Iterator 的 DSL 上下文中使用它 我想要的用例是流式 JSON 生成 我想要做的事情是这样的 def generator sql
  • 使用条件求 R 中的累积和

    我需要创建一个新变量 其中包含每个 ID 过去三年金额的总和 如果没有三年的数据 则应显示 NA 举个例子 ID YEAR AMOUNT 1 2010 5 1 2011 2 1 2012 4 1 2013 1 1 2014 3 2 2013
  • while 循环中 regex.exec() 赋值的更好解决方案

    这里有更好的解决方案吗 我尽量避免里面的作业while但仍然能够循环匹配并使用捕获的组 var match var CSS URL PATTERN url s s s s gm while match CSS URL PATTERN exe
  • 调用函数时切换“控制转移绕过初始化:”

    当我尝试构建以下开关时 出现 控制转移绕过初始化 错误 switch retrycancel case 4 The user pressed RETRY Enumerate all visible windows and store han
  • 不同的 JDK 更新会产生不同的 Java 字节码吗?

    假设场景 我有一个项目 其源合规性级别指定为 1 5 现在 我使用两种不同的 JDK 编译此项目 首先使用 JDK 6 Update 7 然后使用 JDK 6 Update 20 这两个不同的 JDK 是否会生成不同的 Java 字节代码
  • QWinTaskbarProgress 不会显示

    我使用的是windows7和Qt5 3 0 我在 MainWindow 的构造函数中添加了以下内容 但任务栏上没有显示任何内容 我错过了什么 QWinTaskbarProgress pTaskbarProgress new QWinTask
  • LLVM IR:如何调用另一个 .ll 文件中的函数

    我正在编写 LLVM IR 代码 我可以调用另一个 ll 文件中的函数吗 例如 在 ll文件中 有一个函数foo 我可以在 b ll 中使用这个函数 就像调用 foo 一样吗 如果是这样 我怎样才能包括a ll Thanks 您需要在调用函
  • 使用 prolog 添加另外两次出现

    我有一个清单 a b a a a c c 我需要为每个元素添加两次以上的出现 最终结果应该是这样的 a a a b b b a a a a a c c c c 如果列表中有一个与下一个项目相同的项目 那么它会继续下去 直到出现一个新项目 当
  • 更换电池后广播接收器会导致某些手机上的应用程序崩溃

    每当手机插入电源时 我都会激活我的应用程序 这是我的清单
  • Rails:通过 Ajax 传递参数

    我需要通过 javascript 将参数传递回服务器 目前 我将它们传递给 JavaScript 如下所示 sendParams 然后像这样将它们发回 function sendParams q ajax url mymodel myact
  • Android 全屏对话框片段(如日历应用程序)

    我正在尝试实现如下图所示的全屏对话框 我能够显示全屏对话框 但是当显示对话框时 状态栏颜色变为黑色并且不保留原色深色 这是我的对话片段 public class IconsDialogFragment extends DialogFragm
  • 可空类型:在 C# 中检查 null 或零的更好方法

    我正在开展一个项目 我发现我正在很多很多地方检查以下内容 if item Rate 0 item Rate null 更多的是出于好奇 检查这两种情况的最佳方法是什么 我添加了一个辅助方法 public static bool nz obj