思考:C# using 语句
admin 发表于 2010-04-25 | 来源:互联网 | 阅读:
我们习惯的使用C#中的using namespace语句来引入我们想使用的类。
在此,我有一个思考,在编译时using引入语句做了什么事,采取了哪些
动作?C#中编译时所谓的循环依赖是怎么做到的?
我们习惯的使用C#中的using namespace语句来引入我们想使用的类。
在此,我有一个思考,在编译时using引入语句做了什么事,采取了哪些
动作?C#中编译时所谓的循环依赖是怎么做到的?
评论功能因故关闭!
请加入我们的QQ群一起参与讨论:群号59400482(500人超级群)
坐等高手回答
每日接分
汗,这有什么神秘的吗?啥也没做using System;using System.Windows.Forms;using System.Text;using System.Data;StringBuilder sb=….;try:System.StringBuilder results:failedtry:System.Windows.Forms.StringBuilder results:failedtry:System.Text.StringBuilder results:succeedtry:System.Data.StringBuilder results:failed如果有且仅有一个匹配,则成功,否则编译不过(匹配不到指示找不到类型,匹配多个指示不明确的匹配)所以using指令不需要做任何操作,只是当遇到标识符时,作为寻找类型命名空间的数据来源而已
简单来说就是省略部分代码。
using告诉编译器,那些没有在当前文件中定义的类型,去哪里找,例如使用SqlDataAdapter类的文件,被编译器编译时,编译器通过using System.Data.SqlClient知道要去这里找到类型的定义,完成编译的工作。
给个范围给编译器,好帮助提高效率咯。如果没有这个东西,碰到在当前工程里面找不到的名字,它能怎么处理?1 、编译器在所有的库里面给你找,这不会慢死你?? 而且不同的库里还可能出现同样名字的,编译器也要你指定用哪个不是。2、编译器找不到的直接当作失败处理。这个好像就不能用别的库了
当编译器碰见不认识的类型时 就去和using里面的namespace链接起来一个一个试,试成功就停止了。。。
告诉你该到什么地方找代码。。。。。
这个问题有意思!
缺省的命名空间,当编译到一个未知的类(没有输入命名空间前缀),告诉编译器在using的这些地方找。
接分回复内容太短了!
编译的时候只确认缺省的命名空间,当编译到一个未知的类(没有输入命名空间前缀),告诉编译器在using的这些地方找。是的,不过也要看在什么地方用using了,在命名空间上面用是这样的在方法体里面用的话也有释放内存的作用
using不做任何事也不采取任何动作…它只是给编译器指示一组namespace的位置,相当于C/C++的include…
接分,顺便看大家讨论
少写点代码
给个范围给编译器,好帮助提高效率咯。如果没有这个东西,碰到在当前工程里面找不到的名字,它能怎么处理?1 、编译器在所有的库里面给你找,这不会慢死你?? 而且不同的库里还可能出现同样名字的,编译器也要你指定用哪个不是。2、编译器找不到的直接当作失败处理。这个好像就不能用别的库了Good
约等于include.。。。。
学习了
说约等于include是不负责任的,在C++的编译过程和C#中的编译过程还是有许多概念上的差别的;所谓的命名空间的引入,using 的确存在引入和参考的过程,在编译时,各编译单元同时编译,在扫描完各编译单元之前具有容错性,待扫描完之后,各编译单元中都会为编译器提交一份各自成员说明,这样以来,凭借说明整个系统中的各编译单元即源文件,在编译后期被处理为一个“大文件”,给人的感觉就是各单元的独立性更强,更符合面向对象的设计编程者的“感觉”。另外,从C到C++再到C#,面向对象的设计编程理念的确在加强,但是,有一点是不会变的,越底层的编译处理越趋于线性处理,即“先声明再使用”;即便是高级编程语言,如是没有运行平台(e.g. .NET),编译过程中,任它任何高级的语言,都要被一层一层被剥成线性的处理过程。当然了,有了运行平台以后,这个编译与从前的编译,以及生成可执行代码的过程也发生了变迁,因为中间多了一层运行平台,这样说来,才能有C#中的汗,这有什么神秘的吗?啥也没做using System;using System.Windows.Forms;using System.Text;using System.Data;StringBuilder sb=….;try:System.StringBuilder results:failedtry:System.Windows.Forms……这个解释看的懂 不知道楼主看的懂不?
using告诉编译器,那些没有在当前文件中定义的类型,去哪里找,例如使用SqlDataAdapter类的文件,被编译器编译时,编译器通过using System.Data.SqlClient知道要去这里找到类型的定义,完成编译的工作。应时这个意思了。
学习了~
看来你工作比较优先才可以考虑这个问题
。。。。。。
jf…
谢谢了