第二章VisualBasic.NET语法基础本章主要介绍以下内容:lVisualBasic.NET数据类型l变量与常量l运算符与表达式l三种基本语法结构l数组l过程与函数l程序调试l作业数据类型占用内存空间取值范围示例Byte(字节型)1B0~255(无符号)112Integer(整型)4B-232~232-11234567Short(短整型)2B-32768~327672345Long(长整型)8B-264~264-11234567890Single(单精度浮点型)4B-3.402823E38到-1.401298E之间的负值;1.401298E-45到3.402823E38之间的正值。123E12Double(双精度浮点型)8B-1.79769313486231E308到-4.94065645841247E-324之间的负值;4.94065645841247E-324到1.79769313486231E308之间的正值12.34E20Decimal(货币型)8B-9222337203685477.5808~9222337203685477.580712345678String(变长字符串型)不定0到约20亿之间的Unicode字符HELLOChar(字符型)2B所有Unicode字符ABCDate(日期型)8B公元100年1月1日到公元9999年12月31日02/08/200507:00PMBoolean(布尔型)2BTrue或FalseTRUEObject(对象型)不定各种数据VisualBasic.NET的数据类型DimBytAAsByteDimintBAsIntegerDimshoCAsshortDimdouDAsDoubleDimstrEAsstringDimBooFAsBooleanVisualBasic.NET的数据类型之间是可以互相转换的,VisualBasic.NET专门为此提供了转换函数,转换函数有两种:一是使用和VisualBasic6.0同样的内部转换函数,二是使用.NET提供的转换函数。System.convert命名空间提供的转换函数转换函数(方法)转换目标类型转换函数(方法)转换目标类型ToBooleanBooleanToInt16ShortToByteByteToInt32IntegerToCharCharToInt64LongToDateTimeDateToSingleSingleToDecimalDecimalToStringStringToDoubleDouble数据类型的转换有两种方式:1、从精度低的转换为精度高的2、从精度高的转换为精度低的需要注意的是:当从高精度向低精度转换时会产生数据丢失,一般不应该这么做。数据类型精度由低到高的排列为:ByteShortIntegerLongDecimalSingleDouble另外,Char型可转换为String型;上述所有类型均可转换为Object型。将数值数据类型转换为Boolean值时0其他所有数值将Boolean值转换为数值类型时FalseTrue转换为False转换为True转换为0转换为-1【案例2-1】数据类型转换举例(从精度低的转换为精度高的)。打开记事本编辑下列代码并保存,使用控制台工作界面编译并运行程序。IMPORTSSYSTEMCLASSMAINPublicSharedSubMAIN()DimIntXAsInteger=112DimIntYAsLongIntY=Convert.ToInt64(IntX)‘数据类型转换并赋值Console.WriteLine(IntY)EndSubEndClass在上述代码的“IntY=Convert.ToInt64(IntX)”语句中,转换函数Convert.ToInt64将IntX转换为Long型后赋值给IntY变量,IntY变量的值为112。请运行程序,并分析结果。【案例2-2】数据类型转换举例(从精度高的转换为精度低的,易产生数据丢失)。打开记事本编辑下列代码并保存,使用控制台工作界面编译并运行程序。IMPORTSSYSTEMCLASSMAINAPPPublicSharedSubMAIN()DimSngXAsSingle=123.45DimIntYAsInteger‘数据类型转换并赋值IntY=Convert.ToInt32(SngX)Console.WriteLine(IntY)EndSubEndClass§2.2变量与常量一、变量有了数据类型,还需要有变量来存储具体的数据。在程序运行过程中,其值可以改变的量称为变量。一个变量占有一个存储单元,并具有确定的名字和类型。1、变量命名规则●变量名由字母、数字、下划线组成,必须以字母字符开头。●变量名在变量的作用范围内必须是唯一的。●变量名长度不能超过255个字符,而且中间不能包含句点或系统已有的关键字。●变量名不区分大小写。●对变量命名时要尽量做到“见名知义”变量命名示例:strMystring、intCount、sng2、声明变量声明变量即事先将变量通知程序,就是明确定义变量的类型、变量名和长度,以确定为它分配多大的存储单元。与VisualBasic以往版本不同的是,VisualBasic.NET不再允许使用未声明的变量,对于程序的每一个变量,在使用前都必须声明它的数据类型,以便编译器为它们分配内存空间。变量可以在定义的时候赋初值,也可以不赋初值。声明变量的时候,可以使用如下表所示的语句。变量声明语句变量声明语句说明Dim变量as类型声明局部变量Private变量as类型声明私有变量Public变量as类型声明公共全局变量Static变量as类型声明静态变量、3、变量的作用域变量都有自己的适用范围,并不是所有的变量都能在程序的任何地方对它进行访问的,只有在变量的作用域范围内才是有效的、可以访问的。(1)通过Dim在窗体、模块的声明段声明的变量是模块级的,对整个模块都有效。如果用户希望窗体或模块中的所有过程能够分享一个变量,可将该变量声明为模块级变量。(2)在过程内用Dim声明的变量只在过程内有效,过程一结束,该变量的值就消失。而且在一个过程中无法访问其他的过程中声明的变量。(3)用Private声明的变量只在该窗体或模块中有效。用Public声明的变量不但可以在该模块或窗体中有效,在其他模块或窗体中也有效。在模块级变量声明中,Private和Public之间没什么区别。(4)用Static声明的变量是静态变量,静态变量的值即使在过程结束后也一直保存着。IMPORTSSYSTEMPBULICCLASSMAINDimaAsInteger=66PublicSharedSubMAIN()DimIntXAsInteger=112DimIntYAsLongIntY=Convert.ToInt64(IntX)‘数据类型转换并赋值Console.WriteLine(IntY)Console.WriteLine(a)EndSubPublicSubhello()DimSngXAsSingle=123.45DimIntYAsIntegerIntY=Convert.ToInt32(SngX)Console.WriteLine(IntY)EndSubEndClassPrivateSubButton1_Click(ByValsenderAsSystem)DimLossersAsInteger…(其它语句)…EndSubIfYourSalaryCERSalaryThenDimMessageAsStringMessage=“HowcomeIgetpaidlessbutdoallthework?”TextBox1.Text=MessageEndIf二、常量在程序运行过程中,值保持固定不变的量称为常量。在VisualBasic.NET中,常量主要有两种来源,一种是内部的或系统定义的常量,另一种是用户自定义的常量。1、内部的或系统定义的常量内部的或系统定义的常量是应用程序和控件提供的,这些常量可与应用程序的对象、方法和属性一起使用。2、用户自定义的常量[Public/Private]Const常量名[As类型]=表达式例:ConstPI=3.14159‘声明了常量PI,代表3.14159,Single型’PublicconstPIassingle=3.1415‘声明常量PI值为3.1415,single型注意:若用户定义的常量数据类型与给定值的数据类型不一致,则系统会出现错误提示。PublicconstPIassingle=“3.1415”系统会提示:从“String”到“Single”的转换无法在常数表达式中发生。变量常量用Dim声明当程序运行时,值会改变比常量占用更多的内存用Const声明当程序运行时,值不改变比变量占用更少的内存课堂练习找错误DimNumberForDoubleConstSon'sBirthdayAsDayDimError.MessageAsTextDim12CountAsInteger§2.3运算符与表达式我们将要参与运算的数据用运算符相连形成表达式,就可以使参与运算的数据以一定的顺序实现操作。参与运算的数据可以是常量、变量、函数、字符串、数字或对象等。一、运算符算术运算符比较运算符逻辑运算符1.算术运算符DimIntAAsInteger=3运算符含义优先级例子结果^乘方1IntA^29-负号2-intA-3*乘3IntA*intA9/除310/intA3.3333333\整除410\intA3Mod取模510ModintA1+加610+intA13-减6IntA-10-7t2.字符串运算符“&”“+”将两个字符串拼接起来注意:使用“&”时,变量与运算符“&”间应有一个空格“&”与“+”的区别“+”前后的表达式应均为字符串“&”前后的表达式不管是字符串还是数值,进行连接操作前,系统先将表达式转换成字符串,然后再连接例:“高级”+“编程”“Thisisa”&“VisualBasic.NET”“aabbcc”+123“aabbcc”&123t连接运算示例若var1=“3”var2=6var=var1&var2则var=“36”var=var1+var2则var=9若var1=“ab”var2=6var=var1&var2则var=“ab6”var=var1+var2则提示类型不匹配t3.关系运算符运算符含义例子结果=等于“ABCDEF”=“ABS”False大于“ABCEDF”“ABS”False=大于等于“bc”=“abcdef”True小于233False=小于等于“23”=“3”True不等于7799TrueLike字符串匹配ABCEFG”Like“*DE*”TrueIs对象引用比较比较两个对象的引用变量是否一致,如果它们引用的是同一个对象,则返回真(对象变量本身的值只是对象在内存的位置)关系运算符的规则:若两个表达式是数值,则按其大小比较若两个表达式是字符或字符串,则按字符的ASCII码值从左到右一一比较关系运算符的优先级相同运算运算符说明举例取反Not如果表达式不成立,返回真,否则为假Not(6=4)返回True逻辑与And如果两个表达式都成立,返回真,否则为假24And35返回True逻辑或Or两个表达式只要有一个成立,就返回真,否则为假14Or49返回True逻辑异或Xor当一个表达式为真,另一个表达式为假,就返回真,否则为假14Xor49返回True14Xor49返回False逻辑等价Eqv当两个表达式同时为真或同时为假时,返回真,否则为假(39)Eqv(59)返回False逻辑蕴含Imp当第一个表达式为真,且第二个表达式为假时,返回假,否则为真(6=6)ImpFalse返回False4.逻辑运算符二、表达式将常量、变量或函数用运算符连接起来就形成了表达式。在一个表达式中同时出现多种运算符时,必须按照运算符的优先级运算:算术运算符比