C# String.IsNullOrEmpty:好还是坏?

2024-01-26

在工作中发生一次我将 String.IsNullOrEmpty 与 Session 变量一起滥用的事件之后,我的一位同事现在拒绝接受我对 String.IsNullOrEmpty 的使用。经过一番研究,显然 MSDN 上列出了 IsNullOrEmpty 的错误(link http://msdn.microsoft.com/en-us/library/system.string.isnullorempty(VS.80).aspx)(阅读底部的注释):

截至 2006 年 4 月 4 日,存在一个错误 (可能在 JIT 中)这使得 当优化时方法失败 打开。已知会影响两者 C# 和 VB。

更多信息可以在这里找到 (link http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=113102)。微软这个 bug 应该是在 Orcas 之后修复的,但不幸的是我的雇主仍然使用 VS2005。但如果问题在 2008 年以后得到解决,那就这样吧。这对我来说没问题。

虽然我的同事用 IsNullOrEmpty 拒绝我的代码对我来说是盲目的无知(IMO),但他当然不能告诉我为什么not除了误用会话变量之外,还可以使用它。我在我们的代码中使用了 IsNullOrEmpty ,没有任何问题。就我个人而言,我发现除了在一个语句中做两件事之外,它更具可读性。

在谷歌上搜索有关该主题的意见后,我发现了一些持赞成/反对立场的网站。以下是我读过的一些有关此内容的网站:

https://blog.rthand.com/post/2006/06/22/1063.aspx https://blog.rthand.com/post/2006/06/22/1063.aspx

http://www.omegacoder.com/?p=105 http://www.omegacoder.com/?p=105

一个站点(http://dotnetperls.com/isnullorempty http://dotnetperls.com/isnullorempty)很好地总结了该方法(恕我直言):

这里我们查看 IsNullOrEmpty 字符串类型的方法,其中 为我们提供了一个良好且相对的 检查是否存在的有效方法 字符串可以保存或使用。然而, 为了性能,可能更好 使用手动空检查。空字符串 还可以通过其他方式进行测试,并且 我的研究表明,检查 长度最快。

假设错误修复已在 VS2008/2010/等中到位(并且正常工作),是否有任何原因not在 VS2005 及更高版本中使用 String.IsNullOrEmpty?我意识到对于这样一个愚蠢的小方法来说,这似乎有点矫枉过正,但我​​想知道幕后是否还有更多的事情发生,以及是否有人有其他解释。


此问题已在 .NET 2.0 sp1 中修复。现在没有理由避免使用它。

如果您使用 .NET 2,无论如何您都应该出于许多其他原因而使用 sp1 - 我认为没有理由为了不再存在的错误而避免这种情况。

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

C# String.IsNullOrEmpty:好还是坏? 的相关文章

  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 如何在非控制台应用程序中查看 cout 输出?

    输出到调试窗口似乎相当繁琐 我在哪里可以找到cout如果我正在编写非控制台信息 则输出 Like double i a b cout lt lt b lt lt endl I want to check out whether b is z
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • 如何在 jQuery 中永久运行 .animate 函数?

    this css left 100px function endless this animate left 100px easing linear duration 5000 complete function this css left
  • 实体框架级联删除 - FOREIGN KEY 约束

    我对以下模型有问题 public class ProjectPage Key public Guid Id get set public Guid HeaderId get set public ProjectPage Header get
  • 如何在 JList 中启用拖放

    我有一个 JList 并希望用户能够使用拖放功能对列表中的元素重新排序 使用我自己的 ListModel 和 ListCellRenderer 如果这有什么不同的话 我需要创建哪些对象 以及如何处理该操作 修改后的 Jan Taccis 答
  • 从 Python rpy2 使用命令行参数调用 R 脚本

    我希望能够使用 rpy2 模块从 python 调用 R 文件 我希望能够将参数传递给这些脚本 这些脚本可以由 R 的 commandArgs 函数解释 所以如果我的 R 脚本 trivial script r 好像 print comma
  • 寻求一种更好的方法从查找表中添加 data.table 中的列

    我想创建一个新专栏key在我的 data table 中 通过公共列与查找表合并index1 index2 然后从这个新的值key柱子 a b c 我想生成 3 个新列 a b c 索引valuedata table 中的列 我的 data
  • Angular 2 HTTP 超时

    我在发布有关 HTTP 超时的自定义错误消息时遇到问题 这是一个简单的例子 return this http get url timeout 5000 new Error Error message 我看到大家都用新错误 错误消息 但我收到
  • WebView中的支付流程(Android)

    我有一个支付网关的网址 我需要在其中输入信用卡号等 我可以使用 WebView 打开此页面并直接在我的应用程序中付款吗 不打开像 Chrome 这样的单独的网络客户端 谷歌对于用户直接在 WebView 中输入信用卡 借记卡信息的应用程序发
  • 在控制台应用程序内以静默方式使用 ADFS 进行身份验证

    我有一个引用 ADAL net 库的 C 控制台应用程序 Microsoft IdentityModel Clients ActiveDirectory 版本 2 19 208020213 控制台应用程序的目的是使用受 ADFS 保护的 H
  • 如何使用 Tkinter 设置网格的位置?

    甚至可以在 Tkinter 中设置网格的绝对位置吗 我正在尝试创建一个如下所示的 GUI 但我可能采用了错误的方式 那么如果可以的话 网格位置如何设置呢 目标图形用户界面 到目前为止 我的 GUI 的结果是这样的 如您所见 我的新联系人需要
  • 对每组的一定比例进行采样,但具有最小约束(使用 dplyr)

    我有 6 个类别 阶层 的总体 我想在每个阶层中取 10 作为样本 这样做我采取 var c rep A 10 rep B 10 rep C 3 rep D 5 E F var value rnorm 30 dat tibble var v
  • 如何使用角度日期管道从数字中获取月份名称

    我想使用 Angular 的日期管道显示包含 本地化 月份名称的下拉列表
  • boost::multi precision::uint128_t sizeof 是 24

    基础数学 128 8 16 的说法不同 我有点失望 想要一些答案 因为从我习惯的情况来看 该符号 type num of bytes t 不仅描述了您可以放入变量的数据量 但是也跨平台固定可变大小 恕我直言 后者更为重要 我究竟做错了什么
  • 在 Node JS 集群之间划分快速路由

    我在 Node JS 应用程序中有大量路由 我正在尝试扩展到多个 CPU 核心 通过 NodeJS 集群 我的计划是让不同的工作人员处理一组不同的express js 路线 例如 api requests handled by Worker
  • 使用Python从gmail发送电子邮件

    我正在尝试通过构建对我有用的程序 脚本来自学如何编程 我正在尝试重新编写我在网上找到的脚本 以使用 python 脚本通过 gmail 发送电子邮件 Source http kutuma blogspot com 2007 08 sendi
  • 错误 TS2304:找不到名称“ImageCapture”且已安装 @types/w3c-image-capture

    我正在使用 Ionic 4 和 Angular 7 开发 PWA 我需要访问网络摄像头 如果存在 然后在画布中渲染 在这个过程中我使用图像捕捉 https developer mozilla org en US docs Web API I
  • 设置驱动器卷标签

    我正在开发一个小型实用程序 我想在其中更改连接到计算机的闪存驱动器上的卷标 我知道 DriveInfo 能够做到这一点 但我不知道如何实现它 如果有人有代码示例 我将非常感激 这是我目前拥有的 DriveInfo allDrives Dri
  • 如何在 ListView 构建器中创建与 flutter 中旁边的标签一致的按钮列表?

    我需要制作这个应用程序 在 flutter 中使用 ListView 显示历史人物列表 到目前为止我已经能够列出历史人物的名字了 我的下一个任务是为名称旁边的每个历史人物制作一个按钮 这会将您带到另一个屏幕 其中包含有关该特定历史人物的信息
  • Python中的成对叉积[重复]

    这个问题在这里已经有答案了 如何获取交叉产品列表pairs来自Python中任意长列表的列表 Example a 1 2 3 b 4 5 6 crossproduct a b 应该产生 1 4 1 5 1 6 您正在寻找itertools
  • Flutter readAsBytesSync 文件读取不完整以进行 base64 编码

    项目清单 我正在尝试通过 HTTP POST 使用 base64 编码将 JPG 图像 由模拟器中的 ImagePicker 捕获 发送到 AWS REST API 但是 readAsBytesSync 操作仅读取图像的 头 部分 我已经测
  • C# String.IsNullOrEmpty:好还是坏?

    在工作中发生一次我将 String IsNullOrEmpty 与 Session 变量一起滥用的事件之后 我的一位同事现在拒绝接受我对 String IsNullOrEmpty 的使用 经过一番研究 显然 MSDN 上列出了 IsNull