不论是C# 还是Java 对方法的匹配规则都是精确匹配, 匹配尽可能小的那个.
Show(Object o) Show(Object[])
Show(null) 这样的话, 就会匹配Object[] 这个方法应该为Object[] 可以看做是Object 的子类, 如果可以匹配子类就会匹配子类
但是如果同时存在Show(Object[]) 和Show(string) 传入Show(null) 的话 这样的代码不论是在Java 还是在C# 中都会在编译期报错, 因为同时匹配两个方法, 而且这两种类型又不是父子关系, 也不可以向上转型. 例如int 和float 这样