有关 IsNullOrWhiteSpace() 的快速提示中的“字符串”与“字符串”

2024-03-05

在 Visual Studio 2015 中工作,我对以下效果进行了条件检查:

if(String.IsNullOrWhiteSpace(stringToTest))

我看到了一个 IDE001快速提示或行动 https://msdn.microsoft.com/en-us/library/dn872466.aspx建议“名称可以简化”并建议更正:

if(string.IsNullOrWhiteSpace(stringToTest))

唯一的区别是使用string代替String.


MSDN 示例 https://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace%28v=vs.110%29.aspx使用大写 S 与String, and 这个答案 https://stackoverflow.com/a/7077/1345223澄清“string是 C# 中的别名System.String。所以从技术上来说,没有什么区别。”

需要明确的是,我的问题依赖于其中的答案字符串与字符串 https://stackoverflow.com/q/7074/1345223,但我有一个与那里提出的问题不同的问题。

另外相关的还有这个问题 https://stackoverflow.com/q/32187486/1345223,尽管那里的答案并没有真正解决问题。这个特定问题与我的非常相似,但它被标记为重复另一个SO问题 https://stackoverflow.com/q/7074/1345223我注意到。和有一条评论 https://stackoverflow.com/questions/32187486/why-is-string-considered-a-simplified-version-of-string#comment52260684_32187503OP 表示这是 2015 年才出现的全新行为。


我的问题

我的问题是,如果两个变量类型相等,并且 MS 示例使用大写版本,为什么我看到使用小写版本的快速操作?.NET 4.6 框架和 VS2015 是否进行了更改以鼓励使用小写版本?我似乎不应该看到这种类型的提示。


好吧,正如比我聪明的人所指出的那样,编译级别实际上没有区别,并且像您一样(以及您将看到的 JohnyL ;),我也认为这是一个错误,并找到了导致我回答的原因:

为什么我看到使用小写版本的快速操作?

取自this https://connect.microsoft.com/VisualStudio/feedback/details/1302291/ide-claims-that-changing-string-to-string-is-simplification-c-vs-2015-rc内容丰富(且有趣)的错误讨论,以下是此功能的要点:

  • 它不仅更改了字母大小写,还替换了String键入名称string关键词。两者仅在大小写上有所不同,这一事实纯属巧合。存在字符数不同的情况(Int32 -> int)或者名称完全不同(Single -> float).
  • 小写字母名称更容易输入。
  • 对于真正喜欢一致格式的人string在代码中(它可能取决于您编码所用的其他语言及其约定),此功能有助于更改现有源代码以保持一致。
  • string也是一个具有明确含义的关键字,而String根据上下文的不同,其含义可能会有所不同。

.NET 4.6 框架和 VS2015 是否进行了更改以鼓励使用小写版本?

据我所读,没有。

顺便说一句,您可以在“工具”>“选项”>“文本编辑器”>“C#”>“代码样式”-> 取消选中“在成员访问表达式中首选内部预定义类型关键字”中更改此行为以适合您的偏好。

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

有关 IsNullOrWhiteSpace() 的快速提示中的“字符串”与“字符串” 的相关文章

  • 进程何时获得 SIGABRT(信号 6)?

    C 中进程获得 SIGABRT 的场景有哪些 该信号是否始终来自进程内部 或者该信号可以从一个进程发送到另一个进程吗 有没有办法识别哪个进程正在发送该信号 abort 向调用进程发送SIGABRT信号 就是这样abort 基本上有效 abo
  • ASP.NET MVC 中的经典 ASP (C#)

    我有一个应用程序想要 最终 转换为 ASP NET MVC 我想要进行全面的服务升级 到 ASP NET 但想要使用当前的 ASP 内容来运行当前的功能 这样我就可以在对新框架进行增量升级的同时升级小部分 该站点严重依赖于不太成熟的 VB6
  • asp.net 文本框文本模式数字,仅允许数字

    我只是想知道 ASP NET 中是否有一种方法只允许文本框中的数字textmode number 当我使用这个时
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • Clang 编译器 (x86):80 位长双精度

    我正在尝试在 x86 Windows 平台上使用本机 80 位长双精度 海湾合作委员会选项 mlong double 80 https gcc gnu org onlinedocs gcc x86 Options html似乎不适用于 cl
  • JSON 数组到 C# 列表

    如何将这个简单的 JSON 字符串反序列化为 C 中的列表 on4ThnU7 n71YZYVKD CVfSpM2W 10kQotV 这样 List
  • 如何使用recv()检测客户端是否仍然连接(并且没有挂起)?

    我写了一个多客户端服务器程序C on SuSE Linux 企业服务器 12 3 x86 64 我为每个客户端使用一个线程来接收数据 我的问题是 我使用一个终端来运行服务器 并使用其他几个终端来运行服务器telnet到我的服务器 作为客户端
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 在非活动联合成员上使用“std::addressof”是否定义明确[重复]

    这个问题在这里已经有答案了 下面的代码是尝试实现constexpr的版本offsetof在 C 11 中 它可以在 gcc 7 2 0 和 clang 5 0 0 中编译 这取决于申请std addressof工会非活跃成员的成员 这是明确
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • 通过 NHibernate 进行查询,无需 N+1 - 包含示例

    我有一个 N 1 问题 我不知道如何解决它 可以在这个问题的底部找到完全可重复的样本 因此 如果您愿意 请创建数据库 设置 NUnit 测试和所有附带的类 并尝试在本地消除 N 1 这是我遇到的真实问题的匿名版本 众所周知 这段代码对于帮助
  • 当我“绘制”线条时,如何将点平均分配到 LineRenderer 的宽度曲线?

    我正在使用线条渲染器创建一个 绘图 应用程序 现在我尝试使用线条渲染器上的宽度曲线启用笔压 问题在于 AnimationCurve 的 时间 值 水平轴 从 0 标准化为 1 因此我不能在每次添加位置时都在其末尾添加一个值 除非有一个我不知
  • 将代码拆分为标头/源文件

    我从 Asio 的示例页面中获取了以下代码 class tcp connection public boost enable shared from this
  • 耐用功能是否适合大量活动?

    我有一个场景 需要计算 500k 活动 都是小算盘 由于限制 我只能同时计算 30 个 想象一下下面的简单示例 FunctionName Crawl public static async Task
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop
  • 错误:无效使用不完整类型“类 Move”/未定义对 Move::NONE 的引用

    拜托 我不知道为什么这个简单的代码被拒绝 它给了我 2 个编译错误 请帮帮我 I use 代码 块 20 03 我的编译器是GNU GCC 移动 hpp class Move public Move Move int int public

随机推荐