我只是处理字符串,我发现自己很恼火,字符串可以为空.所以,我必须拥有
if((teststring??string.Empty)==string.Empty)
Run Code Online (Sandbox Code Playgroud)
到处都是.会串吗?在需要它的相对较少的情况下(dbs,白痴用户输入等)允许可空性是如此困难.在我想要某种形式的const正确性的情况下,我也发现自己不得不导出只读接口.那么,C#语言构建/决定会让你烦恼么?
编辑:感谢isnullorempty功能,我以前没见过!仍然不会减轻我可以为空的烦恼:D
Mit*_*eat 28
测试Null或Empty的字符串最好使用:
if (string.IsNullOrEmpty(testString))
{
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 21
使字符串成为引用类型对我来说似乎完全合理.
遗憾的是,人们不能将变量/参数/返回类型声明为不可为空 - 例如
// Never returns null
public string! Foo()
{
}
Run Code Online (Sandbox Code Playgroud)
我相信,.NET 4.0中的代码合同将有助于实现这一目标 - 但是要让它普及起来有点晚了.
前段时间我写了一篇关于C#错误的博客文章.总结一下这篇文章:
C#1:
C#2:
System.Nullable类(不Nullable<T>-这很好!)C#3:
对我来说,C#中最大的明显漏洞可能就是枚举.
Java枚举是可以提供行为的类型安全类,可以实现接口等.
C#/ .Net枚举只是美化的内容,所有问题都是常量已经回到C和C++.