为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

c1#

2011-09-24 14页 doc 127KB 37阅读

用户头像

is_700087

暂无简介

举报
c1#C#程序设计基础 C#程序设计基础 C#是从C和C++发展而来,它继承了C++语言和JAVA语言的优点,是MICROSOFT公司专门为.NET开发平台而设计的、完全面向对象的网格编程语言。利用C#既可以编写WINDOWS应用程序和控制台程序,又可以编写WEB程序等。 一、命名空间 开发一个大型工程时,经常会用到许多对象,需要创建很多类,而且有的时候类的名称会有冲突。要解决类名称冲突有两种方法:一是创建不同的类名以保证类名不冲突;二是使用命名空间(namespace)。命名空间不仅可以减少名称冲突,而且有助于很好地组织整个工程(...
c1#
C#程序设计基础 C#程序设计基础 C#是从C和C++发展而来,它继承了C++语言和JAVA语言的优点,是MICROSOFT公司专门为.NET开发平台而设计的、完全面向对象的网格编程语言。利用C#既可以编写WINDOWS应用程序和控制台程序,又可以编写WEB程序等。 一、命名空间 开发一个大型工程时,经常会用到许多对象,需要创建很多类,而且有的时候类的名称会有冲突。要解决类名称冲突有两种方法:一是创建不同的类名以保证类名不冲突;二是使用命名空间(namespace)。命名空间不仅可以减少名称冲突,而且有助于很好地组织整个工程(C#的程序代码类、结构、接口等存放在命名空间中)。 1、​ 命名空间的声明 namespace 命名空间名 { //命名空间的成员(可以是类、结构、接口等数据类型,也可以是另一个命名空间) } 2、​ 命名空间的使用 当在命名空间的外部使用命名空间时,有两种方法: 使用引用的全称,如System.Console.WriteLine(“欢迎进入C#世界!”) System是C#的总命名空间;Console是System命名空间中的类,代表控制台;WriteLine()是Console类中的方法,其功能是在控制台上输出指定。 利用using语句导入命名空间,然后直接使用类名。 Using 命名空间名 这样或以减化命名空间中包含的名称的访问。如 Using System; Console.Write(“欢迎进入C#世界!”); 例 创建一个控制台程序,在控制台屏幕输出“同学们,我们一起来学习C#。”. using System;//系统命名空间 namespace chap3_2//用户命名空间 {class class1//声明一个类 { static void Main(string[] args) { Console.WriteLine("同学们,我们一起来学习C#。");//输出 Console.Read();//输入 }}} 二、注释 1、单行注释 格式:// 可放在某语句之后,也可单独占一行。 2、​ 多行注释 格式:/*注释内容*/ 可跨多行。 三、常量和变量 (一)常量 分直接常量和符号常量 如3.14,”计算机系”为直接常量. 1、符号常量的定义 格式:const 数据类型 常量名=常量值 const double PI=3.1415926; const string classname=”05 计算机一班” 说明: ​ 符号常量在定义时必须赋初值。 ​ 符号常量一经定义,在程序运行过程中是不能更改的。 2、​ 标识符 标识符是用户给程序中所使用的常量、变量、类、对象和方法等所起的名字,在命名时必须遵守如下规则: ​ 必须以字母或下划线开头,后跟字母、数字和下划线。 ​ 区分大小字 (二)变量 int x,y=60;//同时定义了两个变量,为其中的一个赋值。 string name=”李立”;//定义了一个字符串变量。 例2 创建一个控制台项目,要求从控制台任意输入一串字符,然后输出刚才输入的内容。 using System; namespace chap3_3 { class class1 { static void Main(string[] args) { string str1; Console.WriteLine("请输入任意字符串:"); str1 = Console.ReadLine(); Console.WriteLine("你输入的内容为:{0}", str1); Console.Read(); } } } Console.WriteLine("你输入的内容为:{0}", str1);语句的功能是在控制台上输出指定的内容,当输出多项内容时,各输出项的位置用参数说明符{0}、{1}……来表示。参数说明符的下标从“0”开始。 四、数据类型 C#的数据类型丰富且可以无限扩充,总的来说,C#的数据类型主要分为:值类型和引用类型。值类型包括一些简单类型如:int,float,char,string,枚举类型和结构类型。引用类型包括类、接口、代理和数组类型。 1、值类型 简单类型 描述 范围 精度 sbyte 8位有符号整数 -128~127 byte 8位无符号整数 0~255 short 16位有符号整数 -32768~32767 ushort 16位无符号整数 0~65535 int 32位有符号整数 -231~231-1 uint 32位无符号整数 0~232-1 long 64位有符号整数 -263~263-1 ulong 64位无符号整数 0~264-1 float 32位单精度浮点数 7位 double 64位双精度浮点数 15~16位 decimal 128位十进制类型 28~29位 char 字符类型16位 0~65535 bool 布尔类型 true false 结构类型示例 using System; namespace Test { struct BookList { public string name; public string author; public string company; } public class Test { static void Main() { BookList b1; b1.name = "c#高级编程"; b1.author = "simon"; b1.company = "清华大学出版社"; Console.WriteLine("书名:{0}\n作者:{1}\n出版社:{2}", b1.name, b1.author, b1.company); Console.ReadLine(); } } } 2、引用类型 类 在面向对象的程序设计中,类是一系列具有相同性质的对象的抽象,是一个总体的概念。而对象则是类的一个实例,是一个个体的概念。类是一种数据类型,类的实例(对象)则是类的变量。 数组 1、声明一维数组的格式 数据类型[] 数组名; int[] arr1; //声明一个整型的一维数组 string[] arr2; //声明一个字符串型的一维数组 声明数组后,还没有创建数组,即为数组分配任何内存空间,因此,声明后,还需要实例化。 2、数组的实例化 new运算符用来创建数组,为数组中各元素分配内在空间,并把它们初始化为默认值. int [] arr1=new int[]{1,2,3,4,5,6}; String [] arr2=new string[]{“aa”m”bb”,”cc”}; 也可简写为: int[] a={1,2,3,4,5,6}; string[] b={“one”,”two”,”three”,”four”}; 如果在声明一个数组变量时没有将其初始化,则必须使用new运算符将其初始化,如: int [] anarray; anarray={1,2,3,4,5,6};//错误 anarray=new int[] {1,2,3,4,5,6};//正确 二维数组 声明 int [,] arr1; float [,] arr2; string [,] arr3; 二维数组实例化 arr1=new int [2,4] {{0,1,2,3},{1,2,3,4}}; 1、​ 字符串 用” ”括起来的一串任意字符 string string1=”hello”+”world”; char c1=string1[5];//c1的值为w string string1=”this is a \” book\”. ”; string string2=@”this is a “book” .”;//每个字符都代表它本来的意思。 装箱与开箱 装箱是把值转换成引用类型 int i=10; object obj=i;//装箱转换 开箱是把引用类型转换成值 int i=10; object obj=i; int j=(int) obj; 类型转换 隐式主要用于安全的类型转换 int k=100; long i=k; 显式转换可调用相应的转换函数来完成 system.convert提供了一个基础数据类型转换为另一个基础类型的方法。 console.writeline(“请输入一个整数:”); int a=system.convert.toint32(console.readline());//将输入的字符串转换成整型。 float f=system.convert.tosingle(1234.5678d);//将双精度数转换为单精度数 可调用parse函数来完成字符串向数值型数据的转换。 console.writeline(“请输入一个单精度数:”); float f=single.parse(console.readline());//将输入的串转为单精度 可用()运算符来完成数值类型间的转换 console.writeline(“将字符’a’转换为其对应的ASCII码”); int n=(int)’a’; 可调用tostring()来完成数值型数据向字符串类型的转换 string str1=5.tostring();//将数字5转换为字符串“5” string str2=’b’.tostring();//将字符‘b’转换为字符串“b” 例 sing System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { double x, y1, y2, y3; string str; Console.Write("请输入一个数值:"); str = Console.ReadLine(); x = double.Parse(str); y1 = ++x; y2 = x--; y3 = (++y1) + (y2++); Console.Write("x={0},y1={1},y2={2},y3={3}",x,y1,y2,y3); Console.Read(); } } } 例 using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { int x = 17; int y = x >> 2; Console.WriteLine("y={0}", y); y = y << 3; Console.WriteLine("y={0}", y); x>>=4; Console.WriteLine("x={0}", x); Console.Read(); } } } Foreach语句 using System; class test { public static void Main() { int[] arrnum = new int[] { 0, 34, 2, 22, 54, 8, 23 }; foreach (int i in arrnum) { System.Console.WriteLine(i); } } } 异常处理 是指程序运行期间遇到的任何错误情况或意外行为。比如操作系统资源不可用,被0除等都可以引发异常。 1、​ try… catch语句 using System; class test { public static void Main() { try { Console.WriteLine("请输入除数!"); int i=int.Parse(Console.ReadLine()); Console.WriteLine("1000除以{0}={1}", i, 1000 / i); } catch(DivideByZeroException e) { Console.WriteLine("除以0异常{0}",e); } Console.Read(); } } 上面代码中DivideByZeroException为系统定义的异常,当除数为”0”时,将产生一个异常,也就是生成该类的一个对象。 2、​ try…finally语句 finally块用于清除在try块中分配的任何资源,不管try块执行时是否产生异常,finally块中的语句总是执行的。 using System; class test { public static void Main() { int i = 27; string s = "hello"; object o = s; try { i = (int)o; // 异常 } finally { Console.WriteLine("程序继续执行"); Console.Write("i={0}", i); } } } 数组与循环嵌套 using System; class test { public static void Main() { int[] sort = new int[10]; for (int i = 0; i < 10; i++) { Console.Write("请输入第{0}个整数:", i + 1); sort[i] = int.Parse(Console.ReadLine()); } Console.WriteLine("排序前:"); for (int i = 0; i < 9; i++) { Console.Write("{0}\t", sort[i]); } //冒泡法排序 for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { if (sort[j] > sort[j + 1]) { int temp = sort[j]; sort[j] = sort[j + 1]; sort[j + 1] = temp; } } } Console.WriteLine("排序后:"); for (int i = 0; i < 10; i++) { Console.Write("{0}\t", sort[i]); } Console.Read(); } } 乘法表 sing System; class cfb { public static void Main() { for (int i=1;i<=9;i++) for (int j = 1; j <= i; j++) { Console.Write("{0}*{1}={2}\t", i, j, i * j); } Console.WriteLine(); } } 五、类和面向对象 类是对某一类对象的抽象,而对象是某一种类的实例。类是抽象的,而对象是具体的。一个类可以产生很多对象,类产生对象的过程称为对象的实例化。 1、类的声明 [类修饰符] class 类名 { 类的成员定义(类体); } class是定义类的关键字,类的成员定义包括数据成员和函数成员两部分;类修饰符包括public,private,protected,internal,new,abstract 和sealed。其中 public 公有的,该类的访问不受限制 private私有的,访问仅限于当前类或包含类 protected受保护的,表示访问仅限于当前类或派生类。 internal内部的,表示访问仅限于当前命名空间内。 new用于嵌套类和隐藏新类中的同名成员 abstract用于定义抽象类,只能作为其他类的基类。 sealed用于定义密封类,不能派生其他类。 例 using System; class classa { public int a; private int b; protected int c; public void seta() { a = 1; b = 2; c = 3; } } public class classb { public static void Main() { classa test1=new classa(); test1.seta(); Console.WriteLine("a的值{0}", test1.a); } } 2、对象的创建 类声明后,需要通过new运算符来创建类的实例,创建对象的格式如下: 类名 实例名=new 类名(参数列表); 例:classa c1=new classa(); 3、构造函数和析构函数 构造函数的功能是为对象分配空间,完成对象的初始化工作。每个类都有构造函数,如果没有声明构造函数,编译器会自动提供一个默认的构造函数。析构函数的功能是:用来从内存中清除一个对象,释放内存空间。 构造函数使用示例: using System; class student { public string name; public string no; public student(string sname, string sno)//构造函数 { name = sname; no = sno; } } class test { public static void Main() { student stud1 = new student("张三", "2005050201"); Console.WriteLine("{0}的学号是:{1}",stud1.name,stud1.no); } } 注意: ​ 构造函数名必须与类名相同; ​ 构造函数可以带参数,但不声明返回类型; ​ 构造函数可以有多个,它们之间的主要区别是参数的类型和个数不同; ​ 构造函数在声明类的对象时被自动调用; ​ 如果没有给类定义构造函数,则编译系统会自动生成一个默认的构造函数; ​ 访问权限为public 4、类的静态成员 类有两类成员:静态成员和实例成员(非静态成员)。静态成员是用static声明的成员,实例成员是没有用static声明的成员。静态成员是在编译阶段分配存储单元,它对所有类的实例是共享的。静态成员通过类名来调用。实例成员是在程序执行过程中创建该类的实例时分配存储单元的,它是通过类的实例来调用的。静态成员对所有对象都起作用,起到统计的作用。 using System; namespace chap3_8 { class test { public static int max(int x, int y, int z) { int max; max = (x >= y ? x : y); max = (max >= z ? max : z); return max; } public int min(int x, int y, int z) { int min; min = (x <= y? x : y); min = (min <= z ? min : z); return min; } } class class1 { static void Main() { int max, min; max = test.max(12, 53, 24); test obj = new test(); min = obj.min(12, 53, 24); Console.Write("12,53,24中最大值为{0}\n\t最小值为:{1}", max, min); } } } 5、方法的参数 方法是类中执行计算或行为的函数成员,是功能相对独立的一段代码。方法代表了一个类的行为能力 方法的参数有四种:值参数,引用参数ref,输出参数out和数组参数params 值参数就是方法的实参和形参之间的传递是按值进行的单向传递。引用参数就是方法的实参和形参之间的传递是按地址进行的双向传递。 值参数示例: using System; class Class1 { static void Main(string[] args) { int i = 1; int j = 2; Swap(i,j); //因为是按值传递参数,所以没有达到交换目的。输出i=1,j=2. Console.WriteLine("i={0},j={1}",i,j); Console.ReadLine(); } //交换值 static void Swap(int i,int j) { int intTemp = i; i = j; j = intTemp; } } 引用参数示例: using System; class text { static void swap(ref int x, ref int y) { int temp = x; x = y; y = temp; } public static void Main() { int i = 1, j = 2; swap(ref i, ref j); Console.WriteLine("i={0},j={1}", i, j); Console.Read(); } } 6、方法的重载 允许在同一个类中定义多个同名的方法,这些方法的参数个数和参数类型以及参数的顺序不能完全相同,这种功能称为方法的重载。 Class test { Int add(int x,int y) {…} Float add(float x,float y,float z) {…} } 只要参数不同,编译器便知道在何种情况下应该调用哪个方法。 7、继承和多态 继承就是一个类在另一个类的基础上创建,子类可以继承父类的所有非private成员(构造函数和析构函数不能被继承),还可以再声明自己的新成员,也可以对父类的成员进行合理的更改。 using System; class parent { private int n1 = 1; public int n2 = 2; protected int n3 = 3; internal int n4 = 4; } class child : parent { private string s = "类的继承"; public void Print() { Console.Write("{0},{1},{2},{3}", s, n2, n3, n4); } public static void Main() { child child1 = new child(); child1.Print(); } } 说明:基类的private成员和构造函数、析构函数不能被继承。 8、多态 多态是指同一操作作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的执行结果。C#支持两种类型的多态:编译时的多态和运行时的多态。 编译时的多态是通过方法重载来实现的 运行时的多态是指直到系统运行时,才根据实际情况来决定实现何种操作。运行时的多态是通过虚成员实现的。 在类中,如果在声明一个方法时带有virtual关键字,则该方法是一个虚方法。虚方法允许在派生类中重写方法。 using System; namespace chap3_9 { class a { public virtual void g() { Console.WriteLine("a.g"); } } class b : a { public override void g() { Console.WriteLine("b.g"); } } class test { static void Main() { b b1 = new b(); a a1 = new a(); a1.g(); b1.g(); Console.Read(); } } } 9、类继承的应用 using System; class vehicle { public int wheels; protected float weight; protected vehicle() { Console.WriteLine("这是基类vehicle的构造函数"); } public vehicle(int w, float g) { wheels = w; weight = g; } public void speak() { Console.WriteLine("the vehicle is speaking!"); } } class car : vehicle { int passengers; public car() { Console.WriteLine("这是派生类car的构造函数。"); } public car(int w, float g, int p) { wheels = w; weight = g; passengers = p; } new public void speak() { Console.WriteLine("the car is speaking didi."); } } class class1 { static void Main() { car c1 = new car(4, 2, 4); c1.speak(); Console.WriteLine("the car's wheels are:{0}",c1.wheels); //Console.WriteLine("the car's weight is:{0}", c1.weight); Console.Read(); } }
/
本文档为【c1#】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索