C#基本语法.ppt

上传人:大张伟 文档编号:6222963 上传时间:2020-10-03 格式:PPT 页数:48 大小:287KB
返回 下载 相关 举报
C#基本语法.ppt_第1页
第1页 / 共48页
C#基本语法.ppt_第2页
第2页 / 共48页
C#基本语法.ppt_第3页
第3页 / 共48页
C#基本语法.ppt_第4页
第4页 / 共48页
C#基本语法.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《C#基本语法.ppt》由会员分享,可在线阅读,更多相关《C#基本语法.ppt(48页珍藏版)》请在三一文库上搜索。

1、C#基本语法,C#代码的外观和操作方式和C+、Java十分的相似,在C#编程的过程中,不需要花费太多的精力就可以编写出十分清晰的代码。,using System; using System.Collections.Generic; using System.Text; namespace Hello_New_World class Program static void Main(string args) Console.WriteLine(Hello New World我的第一个C#应用程序); Console.ReadKey(); ,C#的基本语法概况,C#的每条语句都用一个分号来结束;为

2、了程序的可读性和易维护性,建议一行一语句,C#编译器自动过滤回车符之类的空白字符; C#是一个块结构的编程语言,代码块使用“”和“”来界定,代码块中可以包含任意条语句,也可以根本不包含语句。在VS 2005中编写代码时,系统会根据代码块的层次进行自动缩进; C#代码严格区分大小写,这与其他许多编程语言是不同的,否则将会引起编译出错。例如将上述控制台程序中的输出语句“Console.writeLine (Hello New World我的第一个C#应用程序)”更改为“ConSole.WriteLine(Hello New World我的第一个C#应用程序)”,程序将不能正常编译和执行。,C#的基

3、本语法概况,在C#中,可以使用两种方式来注释代码:单行注释和多行注释。单行注 释使用“/”来标记注释,其后可以编写任何内容,但一次只能注释一行语 句,使用多行注释时,C#以“/*”标记注释的起始位置,以“*/”标记注释 结束。,using System.Text; /引用System.Text命名空间 /* 这是一个简单的C#控制台应用程序 程序开始 */ namespace Hello_New_World ,C#的基本语法概况,VS 2005具有代码的突出显示功能,及代码的折叠和隐藏功能。在编写C#代码时,可以使用“#region”和“#endregion”关键字,来定义需要扩展和收缩的代码

4、,,#region 引用的命名空间 using System; using System.Collections.Generic; using System.Text; #endregion,C#的基本语法概况,控制台基本输入输出操作,Console.ReadLine() 读取用户输入的一行数据,遇到回车结束,返回一个字符串 Console.Read() 读取用户输入的一行数据的第一个字符,返回该字符对应的 ASCII 码值,int 类型 Console.Write() 向控制台输出字符串,不换行 Console.WriteLine() 向控制台输出一行字符串数据(换行),变量 变量是计算机内

5、存中的一块存储单元,可以将数据存放到变量中,需要的时 候再从中取出进行查看或修改。 变量的基本类型,变量和表达式,整型变量,浮点型变量,其他3种常用变量类型,变量和表达式,变量的命名规则和命名方法 变量是计算机中占据一定内存单元的存储区域,通过指定变量的名称来使用 和管理变量。从数据存储的角度来看,变量名相当于存储数据的变量所占据 的那块内存单元的标识名。 变量名的第一个字符必须是字母、下划线(_)或; 其后的字符可以是字母、下划线、数字等; 不能使用C#中的关键字作为变量名,如using、namespace等,因为这些关键字对于C#编译器而言有特定的含义; C#是区分大小写的,因而在命名变量

6、时,一定要使用正确的大小写,因为在程序中使用它们时,即使只有一个字母的大小写出错,也会引起编译错误。 对于简单的变量,建议使用camelCase命名方法,而对于比较高级的变量, 则使用PascalCase命名方法。,productId productName productDiscontent,ProductId ProductName ProductDiscontent,camelCase,PascalCase,变量和表达式,识别下列标识符,Person yearly-cost yearly_cost int int myclass Checking#this Float 5day 变量名最

7、好使用具有实际意义的英文单词,能够“见名知意”,变量,static void Main(string args) / 声明布尔型、字符串型、整型、短整型和浮点型变量 bool test = true; short num1 = 19; int num2 = 14000; string val = John; float num3 = 14.5f; / 显示变量值 Console.WriteLine (布尔值 = + test); Console.WriteLine (短整型值 = + num1); Console.WriteLine (整型值 = + num2); Console.WriteL

8、ine (字符串值 = + val); Console.WriteLine (浮点值 = + num3); ,变量中存储的值取决于该变量的类型,变量的作用域,Class Scope public static void Main() int x; x=10; if(x= =10) int y=20; Console.WriteLine(“ x and y:0,1”,x,y); y=100; Console.WriteLine(“x is “+x); ,程序中的一个块就定义就定义了一个作用域,域内的变量对外部不可见。变量在进入其作用域时创建,在离开作用域时被释放。,常量 常量又称为字面值,是一种

9、在使用过程中值不发生改变的特殊变量。常量的 声明方法和变量类似,只要在类型关键字前面加上const关键字并指定常量 值即可。和变量一样,常量也包括多种类型:数值常量、字符常量等。 注意:常量在程序中只能被赋值一次,否则编译器便会报告错误。 常量具有以下显著特征: 常量必须在声明时进行初始化,其指定值后便不能再进行修改; 常量的值必须能够在编译时用于计算,因而,从一个变量中提取某个时刻的值并将其赋值给常量,这种做法是不允许的; 常量是静态的,但不必在声明时使用static修饰符。 在程序中使用常量有以下几个好处: 常量使用易于理解的名称,来代替含义不明确的数字或字符串,使程序更易于阅读; 常量使

10、程序更易于修改。,const int pi3.1415926;,变量和表达式,常量,static void Main(string args) / PI常量PI const float _pi = 3.14F; / 由地球引力引起的加速度常量,单位为 cm/s*s const float _gravity = 980; / 钟摆的长度 int length = 40; / 钟摆的周期 double period = 0; / 钟摆周期的计算公式 period = 2 * _pi * Math.Sqrt(length / _gravity); Console.WriteLine (钟摆的周期为

11、0 秒, period); ,声明常量,在表达式中使用常量,const 关键字用于声明常量,字符串常量存储的是一组字符,例如一个用于连接数据库的字符常量: 上述常量中便发生了转义字符的问题,应用程序在使用该字符串常量来连接数据库时,便会出现连接错误,原因是系统将字符串常量中的字符“”看作是转义字符来处理了。如果要解决前面连接数据库的字符串常量中的反斜杠字符识别问题,可使用两个反斜杠,即更改成如下所示:,“server=wfqtupwk_wjl;Integrated Security=SSPI;database=电子商务系统”,“server=wfqtupwk_wjl;Integrated Se

12、curity=SSPI;database=电子商务系统”,变量和表达式,对象类型System.Object,所有其他对象的基类,所有的数据类型都直接或间接的从object类型继承 Object类型的变量可接受任何类型的数值 是实现装箱/拆箱的本源所在,using System; using System.Collections.Generic; using System.Text; namespace HelloWorld class ObjectApp int number = 918; static void Main(string args) object obj = 124; Cons

13、ole.WriteLine(obj); Console.WriteLine(obj.GetType(); obj = new ObjectApp(); ObjectApp value; value = (ObjectApp)obj; Console.WriteLine(value.number); Console.WriteLine(obj.GetType(); Console.Read(); ,可用object引用指向任何类型的对象,用相同的代码对不同类型的数据执行不同的操作,这就是单一继承体系的好处,GetType()可动态获得对象的真正类型,通过改写ToString来进行自定义输出,cl

14、ass Teacher public string name; public string courseName; public override string ToString() return string.Format(Im a teacher,my name is 0 and I teach 1,this.name,this.courseName); ,class Student public string name; public int age; public Student(string name, int age) this.name = name; this.age = ag

15、e; public override string ToString() return string.Format(I am a student,my name is 0 and I am 1 years old,name,age); ,static void Main(string args) Teacher t = new Teacher(); t.name = Bill Gates; t.courseName = Objects orientation programming; Student s = new Student(Tom Hanks, 18); Console.WriteLi

16、ne(t); Console.WriteLine(s); /等价于调用Console.WriteLine(s.ToString(); Console.Read(); ,通过改写ToString方法,可以提供一致的形式来显示对象的信息,这里体现了面向对象编程的什么特性呢?,多态性!,隐式转换和强制转换,隐式(赋值和混合表达式中) 自动算术表达式转换,低类型的操作数被提升到高类型,结果也为高类型 double s;int i;s+i 显式 强制将高级数据类型转换成低级数据类型 int i=(int)(1.2*y+0.5); 一般会导致丢失一些数据精度,C#所支持的隐式类型转换,显式转换 明确要求显

17、示器把一种变量类型转换为另外一种变量类型时,便是显式转换,这相当于告诉编译器“我已经知道你对我这么做提出了警告,但我将对这么做的后果负责”。 但这种转换很可能在程序运行期间因类型转换而造成数据丢失,造成极大破坏,这又被称为数据的溢出。 推荐使用Convert命令来进行显式转换,这种转换能够成功执行的前提是:所要转换的字符串必须是数值的有效表达方式,而且不会溢出。,(目标类型)源变量;,可使用Convert命令转换的数据类型,运算符与表达式,变量和常量解决了数据的存储问题,而表达式则用于数据的处理,它是计算的的基本建立块。在C#中,将变量、常量和运算符组合在一起,便形成了表达式。 运算符用于解决

18、数据的处理方式,根据能够处理的操作数的多少,可以分为: 一元运算符处理一个操作数; 二元运算符处理两个操作数; 三元运算符处理三个操作数。,数学表达式,数学运算符,变量和表达式,关系表达式,比较运算符,变量和表达式,逻辑运算符,变量和表达式,注意, / x 的系数 int cf2 = -7; / 二次方程的常数值 int constant = 3; / 存放表达式 b2 - 4ac 的值 double expression = 0; double x1 = 0; double x2 = 0; Console.WriteLine(二次方程为: 0 x2 + 1x + 2, cf1, cf2, c

19、onstant); expression = Math.Sqrt(cf2 * cf2 - (4 * cf1 * constant); x1 = (-cf2) + expression) / (2 * cf1); x2 = (-cf2) - expression) / (2 * cf1); Console.Write(x = 0:F2 , x1); Console.Write( 或 ); Console.WriteLine(x = 0:F2, x2); ,将值赋给变量,在表达式中使用的算术运算符,运算符的优先级,变量和表达式,变量和表达式,其他C#运算符,new 操作符,new操作符用于创建一个

20、新的类型实例。它有三种形式: 对象创建表达式,用于创建一个类类型或值类型的实例。 数组创建表达式,用于创建一个数组类型实例。 代表创建表达式,用于创建一个新的代表类型实例。 例: class A; A a = new A; int int_arr = new int10; delegate double DFunc(int x); DFunc f = new DFunc(5);,is 操作符,/ is操作符 using System; class OptIsExample public static void Main() Console.WriteLine(1 is int); Consol

21、e.WriteLine(1 is float); Console.WriteLine(1.0 is float); Console.WriteLine(1.0 is double); ,is操作符被用于动态地检查运行时对象类型是否和给定的类型兼容。运算“e is T”的结果,其中,e是一个表达式,T是一个类型,返回值是一个布尔值。,命名空间,销售部,技术部,张三,张三,命名空间,Class Manager long int salary; . ., long int salary; . ,Class Manager,命名空间 SaleDept,命名空间 ITDept,AdminDept.Man

22、ager,ITDept.Manager,类库,命名空间,Class SamsungTelevision ,Class SonyWalkman ,Class SonyTelevision ,Class SamsungWalkman ,长名称难以维护,namespace Tcl class Television . class WalkMan . ,CH.Television,Tcl.Television,namespace CH class Television . class WalkMan . ,有条理,有结构,命名空间,namespace 命名空间的名称 / 该名称空间的所有类都放在这里。

23、 ,语法,命名空间,namespace Tcl class Monitor public void ListModels() Console.WriteLine(“供应Tcl以下型号的显示器:); Console.WriteLine(14, 15 n); static void Main(string args) / / TODO: 在此处添加代码以启动应用程序 / ,命名空间,namespace CH public class Monitor public void ListModelStocks() Console.WriteLine(“以下是 长虹 显示器的规格及其库存量:); Cons

24、ole.WriteLine(14=1000, 15=2000, 17=3000); static void Main(string args) Tcl.Monitor objTcl = new Tcl.Monitor(); Monitor objCh = new Monitor(); objTcl.ListModels(); objCh.ListModelStocks(); ,为什么使用命名空间(1) C#采用的是单一的全局变量命名空间,若有两个变量或函数的名称完全相同,就会出现冲突. 如定义了一个用户名变量userName,可能在调用某个库文件或别的程序代码中也定义了相同的变量名,此时便出现

25、了冲突。 命名空间就是为解决C#中变量、函数的命名冲突而服务的。可以将同一名称的变量定义在不同的命名空间中。 如:张家有电视机,李家也有电视机,王家也有电视机,但因为它们属于不同的家庭,使用时只需将它们所属的家庭作为前缀名即可。,命名空间和using语句,为什么使用using语句(2) 创建了命名空间后,如果命名空间中嵌套比较深,在外部引用它们时是十分不方便的,可以使用using语句来简化对它们的访问,using语句的意思就好比是“我们需要对这个命名空间中的变量,所以不要每次总是要求对它们分类”。 什么情况下使用命名空间的别名 使用using语句可以简化对命名空间的引用,然而某些命名空间中很可

26、能包含相同名称的类,在某些情况下却恰恰需要用到这些同名的类。 例如在.NET Framework类库中存在3个Timer类:System.Timer.Timer、 System.Threading.Timer和System.Windows.Forms.Timer,我们需要使 用System.Timer.Timer在后台以固定的时间间隔检查所有应用程序或系统 的状态,而使用System.Windows.Forms.Timer来在用户界面中显示一个 简单的动画,这时,开发人员就必须在类前面加上命名空间。,命名空间和using语句,此时程序显得比较冗长,可以使用using语句来给命名空间指定一个别名

27、。 当程序中需要引用这个命名空间时,可以简单地使用它的别名,使用别名的方法和使用命名空间完全相同。 using语句本身不能访问另一个命名空间中的名称,除非命名空间中的代码以某种方式链接到项目上,或者代码是在该项目的源文件中定义的,或在链接到该项目的其他代码中定义的,否则就不能访问其中包含的名称。 另外,如果包含命名空间的代码链接到项目上,无论是否使用using关键字,都可以访问其中包含的变量或类。,using 别名=命名空间名;,命名空间和using语句,命名空间别名,using Class1 = Namespace1.Test;/别名到类 using Ns2= Namespace2.Name

28、Space3.NameSpace4; /别名到命名空间 namespace Namespace1 class Test public Test() System.Console.WriteLine(Hello from Namespace1.Test); class MainClass public static void Main() Class1 obj1=new Class1(); Ns2.Test obj2=new Ns2.Test(); System.Console.Read(); ,namespace Namespace2 namespace Namespace3 namespac

29、e Namespace4 class Test public Test() System.Console.WriteLine(Hello from Namespace2.Test); ,String类型,由一个或多个字符组成,一般以“”为界 System.String类中定义了很多对字符串的操作:比较、连接、查找子串。,static void Main(string args) string a=u0068ello; string b= world; string c=a+b; Console.WriteLine(c); Console.WriteLine(c.Length); a=你好; C

30、onsole.WriteLine(c); c=string.Copy(a); Console.WriteLine(c); Console.Read(); ,String类的用法,string.Format实现字符串的格式化 输入两个整数,输出他们的实数除商,并输出上的第二位小数,static void Main() int i = Convert.ToInt32(Console.ReadLine(); int j = Convert.ToInt32(Console.ReadLine(); double shang = (double)i / j; string str = string.For

31、mat(0:F3, shang); char c = strstr.Length - 2; Console.WriteLine(c); Console.Read(); ,日期DateTime类型,表示时间上的一刻,通常以日期和当天的时间表示。 示例:,Console.WriteLine(DateTime.Now); DateTime date=new DateTime(2006,2,28,12,12,12); Console.WriteLine(date); Console.WriteLine(date.DayOfWeek); Console.WriteLine(date.DayOfYear)

32、; TimeSpan duration = new System.TimeSpan(36, 0, 0, 0); DateTime jinian = date.Add(duration); Console.WriteLine(jinian);,DateTime的格式化输出,参数format格式详细用法 格式字符 关联属性/说明 d ShortDatePattern D LongDatePattern f 完整日期和时间(长日期和短时间) F FullDateTimePattern(长日期和长时间) g 常规(短日期和短时间) G 常规(短日期和长时间) m、M MonthDayPattern r

33、、R RFC1123Pattern s 使用当地时间的 SortableDateTimePattern(基于 ISO 8601) t ShortTimePattern T LongTimePattern u UniversalSortableDateTimePattern 用于显示通用时间的格式 U 使用通用时间的完整日期和时间(长日期和长时间) y、Y YearMonthPattern,DateTime.Now.ToString();/今天 /7天后 DateTime.Now.AddDays(7).ToShortDateString(); /本月范围(本月第一天和最后一天) DateTime

34、.Now.ToString(yyyy-MM-01); DateTime.Parse(DateTime.Now.ToString(yyyy-MM-01).AddMonths(1).AddDays(-1).ToShortDateString(); /上个月,减去一个月份(得到上个月第一天和最后一天) DateTime.Parse(DateTime.Now.ToString(yyyy-MM-01).AddMonths(-1).ToShortDateString(); DateTime.Parse(DateTime.Now.ToString(yyyy-MM-01).AddDays(-1).ToShortDateString();,用DateTime计算特定日期,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1