C#中同名类问题

ladofwind 2010-05-31 03:20:28
我是java转过来的,因为java里如果不同包的同名类引用的时候必须加全名,否则编译不通过,

example:

import java.util.*;
import java.sql.*;

Date d = new Date();
过不去,必须改为

java.util.Date d = new java.util.Date();


可是在C#中,我看我两个包里有同名类,好象不需要加前缀包名,默认是取当前包里的类?

...全文
481 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
小黑哥gs 2010-05-31
  • 打赏
  • 举报
回复
过路。。看看。。
ladofwind 2010-05-31
  • 打赏
  • 举报
回复
我上面这种情况 java应该编译不过去的
ladofwind 2010-05-31
  • 打赏
  • 举报
回复
我的情况是本包CMS.OP有个 Util类

CMS.Business下还有个Util类


我写的类QueryUser
在CMS.OP下,也using了CMS.Business,因为用其他类

这时候写 Util u= new Util(); 时我看没报错,是用的本包的Util,所以才发此问
ljz_761121 2010-05-31
  • 打赏
  • 举报
回复
C#与java不同这处在于,java是用import 来引入包,而.net是用using来引入命名空间,命名空间相当于java中的包,import java.sql.*相当于using System.Data
dyg974 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ladofwind 的回复:]
哦,就是说如果两个别的包的类同名了,必须写全名,

如果是别的包类和我本包类同名,不用写全名,默认取本包类,对吧?
[/Quote]

是的。
ginni215 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ladofwind 的回复:]
如果是别的包类和我本包类同名,不用写全名,默认取本包类,对吧?
[/Quote]

如果你都是使用的默认命名空间的话,那就是的,因为会默认引用自己的命名空间~
dongjiadeliwei 2010-05-31
  • 打赏
  • 举报
回复
C#总是从默认命名空间(当前命名空间)去查找指定的类,如果找不到才提示编译错误。
如果要使用另外一个名称空间就必须用全名了。
keeya0416 2010-05-31
  • 打赏
  • 举报
回复
C# 的命名空间你可以认为和 Java 的包名是一回事
如果只是导入一个 就不需要全名了
RedFish2010 2010-05-31
  • 打赏
  • 举报
回复
学习学习
oncesky 2010-05-31
  • 打赏
  • 举报
回复
要写全名.兄台,最好避免出现这种情况
ladofwind 2010-05-31
  • 打赏
  • 举报
回复
哦,就是说如果两个别的包的类同名了,必须写全名,

如果是别的包类和我本包类同名,不用写全名,默认取本包类,对吧?
dyg974 2010-05-31
  • 打赏
  • 举报
回复
是的,C#总是从默认命名空间(当前命名空间)去查找指定的类,如果找不到才提示编译错误。
如果要使用另外一个名称空间就必须用全名了。
qixingchao 2010-05-31
  • 打赏
  • 举报
回复
对,不过如果同名类的两个命名空间都出现在同一引用类里,则要写全名,它需要你来指明哪个类是哪个命名空间下的,否则它也不会识别。
捷哥1999 2010-05-31
  • 打赏
  • 举报
回复
是不是因为你的C#文件中没有using这两个命名空间?
如果同时都using了这两个命名空间,且这两个命名空间有同名的类,你的程序又使用了这样的类,肯定会有冲突提示的!

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧