- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
有点学术性的问题,但我想更深入地理解框架设计。
所以我们有 String.IsNullOrEmpty(MyString)
而且我们可以编写一个扩展方法来启用myString.IsNullOrEmpty()
,尽管这可以说不是最好的主意。请参阅:Is extending String class with IsNullOrEmpty confusing? .
所以我的问题是,为什么 MS 不将此功能编写为 .Net 框架的一部分?有一些性能考虑吗?更一般地说,为什么任何方法或属性被视为有值(value)的足以构建为可通过 String 对象访问的方法或属性不能作为任何字符串类型对象的成员使用?
最佳答案
静态方法 String.IsNullOrEmpty
是在 .NET Framework 2.0 版中引入的。 .NET Framework 3.5 版中引入了扩展方法以及 LINQ。所以微软在引入IsNullOrEmpty
的时候并没有这个选项。
当然,IsNullOrEmpty
不能是 String
的实例方法,因为您不能在 null
的引用上调用方法。但是,您可以在此类引用上调用扩展方法,因为扩展方法语法只是静态方法调用的语法糖。
让我们假设 IsNullOrEmpty
是一个扩展方法。然后你可以这样调用它:
string s = null;
bool result = s.IsNullOrEmpty();
在评论中,有人假装此调用会抛出 NullReferenceException
。扩展方法将像这样声明:
public static class StringExtensions
{
public static bool IsNullOrEmpty(this string s)
{
return s == null || s.Length == 0;
}
}
...并像这样使用...
string s = null;
bool result = s.IsNullOrEmpty();
... 这只是...的语法糖
string s = null;
bool result = StringExtensions.IsNullOrEmpty(s);
... 因此,不会抛出异常。这样做是否是个好主意是另一个问题(参见 answer provided by usr below)。
关于c# - 为什么 myString.IsNullOrEmpty() 没有内置到 .Net 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14196593/
这个问题在这里已经有了答案: What is the difference between String and string in C#? (65 个答案) 关闭 1 年前。 过去 3 天我一直在
有人可以向我解释为什么在 .NET 中我会编写 String.IsNullOrEmpty(str) 而不是 str.IsNullOrEmpty() 吗?一定有一个合乎逻辑的原因,但我不知道。 这听起来
.NET 库有 String.IsNullOrEmpty(value As String) . 我可以创造更舒适.IsNullOrEmpty()通过简单的扩展方法: Function IsNullO
多年来我一直在写 String.IsNullOrEmpty,在 Visual Studio 2015 中,IDE 建议将其重构为 string.IsNullEmpty,为什么?你会怎么做? 我很清楚
protected void EditButton_Click(object sender, EventArgs e) { TextBox tdcd = (TextBox)Fo
在HTML中存在 required 属性,强制用户在提交之前输入某个日期。但用户只能输入空格。是否有属性在回发之前检查键入的内容是否为空格。需要属性,其工作方式类似于 c# 中的 string.IsN
IsNullOrEmpty 与字符串一起使用以检查字符串是否为 null 或空。是否有一个对象的等价物来查看任何对象是否为空?我想我们可以做到 obj1 != null 但不确定是否有其他方法
首先,我想我知道发生了什么,但我想我会在这里提出这个问题进行一些讨论,看看是否有人对此有与我的想法不同的“答案”。因为,这对我来说完全没有意义。 我发现,在为异常创建错误日志时,我这样做了,但它不起作
我正在尝试将一个 combobox.selectedValue 设置为一个有效的字符串,但是当它的 nullorempty 时它会出错。我尝试了以下代码无济于事: if (string
我正在尝试创建一个方法来检查 null/nil/空字符串,并且我试图让它作为一个类别工作,但没有成功。 我正在使用此代码,基于 this topic 中的答案: @implementation NSS
我正在查看我用 C# 编写的一段代码: if(string.IsNullOrEmpty(param1) && string.IsNullOrEmpty(param2) && string.IsNull
这两种检查字符串的方式有什么区别吗? if(!string.IsNullOrEmpty(myString)) { //Do something } 和 if(myString != null &&
如果 string.Empty != null 为什么要创建 string.IsNullOrEmpty()? 我只想说: 如果 null 和 string.Empty 彼此不同。 为什么 string
当试图确定一个字符串是否为 null 或空时,我通常已经有了该字符串。这就是为什么我希望像 String.IsNullOrEmpty() 这样的实用函数可以在没有参数的情况下工作: String my
需要什么才能使 String.IsNullOrEmpty() 将空白字符串计为空字符串? 例如。我希望以下内容返回 true 而不是通常的 false: String.IsNullOrEmpty("
我总是(thing != undefined || thing != null)?...:...; 检查。在 javascript 或 jquery 中进行此检查后,是否有任何方法会返回 bool ?
我正在处理一个遗留应用程序,但我的 VB6 技能不太好。我需要检查 String 字段是否已初始化并设置为 null/nothing 或空字符串以外的其他内容。在 C# 中我会做类似的事情: if (
我有一个像这样的单一条件的简单方法。 如果(字符串.IsNullOrEmpty(名字)) { 成功=假; 返回成功; 当我运行 Pex 时,它只生成一个将 Null 分配给 FirstName 属性的
您是否编写了两个单元测试?一个值是 Null,一个值是 string.Empty?与 string.IsNullOrWhiteSpace() 类似吗? 最佳答案 是的,您通常希望测试所有可能的输入类别
抱歉,如果这是之前已经回答过的问题,我不确定要搜索什么。我有一些代码在执行单行代码之前有很多空/空检查。这很丑陋,我觉得可能有更好的方法来做到这一点。 例子: private XElement get
我是一名优秀的程序员,十分优秀!