vs编译项目的bug---关于"不明确的引用"

在VS2003及VS2005中,当两个不同项目分别定义了相同名称的枚举类型且都在同一文件中被引用时,会导致编译器出现命名冲突的问题。若调整其中一个枚举的命名空间,则编译可以通过。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在vs2003下编译项目,发现vs编译时的有一个盲区。
情况如下:
解决方案中有两个项目,分别是web项目TestWeb,和类库项目TestFacade。
在TestFacade项目内定义一个枚举类型TestEnum(直接在TestFacade命名空间下定义).
在TestWeb项目下面新建一个文件夹CommonCode,在该文件夹内新建类文件。在其中也定义一个TestEnum枚举。这个枚举将出现在TestWeb.CommonCode命名空间下。
然后再TestWeb项目中另一个页面Test.aspx.cs中,引用下面命名空间。
using TestFacade;
using TestWeb.CommonCode;
在该Test.aspx.cs中直接使用TestEnum枚举。编辑后会提示:"TestEnum"是不明确的引用。因为有两处都定义了TestEnum。

但是,如果将TestWeb.CommonCode命名空间下的TestEnum枚举定义改动一下,将它的定义直接放置在TestWeb命名空间下。其它不变。再次编译后则完全通过了。系统没有再次提示:"TestEnum"是不明确的引用。而Test.aspx.cs中使用的TestEnum枚举被直接解释成在TestWeb命名空间下定义的TestEnum。
又测试了vs2005,也有同样的问题。

不知道是编译器的bug还是语法规则中本来就是这样定义的。希望有高人指点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值