Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2314793
  • 博文数量: 527
  • 博客积分: 10343
  • 博客等级: 上将
  • 技术积分: 5565
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-26 23:05
文章分类

全部博文(527)

文章存档

2014年(4)

2012年(13)

2011年(19)

2010年(91)

2009年(136)

2008年(142)

2007年(80)

2006年(29)

2005年(13)

我的朋友

分类: WINDOWS

2008-11-12 21:52:29

原因很可能是这样做避免了不必要的异常, 而且可以放心地在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,

现在就想到这些使用过的例子
阅读(676) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~