IT资讯
当前位置:集趣网 > IT资讯 >  智能时代

"using"指令应该在名称空间之内还是之外?

2020-03-30 00:43:12 木庄网络博客 编辑:玉米 浏览数:3集趣网

我已经在某些C#代码上运行了StyleCop,并且一直在报告我的using指令应该在名称空间中。 是否有技术上的理由将using指令放在名称空间的内部而不是外部? 解决: 两者之...

我已经在某些C#代码上运行了StyleCop,并且一直在报告我的using指令应该在名称空间中。

是否有技术上的理由将using指令放在名称空间的内部而不是外部?

解决:

两者之间实际上存在(细微)差异。假设您在File1.cs中具有以下代码:

// File1.cs
using System;
namespace Outer.Inner
{
    class Foo
    {
        static void Bar()
        {
            double d = Math.PI;
        }
    }
}

现在,假设有人将另一个文件(File2.cs)添加到项目中,如下所示:

// File2.cs
namespace Outer
{
    class Math
    {
    }
}

编译器Outer在查看using命名空间之外的那些指令之前会进行,因此它将查找Outer.Math而不是System.Math。

不幸的是(或者幸运的是?),Outer.Math没有PI成员,因此File1现在已损坏。

如果将using名称空间声明放入内部,则会发生以下变化:

// File1b.cs
namespace Outer.Inner
{
    using System;
    class Foo
    {
        static void Bar()
        {
            double d = Math.PI;
        }
    }
}

现在,编译器System先进行Outer,然后进行,查找System.Math,然后一切都很好。

有人会认为这Math对于用户定义的类来说可能是个坏名字,因为已经有in了System;这里要说的就是这样存在的差异,并且它会影响您的代码的可维护性。 

还要注意如果Foo在命名空间Outer中而不是中会发生什么Outer.Inner。

在这种情况下,Outer.Math无论using走到哪里,添加File2都会破坏File1 。

这意味着编译器在查看任何using指令之前先最里面的命名空间。


欢迎分享,(木庄网络博客交流QQ群:562366239)

分享到:

版权与免责声明:

凡未注明"稿件来源"的内容均为转载稿,本网转载出于传递更多信息的目的;如转载稿涉及版权问题,请作者联系我们,同时对于用户评论等信息,本网并不意味着赞同其观点或证实其内容的真实性;


本文地址:http://www.zjzgh.net/news/2020/03/30/92342117.html

转载本站原创文章请注明来源:集趣网

行业聚焦

松松软文频道迎来第100位站长加盟

当你老了,回顾一生,就会发觉:什么时候出国读书,什么时候决定做第一份职业、何时选定了对象而恋爱、什么时候结婚,其实都是命运的巨变。但是,你作出选择的那一日,在日...[详细]

工信部修改《新能源汽车生产企业及产品准入管理规定》

据工业和信息化部7月30日消息,《工业和信息化部关于修改〈新能源汽车生产企业及产品准入管理规定〉的决定》已经2020年7月14日工业和信息化部第16次部务会议审...[详细]

苹果自研 ARM Mac 官方爆料:全新 macOS 引导 / 恢复,Mac 共享模式

IT之家6月25日消息 在今天的 WWDC 新会议视频中,苹果详细介绍了即将到来的 Apple Silicon Mac 过渡的系统架构。值得注意的是,...[详细]

税局严查店铺刷单流水

电商刷单的要倒霉了,近日部分电商公司收到国家税务局通知自家店铺2017-2019年度电商平台收入对不上缴税款,违反税务法规,要求即刻补税缴款,开始要对刷单下手了...[详细]

微软小冰从上海音乐学院音工系毕业 曾帮助儿童完成人生第一次歌曲创作

6月29日,经上海音乐学院音乐工程系评定,人工智能微软小冰和她的人类同学——上音音乐工程系音乐科技专业毕业生一起毕业,并授予微软小冰上海音乐学院音乐工程系202...[详细]

科技趋势

更多

捡漏手慢无:腾讯视频 VIP 9 个月 57 元、超级影视 VIP 年卡 219 元

 

腾讯视频会员限时大促,VIP季卡3张(共9个月)仅需57元(点此购买),超级影视VIP年卡仅需219元(点此购买)。活动...[详细]

科大讯飞发布讯飞智能学习机X2 Pro与Z1两款新品

 

近日,科大讯飞发布了讯飞智能学习机X2 Pro与讯飞智能学习机Z1两款新品,售价分别为4299元和3999元。7月22日...[详细]

索尼官方:PS4控制手柄不能玩PS5游戏

 

近日,据外媒报道称,索尼官方表示,PS4控制手柄不能玩PS5游戏。在索尼 PlayStation 官方博客的一篇新文章中...[详细]

乐虎国际维一官网布局 VCSEL 芯片,投资纵慧芯光

 

IT之家6 月 15 日消息  媒体 DIGITIMES 称,乐虎国际维一官网近期投资 VCSEL 晶片公司纵慧芯光。据企...[详细]

iPhone 升级 iOS 14 Beta 4 后《王者荣耀》出现无法启动、闪退,腾讯已回应

 

IT之家 8 月 10 日消息 近期,苹果发布了 iOS 14 Beta 4 系统更新,不过今天#iOS 14...[详细]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 一周排行每月关注
  • 01赚钱这条路,我是这么走过来的
  • 02松松软文频道迎来第100位站长加盟
  • 03外媒:马斯克将通过在线方式参加2020世界人工智能大会
  • 04TikTok 在美国面临问题的真正原因:巨头科技公司的垄断野心
  • 05苹果调整 iMac Pro 产品线:放弃 8 核,10 核英特尔 Xeon 处理器起步
  • 06微信小商店正式上线 支持直播带货
  • 07央视 315 曝光嗨学网退费难问题:销售当面说一套,协议背后签一套
  • 08雷军小米十周年演讲问题大剧透:这十年后悔过吗?
  • 09Win10激活失败报错“0xc004f069”怎么解决?
  • 10vivo S7 正式开售:骁龙 765G+4400 万像素前摄,2798 元起