当前位置:  开发笔记 > 编程语言 > 正文

C#中的语言决定会让你烦恼吗?

如何解决《C#中的语言决定会让你烦恼吗?》经验,为你挑选了4个好方法。

我只是处理字符串,我发现自己很恼火,字符串可以为空.所以,我必须拥有

if((teststring??string.Empty)==string.Empty)

到处都是.会串吗?在需要它的相对较少的情况下(dbs,白痴用户输入等)允许可空性是如此困难.在我想要某种形式的const正确性的情况下,我也发现自己不得不导出只读接口.那么,C#语言构建/决定会让你烦恼么?

编辑:感谢isnullorempty功能,我以前没见过!仍然不会减轻我可以为空的烦恼:D



1> Mitch Wheat..:

测试Null或Empty的字符串最好使用:

if (string.IsNullOrEmpty(testString))
{
}



2> Jon Skeet..:

使字符串成为引用类型对我来说似乎完全合理.

遗憾的是,人们不能将变量/参数/返回类型声明为不可为空 - 例如

// Never returns null
public string! Foo()
{
}

我相信,.NET 4.0中的代码合同将有助于实现这一目标 - 但是要让它普及起来有点晚了.

前段时间我写了一篇关于C#错误的博客文章.总结一下这篇文章:

C#1:

缺少对属性的单独getter/setter访问.

缺乏泛型.从一开始,生活对于仿制药会更加甜美.

默认情况下,类没有被密封.

枚举刚被命名为数字.

"\ x"字符转义序列.

关于switch语句的各种事情:)

一些奇怪的重载决策规则

"lock"关键字,而不是"使用"锁定tocken.

C#2:

缺乏部分方法(来自C#3)

缺乏通用差异(来自C#4)

System.Nullable类(不Nullable-这很好!)

InternalsVisibleTo要求强签名程序集的整个公钥而不是公钥标记.

C#3:

缺乏对不可变性的支持 - 许多变化改进了变异类型(自动属性,对象和集合初始化器)的机会,但这些都不适用于可变类型

扩展方法发现


稍后添加泛型的问题是它会影响类lirbary*now*.没有非泛型集合,框架会更加清晰.在没有IEnumerable的情况下实现IEnumerable 也不错......

3> cletus..:

对我来说,C#中最大的明显漏洞可能就是枚举.

Java枚举是可以提供行为的类型安全类,可以实现接口等.

C#/ .Net枚举只是美化的内容,所有问题都是常量已经回到C和C++.



4> Michael Lari..:

out和ref参数


返回一个复合对象.
推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有