WEB开发网
开发学院软件开发C语言 C#发现之旅:于动态编译的VB.NET脚本引擎(上) 阅读

C#发现之旅:于动态编译的VB.NET脚本引擎(上)

 2010-09-30 21:08:18 来源:WEB开发网   
核心提示: 类似全局对象,在VB.NET语法中具有全局函数的功能,C#发现之旅:于动态编译的VB.NET脚本引擎(上)(5),比如对于Asc函数,它实际上是类型Microsoft.VisualBasic.Strings的一个静态成员函数,而必须使用“Microsoft.VisualBasic.S

类似全局对象,在VB.NET语法中具有全局函数的功能,比如对于Asc函数,它实际上是类型Microsoft.VisualBasic.Strings的一个静态成员函数,但在VB.NET中可以在任何时候任何地方直接使用,VB.NET编译器会将代码中的Asc函数自动扩展为“Microsoft.VisualBasic.Strings.Asc”。这个过程是在编译时进行的,而运行时不再需要这样的扩展。

.NET框架自带VB.NET编译器,它就是在.NET框架安装目录下的vbc.exe,在笔者的系统中VB.NET编译器的路径是“C:"WINDOWS"Microsoft.NET"Framework"v2.0.50727"vbc.exe”,参考MSDN中关于VB.NET编译的命令行的说明,它支持一个名为“imports”的命令行参数指令。比如可以这样调用VB.NET编译器“vbc.exe /imports:Microsoft.VisualBasic,system,system.drawing 其他参数”,该参数的功能是从指定的程序集导入名称空间。在VB.NET编译器命令行中使用imports指令和在VB.NET代码中使用Imports指令是不一样的。在源代码中使用Imports指令是用于减少代码编写量,而在命令行中使用imports指令是启动指定名称空间下的全局对象和全局函数,若一个类型附加了StandardModuleAttribute特性,而且定义了一些静态函数和属性,但并没有在编译器命令行中导入带类型所在的名称空间,则VB.NET编译器不会感知到该类型中定义的全局对象和全局函数,因此在编写VB.NET代码时必须使用“类型名称.静态属性或函数的名称”的方式来调用全局对象和全局函数。比如若没有在VB.NET编译器的命令行参数中使用“/imports:Microsoft.VisualBasic”参数,则Asc函数不再是全局函数,若在代码中直接使用Asc函数则必然报编译错误,而必须使用“Microsoft.VisualBasic.Strings.Asc”的方式来使用,即使源代码中使用了“Imports Microsoft.VisualBasic”,也只能用“Strings.Asc”的方式来使用函数。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:发现 之旅 动态

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接