原因很可能是这样做避免了不必要的异常, 而且可以放心地在foreach中进行处理.
1. 不传递params 参数不会得到 null, 只会得到长度为0的数组
private static void foo(params object[] all)
{
foreach(object o in all)
{
WL(o);
}
WL(all.Length);
}
public static void RunSnippet()
{
foo();
}
2. Type.GetCustomAttributes() 不会返回 null, 会返回长度为0的数组.
类似的:
Type.GetProperties
Type.GetDefaultMembers
Type.GetGenericArguments
3. XmlElement.SelectNodes
4. XmlElement.GetAttribute()
这个会在根本没有指定的属性时返回空串, 而不是返回 null, 对这个我不赞同, 对于不存在的东西当然应该返回 null.
好在还可以通过 HasAttribute 来判断是否存在. 否则就无法区分一个属性是压根不存在, 还是其值恰好为空串.
可以大胆地假设一下, 这可能是微软FCL小组的设计原则. 以后碰到类似的, 可以小心假设不会返回 null,
现在就想到这些使用过的例子
阅读(701) | 评论(0) | 转发(0) |