CSharp_入门教程
2024年-Csharp基础知识PPT学习课件(精编)
A=b=c; A:b?a:c>d?c:d;
34
2.3.2
34
C#语言的基本原理 2
内容:
• C#程序的基本原理 • C#预定义类型 • 编写表达式 • 条件语句 • 循环语句
35
条件语句
2.4
Microsoft ©
• 条件语句可以根据布尔表达式的值,有选择性的
执行程序的某一部分
• 在C# 中的条件语句有 if 和 switch 两种 • if 适合两个分支判断 • switch 适合多个分支判断
• 作用:通过声明变量,可以在内存中为该变量申 请存储空间
• 语法:
类型 变量名;
int numberOfVisitors;
string name;
19
19
声明并初始化变量
Microsoft ©
第 2步:初始化变量
• 作用:给变量分配初值 • 语法:
变量名 = 初值;
string name; name = “Grizzly”; // 声明和初始化一步完成
端对齐
25
25
创建并使用枚举类型
2.2.5
Microsoft ©
• 枚举类型是一组被命名的数字常量,即:一个枚
举类型中包含了多个相关的数字常量,且每个常
量都被赋予了一个容易记忆的“名字”
• 使用enum关键字创建枚举类型
enum Weather { Sunny, Cloudy, Rain, Snow, fog
Console代表标准输出设备--- 屏幕,它属于System命名空间 WriteLine方法是Console类的方法。访问类或对象的方法使用
点取符.来完成。 字符串用双引号“ ”表示 字符串“Hello,World”是WriteLine方法的参数,表示屏幕输出
第3章 C Sharp语法基础
(4) 字符串常量
字符串常量是由一对双引号界定的字符序列,例 如:
"欢迎使用C#!"
"I am a student." 需要注意的是,即使由双引号界定的一个字符, 也是字符串常量,不能当做字符常量看待,例如, 'A'与"A",前者是字符常量,后者是字符串常量。 (5) 布尔常量 布尔常量即布尔值本身,如前所述,布尔值true (真)和false(假)是C#的两个关键字。
可以为几个变量一同赋值,例如:
int a , b , c; a = b = c = 32; 可以在声明变量的同时为变量赋值,相当于将声 明语句与赋值语句合二为一。例如: double area , radius = 16;
3.3.2
常量
1. 直接常量 (1) 整型常量 整型常量即整数,整型常量有三种形式: 十进制形式,即通常意义上的整数,如,123, 48910等。 八进制形式,输入八进制整型常量,需要在数字 前面加“0”,如,0123,038等。 十六进制形式,输入十六进制整型常量,需要在 数字前面加“0x”或“0X”,如,0x123,0X48910 等。
2. 字母大小写
C#中的字母可以大小写混合,但是必须注意的是, C#把同一字母的大小写当作两个不同的字符对待, 如,大写“A”与小写“a”对C#来说,是两个不同 的字符。
3. 注释
C#中的注释基本有两种,一是单行注释,一是多 行注释。单行注释以双斜线“// ”开始,不能换行。 多行注释以“/*”开始,以“*/”结束,可以换行。
如果一次声明多个变量,变量名之间用逗号分隔。
3. 变量赋值
C#规定,变量必须赋值后才能引用。为变量赋值 需使用赋值号“=”。例如: int number; number = 32; // 为变量赋值32
CSharp教程
公共语言运行库
➢ 公共语言运行库(Common Language Runtime,CLR) ➢ 托管代码与非托管代码 ➢ 凡是使用符合公共语言规范的程序语言开发的程序,均可以
在任何安装有CLR的操作系统中执行。 ➢ 使用.NET提供的编译器可以直接将源程序编译为.EXE或者.
DLL文件,但是编译出来的程序代码并不是CPU能直接执行的 机器代码,而是一种中间语言(IL: Intermediate Langua ge)代码。
➢ VS2008 Standard版本
用于小型软件公司
➢ VS2008 Express版本
用于业余开发者(免费)
➢ 本课的上机实验环境:
VS2008 Professional SP1(4.6GB)
1.2.1 Framework
Framework(简称.NET框架)是生成和运行.NET 应用程序和Web Service的组件库。 .NET框架包括两个主要组件:
NET Framework 3.5。
2008年,微软发布了Visual Studio 2008 SP1以及.NET Fram ework 3.5 SP1。
Visual Studio 2008
➢ Visual Studio 2008 的各个版本
➢ VS2008 Team版本
用于大型团队开发
➢ VS2008 Professional版本 用于大中型软件公司
控制台C#程序举例
// 这是最简单的C#程序 // 练习怎样创建和运行C#程序 using System; class FirstProgram {
// 程序入口 public static void Main (string [ ] args ) { // 调用System.Console类的方法WriteLine
CSharp学习资料
CSharp学习资料第一章.NET体系结构简介体系主要由以下两部分组成Framework类库.NETFramework类库是一个内容丰富的类集合,它可以完成以前要通过WindowAPI来完成的绝大多数任务。
CLR是.NETFramework的核心执行环境,也称.NET运行库。
1.2CLR概述CLR主要负责“托管代码”的编译和运行。
在.NET中代码的编译分为两个阶段,如图1.1所示:1、把源代码编译为Microoft中间语音(MSIL);2、CLR把MSIL编译为平台专用的代码。
某.cC#源代码编译器CLR激活JIT目标机器MSIL微软(Window中间语音、Linu某等)图中C#语音的执行过程1.21托管代码(ManagedCode)托管代码是由CLR运行环境(不是直接由操作系统)执行的代码。
托管代码的优点:平台无关性提高性能语音的互操作性1.22非托管代码(UnmanagedCode)非托管代码是由操作系统直接执行的代码。
非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务;它与托管代码不同,后者从公共语言运行库中获得这些服务。
非托管代码有汇编语音、C语音等。
托管代码和非托管代码区别:前者运行效率稍低,代码编写容易,开发效率高;后者运行效率高,代码编写较难,开发效率低。
第二章面向对象语言C#基础2.1C#简介2.11第一个C#程序(控制台应用程序)uingSytem;//引用命名空间namepaceBitPC.CSharp.Baic//定义命名空间{claMyFirtCSharpCla//引用类类型{publictaticvoidMain()//方法{Conole.WriteLine(“ThiimyfirtC#program!”);//输出无参字符串//输出带参数的字符串Conole.WriteLine(“{0},你好,你的性别是{1}的!”,”唐健”,”男”);Conole.ReadLine();return;}}}2.2变量2.21变量的定义及初始化在C#中声明变量使用的语法:数据类型变量;例如:inti;变量只能先定义后使用;定义变量后必须初始化才能使用;变量要占用一定字节数的内存单元,以上声明会在堆栈中给i分配4个字节。
C Sharp基础
C Sharp基础1. C#基础using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{class Program{static void Main(string[] args){/*Console.WriteLine("hello !");string s=Console.ReadLine();//用户输入文字时,程序是暂停的,回车后把输入的作为返值,并存放到s当中Console.WriteLine(s+"你好");//输出用户输入的int i1 = 10;int i2 = 20;//Console.WriteLine(i1+"+"+i2+"="+(i1+i2));//方法一Console.WriteLine("{0}+{1}={2}",i1,i2,i1+i2,"aaa");//方法二//使用占位符,{0}{1}{2}分别表示三个占位符,顺序从0开始Console.WriteLine("请输入男孩的名字");string boy = Console.ReadLine();Console.WriteLine("请输入女孩的名字");string girl = Console.ReadLine();Console.WriteLine("{0}爱{1}",boy,girl);*//*string s1 = "\"ab\"";Console.WriteLine(s1);string s2 = "a\nb";Console.WriteLine(s2);string s3 = @"c:\temp\user\new\1.jpg";//@表示字符串中的\不当成转义符,@只针对转义符Console.WriteLine(s3);*/Console.WriteLine("请输入第一个数字");string s4 = Console.ReadLine();int i1 = Convert.ToInt32(s4);Console.WriteLine("请输入第二个数字");//string s5 = Console.ReadLine();//int i2 = Convert.ToInt32(s5);int i2 = Convert.ToInt32(Console.ReadLine());Console.WriteLine("{0}+{1}={2}",i1,i2,i1+i2);//中文做变量名string姓名 = Console.ReadLine();Console.WriteLine(姓名+" 你好");人人1 = new人();人1.年龄 = 20;人1.说话();Console.ReadKey();//按下一个按键继续执行}}}/////////////////////////////////////////////////////////////// //人.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{class人{public int年龄 { get; set; }public void说话(){Console.WriteLine(年龄+" 说话");}}}2. 字符串using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Cast入门{class Program{static void Main(string[] args){//类型转换Console.WriteLine("int最大值{0},最小值{1}",int.MaxValue,int.MinValue);Console.WriteLine("byte最大值{0},最小值{1}",byte.MaxValue,byte.MinValue);byte b = 3;int i1 = b;//b = i1;b = (byte)i1;string s = "123";int i2 = Convert.ToInt32(s);Console.WriteLine(i2);Console.ReadKey();}}}////////////////////////////////////////////////using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace字符串{class Program{static void Main(string[] args){/*char c1='a';char c2='b';string s1 = "hi";string s2 = "a";string s3 = "";string s4 = "hello";Console.WriteLine(s4.Length);//5, 不是6,和C语言不同不考虑'\0' Console.WriteLine(s4[1]);char c3=s4[3];for (int i = 0; i < s4.Length; i++){char c6=s4[i];Console.WriteLine(c6);}for (int i = s4.Length - 1; i >= 0; i--){Console.WriteLine(s4[i]);}//s4[0]='y';//不能赋值*//*string s1 = "hello";char[] chars = s1.ToCharArray();//将字符串转换成字符数组chars[0]='a';string s2 = new string(chars);Console.WriteLine(s1);Console.WriteLine(s2);*/string s1 = "hello";string s10=s1;char[] chars = s1.ToCharArray();chars[0]='a';s1 = new string(chars);Console.WriteLine(s1);Console.WriteLine(s10);Console.ReadKey();}}}3. 枚举学习using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace枚举学习{enum Gender { Male,Female,Unknown};//声明枚举class Program{static void Main(string[] args){Gender g = Gender.Female;//枚举的意义在于限定变量的取值范围//Gender g1 = Gender.Male;/*string s = "Male";if (s == "Male"){Console.WriteLine("女");}else if (s == "Unknown"){Console.WriteLine("未知");}esle{Console.WriteLine("非法输入!");}*/}}}4. 条件判断using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace条件判断{class Program{static void Main(string[] args){string s1 = Console.ReadLine();int age = Convert.ToInt32(s1);if (age > 20){Console.WriteLine("成年人");}//else//{// Console.WriteLine("小屁孩");//}else if (age > 10){Console.WriteLine("儿童");}else{Console.WriteLine("婴幼儿");}*//*Console.WriteLine("请输入密码");string s1 = Console.ReadLine();if (s1 == "888888"){Console.WriteLine("密码正确");}else{Console.WriteLine("密码错误,请再输入一次"); s1 = Console.ReadLine();if (s1 == "888888"){Console.WriteLine("密码正确");}else{Console.WriteLine("密码错误");}}*/Console.WriteLine("请输入用户名:");string username = Console.ReadLine();Console.WriteLine("请输入密码:");string password = Console.ReadLine();if (username == "admin" && password == "888888") {Console.WriteLine("正确");}else{Console.WriteLine("用户名、密码错误");if (username != "admin"){Console.WriteLine("用户名不存在");}}*/Console.WriteLine("请输入年龄");string strAge = Console.ReadLine();int age = Convert.ToInt32(strAge);if (age > 18){Console.WriteLine("可以查看!");}else if (age < 10){Console.WriteLine("不允许查看!");}else{Console.WriteLine("是否继续查看(yes、no)?");string isContinue=Console.ReadLine();if (isContinue == "yes"){Console.WriteLine("看吧!");}else if (isContinue == "no"){Console.WriteLine("乖!");}else{Console.WriteLine("输入错误"); }}Console.ReadKey();}}}5. 数组using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace条件判断{class Program{static void Main(string[] args){/*string s1 = Console.ReadLine();int age = Convert.ToInt32(s1);if (age > 20){Console.WriteLine("成年人");}//else//{// Console.WriteLine("小屁孩");//}else if (age > 10){Console.WriteLine("儿童");}else{Console.WriteLine("婴幼儿");}*//*Console.WriteLine("请输入密码");string s1 = Console.ReadLine();if (s1 == "888888"){Console.WriteLine("密码正确");}else{Console.WriteLine("密码错误,请再输入一次"); s1 = Console.ReadLine();if (s1 == "888888"){Console.WriteLine("密码正确");}else{Console.WriteLine("密码错误");}}*//*Console.WriteLine("请输入用户名:");string username = Console.ReadLine();Console.WriteLine("请输入密码:");string password = Console.ReadLine();if (username == "admin" && password == "888888") {Console.WriteLine("正确");}else{Console.WriteLine("用户名、密码错误");if (username != "admin"){Console.WriteLine("用户名不存在");}}*/Console.WriteLine("请输入年龄");string strAge = Console.ReadLine();int age = Convert.ToInt32(strAge);if (age > 18){Console.WriteLine("可以查看!");}else if (age < 10){Console.WriteLine("不允许查看!");}else{Console.WriteLine("是否继续查看(yes、no)?");string isContinue=Console.ReadLine();if (isContinue == "yes"){Console.WriteLine("看吧!");}else if (isContinue == "no"){Console.WriteLine("乖!");}else{Console.WriteLine("输入错误");}}Console.ReadKey();}}}6. 变量命名using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace变量命名{class Program{static void Main(string[] args){/*int i1;int i2,i3;int i4 = 8;i4++;Console.WriteLine(i4);*//*int i=10;i = 1 + i;i += 2;Console.WriteLine(i);int x = 10;int y ;y = x + 80;Console.WriteLine(y);*//*//交换两变量的值int i1 = 10;int i2 = 20;Console.WriteLine("i1={0},i2={1}",i1,i2);int i3;i3 = i1;i1 = i2;i2 = i3;Console.WriteLine("i1={0},i2={1}",i1,i2); *///布尔运算int i = 30;bool b=(i==1);Console.WriteLine("{0}\nb:{1}",i==1,b); Console.WriteLine("i:{0}",i=1);Console.WriteLine("{0}",i!=30);int i1 = 20;int i2 = 30;Console.WriteLine("{0}",i1>10&&i2<100); Console.WriteLine("{0}",i1>100&&i2<100); Console.WriteLine("{0}",i1>200||i2<100);Console.ReadKey();}}}7. 函数using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace函数{class Program{static void Main(string[] args){int i = ReadInt();i++;Console.WriteLine(i);Console.WriteLine(Max(30,50));string[] names = { "tom","jerry","lucy"};string s = Join(names,"|");Console.WriteLine(s);Console.ReadKey();}/*static int ReadInt(){string s = Console.ReadLine();int i = Convert.ToInt32(s);return;}*/static int CT(string s){if (s == "tom"){return1;}if (s == "jerry"){return0;}return -1;}static void SayHello(){int i = 3;if (i > 10){return;}Console.WriteLine("哈喽哇!");}static int ReadInt(){string s = Console.ReadLine();return Convert.ToInt32(s);}static int Max(int i1, int i2){if (i1 > i2){return i1;}return i2;}static int Sum(int[] values){int sum = 0;foreach (int i in values){sum = sum + i;}return sum;}static string Join(string[] strs, string seperator) {string result = "";for (int i = 0; i < strs.Length - 1; i++){result = result + strs[i] + seperator;}if (strs.Length > 0){result = result + strs[strs.Length - 1];}return result;}}}///////////////////////////////////////////////using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace函数2{class Program{static void Main(string[] args){Console.WriteLine("{0}{1}{2}{3}{4}",333,55,66,77,88,99,10,"aaa");string[] values = { "aaa","bbb","ccc"};VFunc("aaa","111","222","33233","fasfsa","aaa");SayHello("tom","张大虎","狗蛋");Console.ReadKey();}static void VFunc(params string[] values)//加params说明这个函数参数个数可变 {foreach (string s in values){Console.WriteLine(s);}}static void SayHello(string name, params string[] nicknames){Console.WriteLine("我的名字是{0}",name);foreach(string nickname in nicknames){Console.WriteLine("我的昵称:{0}",nickname);}}}}8. 函数重载using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace函数重载{class Program{static void Main(string[] args){SayHello("王大壮");SayHello("tom");SayHello(20);//string s = SayHello("jerry");SayHello("tom","littletom");Console.ReadKey();}static void SayHello(string name){Console.WriteLine("大家好,我是:{0}",name); }/*static void SayHello(string name){Console.WriteLine("Hello,I am {0}",name); }*/static void SayHello(int age){Console.WriteLine("我{0}岁了",age);}/*static string SayHello(string name){return "大家好,我是"+name;}*/static void SayHello(string name, string nickname){Console.WriteLine("我的名字是{0},我的昵称是{1}",name,nickname); }}}9. For例子using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace For例子{class Program{static void Main(string[] args){int i = 0;for (i = 10; i < 20; i++){Console.WriteLine(i);}//Console.ReadKey();for ( i = 10; i > 0; i--){Console.WriteLine(i);}Console.ReadKey();}}}10. While语句using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace While语句{class Program{static void Main(string[] args){//while (true)//{// Console.WriteLine("我在运行!");//}//int i = 0;//while (i < 10)//{// i++;// Console.WriteLine(i);//}//int i = 1;//int sum = 0;//while (i <= 100)//{// sum = sum + i;// i++;//}//Console.WriteLine("{0}",sum);//Console.WriteLine("请输入用户名:");//string username = Console.ReadLine();//Console.WriteLine("请输入密码:");//string password = Console.ReadLine();//while (username != "admin" || password != "888888")//{// Console.WriteLine("用户名、密码错误!");// Console.WriteLine("请重新输入用户名");// username = Console.ReadLine();// Console.WriteLine("请输入密码");// password = Console.ReadLine();//}//Console.WriteLine("请输入一个数字");//string s = Console.ReadLine();//while (s != "q")//{// int number = Convert.ToInt32(s);// Console.WriteLine("{0}",number*2);//}//while (true)//{// Console.WriteLine("请输入一个数字");// string s = Console.ReadLine();// if (s == "q")// return;// int number = Convert.ToInt32(s);// Console.WriteLine("{0}",number*2);//}//int max = 0;//while (true)//{// Console.WriteLine("请输入一个数字(结束请输入end):"); // string s = Console.ReadLine();// if (s == "end")// {// Console.ReadLine();// return;// }// int number = Convert.ToInt32(s);// if (number > max)// {// max = number;// }//}//int i = 0;//while (i < 12)//{// Console.WriteLine("i={0}",i);// i++;// if (i == 10)// {// return;// }// Console.WriteLine("自增以后i={0}",i);//}//Console.WriteLine("before ReadKey");int sum = 0;int i = 1;while (i <= 100){if ((i % 7) == 0){i++;Console.WriteLine(i-1);continue;}sum = sum + i;i++;}Console.WriteLine("{0}",sum);Console.ReadKey();}}}11. Switch语句using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace While语句{class Program{static void Main(string[] args){//while (true)//{// Console.WriteLine("我在运行!");//}//int i = 0;//while (i < 10)//{// i++;// Console.WriteLine(i);//}//int i = 1;//int sum = 0;//while (i <= 100)//{// sum = sum + i;// i++;//}//Console.WriteLine("{0}",sum);//Console.WriteLine("请输入用户名:");//string username = Console.ReadLine();//Console.WriteLine("请输入密码:");//string password = Console.ReadLine();//while (username != "admin" || password != "888888") //{// Console.WriteLine("用户名、密码错误!");// Console.WriteLine("请重新输入用户名");// username = Console.ReadLine();// Console.WriteLine("请输入密码");// password = Console.ReadLine();//}//Console.WriteLine("请输入一个数字");//string s = Console.ReadLine();//while (s != "q")//{// int number = Convert.ToInt32(s);// Console.WriteLine("{0}",number*2);//}//while (true)//{// Console.WriteLine("请输入一个数字");// string s = Console.ReadLine();// if (s == "q")// return;// int number = Convert.ToInt32(s);// Console.WriteLine("{0}",number*2);//}//int max = 0;//while (true)//{// Console.WriteLine("请输入一个数字(结束请输入end):");// string s = Console.ReadLine();// if (s == "end")// {// Console.ReadLine();// return;// }// int number = Convert.ToInt32(s);// if (number > max)// {// max = number;// }//}//int i = 0;//while (i < 12)//{// Console.WriteLine("i={0}",i);// i++;// if (i == 10)// {// return;// }// Console.WriteLine("自增以后i={0}",i);//}//Console.WriteLine("before ReadKey");int sum = 0;int i = 1;while (i <= 100){if ((i % 7) == 0){i++;Console.WriteLine(i-1);continue;}sum = sum + i;i++;}Console.WriteLine("{0}",sum);Console.ReadKey();}}}12. refout参数using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace refout参数{class Program{static void Main(string[] args){int age = 20,age1=20;IncAge(age);IncAge2(out age);IncAge(ref age1);Console.WriteLine("无ref:\t"+age);Console.WriteLine("加了ref:\t"+age1);int i1 = 10;int i2 = 20;Console.WriteLine("交换前:\ni1:{0},i2{1}",i1,i2); Swap(ref i1,ref i2);Console.WriteLine("交换后:\ni1={0},i2={1}",i1,i2);Console.ReadKey();}static void IncAge(int age)//IncAge内部改变的是副本{age++;}static void IncAge(ref int age){age++;}static void IncAge2(out int age){age=30;Console.WriteLine("加了out的调用:"+age); }static void Swap(ref int i1,ref int i2){int temp=i1;i1=i2;i2=temp;}}}13. 字符串练习1using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace字符串练习1{class Program{static void Main(string[] args){/*//接收用户输入的字符串,将其反序输出string s = Console.ReadLine();for (int i = s.Length-1; i >= 0; i--){Console.Write(s[i]);}*//*//将一句话中的单词反序输出string s1 = Console.ReadLine();string[] words = s1.Split(' ');for (int i = words.Length - 1; i >= 0; i--){Console.Write(words[i]+" ");}Console.WriteLine("\n-------------");//从email中提取用户名与域名string email = Console.ReadLine();int atIndex = email.IndexOf('@');string username = email.Substring(0,atIndex);string 域名 = email.Substring(atIndex+1);Console.WriteLine(username);Console.WriteLine(域名);*//*//提出文件中的文章标题与作者string[] lines = System.IO.File.ReadAllLines(@"..\..\2.txt", Encoding.Defaul t);foreach (string line in lines){//string[] strs = line.Split('');string[] strs = line.Split(new char[]{' '},StringSplitOptions.RemoveEmpt yEntries);string title=strs[0];//标题string author=strs[1];//作者title=title.Substring(0,Math.Min(17,title.Length));//截取标题的前17个字符//Math.Min用来计算两个数中的最小值title = title + "...";Console.WriteLine("{0}|{1}",title,author);}*/string value = GetConfigValue(@"..\..\3.ini","端口");Console.WriteLine(value);Console.ReadKey();}static string GetConfigValue(string filename, string itemName){string[] lines = System.IO.File.ReadAllLines(filename,Encoding.Default);foreach (string line in lines){string[] strs = line.Split('=');string name=strs[0];string value=strs[1];if (name.Trim() == itemName){return value.Trim();//Trim函数去除空格}}return"错误";}}}14. 字符串学习1using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace字符串学习1{class Program{static void Main(string[] args){/*String s = "Hello";string s1=s.ToLower();Console.WriteLine(s);Console.WriteLine(s1);s = s.ToLower();//并不是改变了字符串的内容,而是生成一个新的全部变成小写的字符串Console.WriteLine(s);Console.WriteLine(s.ToUpper());string s2=" a b ";s2 = s2.Trim();//去掉两边的空格Console.WriteLine("|{0}|",s2);*///bool b=("abc"=="ABC");bool b = "abc".Equals("ABC",StringComparison.OrdinalIgnoreCase);//Ignore:忽略,Case:大小写Console.WriteLine(b);//字符串比较int i = "abc".CompareTo("123");//字符串比较Console.WriteLine(i);//字符串分隔string s1 = "aaa,bbb,ccc,fadsfas.hello|f123,yes";string[] strs = s1.Split(',','.','|');//以逗号等多个分隔符分隔字符串foreach (string item in strs){Console.WriteLine(item);}Console.WriteLine("------------");string s2 = "aaa,bb,cc,12,3";string[] strs2 = s2.Split(new char[]{','},StringSplitOptions.RemoveEmptyEntr ies);foreach (string item in strs2){Console.WriteLine(item);}Console.WriteLine("------------");string s3 = "我是杰克逊我是麦克杰克逊";string[] strs3 = s3.Split(new string[]{"我是"},StringSplitOptions.RemoveEmptyEntries);foreach (string item in strs3){Console.WriteLine(item);}//读文件Console.WriteLine("------------");string[] lines = System.IO.File.ReadAllLines(@"..\..\1.txt",Encoding.Default );foreach (string item in lines){//Console.WriteLine(item);string[] strs4 = item.Split(new string[] { "|" }, StringSplitOptions.Rem oveEmptyEntries);Console.WriteLine(item+"\t"+strs4[2]);}Console.ReadKey();}}}15. 字符串学习2using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace字符串学习2{class Program{static void Main(string[] args){string s = "李时珍同志是一个好同志,是一个好医生,向李时珍学习";s = s.Replace("李时珍","李素丽");//替换字符串Console.WriteLine(s);string s1 = "";string域名 = s1.Substring(7);//取从第7个字符串开始的字字符串Console.WriteLine(域名);string s2 = s1.Substring(7,5);//从第7个位置截取5个字符Console.WriteLine(s2);string s3="我们的社会真和谐!";if(s3.Contains("社会")||s3.Contains("和谐")){Console.WriteLine("含有敏感词汇,请文明用语!");}if (s1.StartsWith("http://") || s1.StartsWith("https://")){Console.WriteLine("是网址!");}else{Console.WriteLine("不是网址!"); }string s4 = "你好,我是王某某";int i = s4.IndexOf("我是");int i2 = s4.IndexOf("你是");Console.WriteLine(i);Console.WriteLine(i2);Console.ReadKey();}}}。
CSharp语法详解PPT课件
❖
Console.WriteLine(name+"
嘎嘎叫");
d1.getname();
❖
d1.Quack();
❖
}
❖
❖
public void setname(string s)
❖
Console.ReadLine();
❖
{
❖
}
❖
name = s;
❖}
❖
}
❖ 显示:
❖
public string getname()
❖
car1.model = "宝马PL32";
❖
car1.Run();
❖
Car car2 = new Car();
❖
car2.color = "黄色的";
❖
car2.model = "奔驰PC10";
❖
car2.Run();
❖
Console.ReadLine();
❖
}
❖
}
什么是方法
❖ 方法用来描述对象的行为。
❖ 程序设计理论里的抽象
➢ 一种描述一种摘要 ➢ 规定一些方法和数据,这些方法和数据是从子类里面提炼出来的。 ➢ 抽象的方法需要子类来实现。
❖ 抽象类
➢ 抽象类是子类的一个描述 ➢ 抽象类不能自己实例化,但可以引用子类对象。 ➢ 抽象类和接口都是用来实现抽象的。
定义抽象类和抽象方法
❖ 语法 访问修饰符 abstract class 类名 {抽象类体} 访问修饰符 abstract 返回类型 方法名() ❖ 示例
数相同而参数类型不同) 与方法的访问修饰符的返回值无关。
C Sharp学习
因为我们不光要写代码,而且要写好的代码,因此我们必须强调基础: 离散数学、算法与数据结构、操作系统、计算机体系结构、网络、编译原理等。
很多时候技术人员之间能力的高低,很可能就会取决于这写基础。
有朋友告诉我,这些计算机科学的基础的意义不仅仅在于知识本身,它们还能够让人的思维更符合计算机科学的发展和变革第三章变量和表达式3.1C#的基本语法C#编译器不考虑空格、回车符或tab字符。
C#是一种块结构的语言,所有语句都是代码块的一部分,用“{ … }”来界定。
注意花括号不需要附带分号。
代码块可以互相嵌套,被嵌套的块要缩进得多一些。
C#代码是区分大小写的。
3.2C#控制台应用程序的基本结构使用#region和#endregion关键字,可以定义展开和折叠的代码区域的开头和结尾。
以#开头的任意关键字实际上都是一个预处理命令。
3.3变量声明变量的C#语法是,指定类型和变量名:<type> <name>;3.3.1简单类型1、用N位来存储的变量可以表示任何介于0到(2N-1)之间的数。
大于这个值的数不能存储在这个变量中。
数值类型过多的原因是要用合适的数值类型存储适合的变量,不要浪费内存也不要出现不能满足变量范围的情况。
Byte:0—255; short:0—65535; int:0—4294967295……………2、这些类型中的每一种都利用了.NET Framework中定义的标准类型。
使用标准类型可以在语言之间交互操作。
在C#中这些类型的名称是Framework中定义的类型的别名,也就是说这些类型都是在Framework中。
3、浮点数变量类型:float/ double /decimal前两种用+/-m×2e,而decimal用+/-m×10e M和e都有最小值和最大值。
4、注意给字符串赋值时,必须小心换行。
C#编译器会拒绝分布在多行上的字符串.如果要多行显示可以使用\n. str=“this is \nmy mouse!”;3.3.2变量的命名变量名的第一个字符必须是字母,且不能使用特定含义的字符,系统的关键字等。
VisualCSharp基础(数据类型)
结构使用
01
02
03
04
结构通常用于封装一组 相关的数据,以便可以 作为一个整体进行处理。
结构可以作为类的替代 品,特别是在需要一个 不可变的数据类型时。
结构可以用于创建小型、 简单的数据结构,例如 点、矩形或颜色等。
结构可以用于实现集合 类,例如数组和列表等。
04
浮点型
double myDouble = 2.71828; // 声明一个double类型的变量并赋值为 2.71828
decimal myDecimal = 9999999.99m; // 声明一个decimal类型的变量 并赋值为9999999.99
```
字符型
总结词
字符型数据类型用于存储单个字符。
访问
通过多个索引访问多维数组中的元素,索引从0开始。例 如myArray[0, 0]访问第一个元素。
动态数组
定义
语法
初始化
访问
动态数组是可以在运行时改变 大小的数组类型。
在C#中,动态数组使用泛型 List<>来定义,例如List<int> myList。
可以通过new关键字创建一个 空的动态数组,然后使用 Add()方法添加元素。例如 myList = new List<int>(); myList.Add(1); myList.Add(2); myList.Add(3)。
详细描述
在C#中,字符型数据类型使用 `char` 关键字进行声明。 每个 `char` 类型的变量可以存储一个Unicode字符。字符 型常量和变量必须用单引号括起来。
字符型的特点
Csharp面向对象的编程技术
17
base 关键字
Microsoft ©
4.2.3
public Animal { public void method1(){} } public class Lion : Animal { //将父类的同名方法隐藏 public void method1() { …… } public Lion() { this.method1(); base.method1(); } }
22
编写虚方法
Microsoft ©
4.3.2
• •
如果希望某个方法的实现能够在子类中进一步得到改 进,那么将方法定义为虚方法 使用virtual关键字定义虚方法 关键字定义虚方法 使用
public class Animal { public virtual void Eat() { Console.WriteLine("Eat something"); } }
• • •
base 指代一个对象的父 类/基类 基类 当子类中的成员与父类 成员重名是, 成员重名是,父类的成 员被隐藏 base 的作用: 的作用:
点取父类中被子类隐藏了 的成员变量 点取被子类覆盖了的方法 作为方法名表示父类的构 造函数
18
密封类
Microsoft ©
4.2.4
• • • •
使用sealed关键字声明密封类 关键字声明密封类 使用 密封类不允许其他类继承该类 密封的方法不允许被覆盖 如果你的类不希望被别人继承、修改,为安全起见, 如果你的类不希望被别人继承、修改,为安全起见, 把它们定义为sealed吧! 把它们定义为 吧
第七章 C Sharp 编程 课程内容
Microsoft ©
• • • • • • •
Csharp中委托,事件理解入门
C sharp 中委托,事件理解入门C#中委托,事件理解入门目录, 导论 , 什么是委托 , 事件的理解 , 事件关键字 , 最后导论在学习C#中的委托和事件过程中,我读了许多文章来理解他们二者究竟是怎么一回事,以及如何使用他们,现在我将整个的理解过程陈述以下,我学到的每一方面,恐怕也是你们需要掌握的。
什么是委托,委托和事件这两个概念是完全配合的。
委托仅仅是函数指针,那就是说,它能够引用函数,通过传递地址的机制完成。
委托是一个类,当你对它实例化时,要提供一个引用函数,将其作为它构造函数的参数。
每一个委托都有自己的签名,例如:Delegate int SomeDelegate(string s, bool b);是一个委托申明,在这里,提及的签名,就是说SomeDelegate 这个委托有string 和 bool 类型的形参,返回一个int 类型。
上面提及的:当你对委托实例化时,要提供一个引用函数,将其作为它构造函数的参数。
这里要注意了:被引用的这个函数必须和委托有相同的签名。
看下面的函数:private int SomeFunction(string str, bool bln){...}你可以把这个函数传给SomeDelegate的构造函数,因为他们有相似的签名(in other words,他们都有相同的形参类型和个数,并且返回相同的数据类型)。
SomeDelegate sd = new SomeDelegate(SomeFunction);sd 引用了 SomeFunction,也就是说,SomeFunction已被sd所登记注册,如果你调用 sd,SomeFunction 这个函数也会被调用,记住:我所说 SomeFunction 的含义,后面,我们会用到它。
现在,你应该知道如何使用委托了,让我们继续理解事件之旅……事件的理解我们知道,在C#中:, 按钮(Button)就是一个类,当我们单击它时,就触发一次click事件。
C#入门课程PPTCsharp入门课程
Console.WriteLine(要输出的值);
Console.WriteLine("格式字符串", 变量列表);
Console.WriteLine ("Hello World"); string course = "C#"; Console.WriteLine(course); Console.WriteLine("我的课程名称是:" + course); Console.WriteLine("我的课程名称是:{0}",course); 演示示例4:向控制台输出课程信息
缺少int.Parse()转换 参数顺序错误
Console.WriteLine("{0}+{1}={2}",num1, num1 + num2 , num2); }
27
C# 中的if条件结构
C# 中的条件判断语句:
条件判断语句 if if … else … if ( ) { … } if ( ) { … } else if ( ){ … } else { … } C#
22
输入输出4-3
关键代码回顾:
string course = "C#"; //课程名称 …… Console.WriteLine( "我的课程名称是:" + course); Console.WriteLine( "我的课程名称是:{0}" , course ); Console.ReadLine();
语法正确可逻辑错误 如何避免?
使用常量可以很容易的避免这种错误
14
演示示例2:计算星期数
ห้องสมุดไป่ตู้
csharp图像处理入门教程
c#图像处理入门教程一.Bitmap类Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下:1. GetPixel方法和SetPixel方法:获取和设置一个图像的指定像素的颜色.2. PixelFormat属性:返回图像的像素格式.3. Palette属性:获取和设置图像所使用的颜色调色板.4. Height Width属性:返回图像的高度和宽度.5. LockBits方法和UnlockBits方法:分别锁定和解锁系统内存中的位图像素.在基于像素点的图像处理方法中使用LockBits和UnlockBits是一个很好的方式,这两种方法可以使我们指定像素的范围来控制位图的任意一部分,从而消除了通过循环对位图的像素逐个进行处理,每调用LockBits之后都应该调用一次UnlockBits.二.BitmapData类BitmapData对象指定了位图的属性1. Height属性:被锁定位图的高度.2. Width属性:被锁定位图的高度.3. PixelFormat属性:数据的实际像素格式.4. Scan0属性:被锁定数组的首字节地址,如果整个图像被锁定,则是图像的第一个字节地址.5. Stride属性:步幅,也称为扫描宽度.如上图所示,数组的长度并不一定等于图像像素数组的长度,还有一部分未用区域,这涉及到位图的数据结构,系统要保证每行的字节数必须为4的倍数.三.Graphics类Graphics对象是GDI+的关键所在,许多对象都是由Graphics 类表示的,该类定义了绘制和填充图形对象的方法和属性,一个应用程序只要需要进行绘制或着色,它就必须使用Graphics对象. 四.Image类这个类提供了位图和元文件操作的函数.Image类被声明为abstract,也就是说Image类不能实例化对象,而只能做为一个基类1.FromFile方法:它根据输入的文件名产生一个Image对象,它有两种函数形式:public static Image FromFile(string filename);public static Image FromFile(string filename, bool useEmbeddedColorManagement);2.FromHBitmap方法:它从一个windows句柄处创建一个bitmap 对象,它也包括两种函数形式:public static bitmap fromhbitmap(intptr hbitmap);public static bitmap fromhbitmap(intptr hbitmap, intptr hpalette); 3. FromStream方法:从一个数据流中创建一个image对象,它包含三种函数形式:public static image fromstream(stream stream);public static image fromstream(stream stream, bool useembeddedcolormanagement);fromstream(stream stream, bool useembeddedcolormanagement, bool validateimagedata);有了上面的了解,我们便可以开始利用C#做图像处理,下面介绍几种方法:一. 打开、保存、显示图像privateBitmap srcBitmap = null;privateBitmap showBitmap = null;//打开文件privatevoid menuFileOpen_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = newOpenFileDialog();openFileDialog.Filter = @"Bitmap文件(*.bmp)|*.bmp|Jpeg 文件(*.jpg)|*.jpg|所有合适文件(*.bmp,*.jpg)|*.bmp;*.jpg";openFileDialog.FilterIndex = 3;openFileDialog.RestoreDirectory = true;if (DialogResult.OK == openFileDialog.ShowDialog()){srcBitmap = (Bitmap)Bitmap.FromFile(openFileDialog.FileName, false);showBitmap = srcBitmap;this.AutoScroll = true;this.AutoScrollMinSize =newSize((int)(showBitmap.Width), (int)(showBitmap.Height));this.Invalidate();}}//保存图像文件privatevoid menuFileSave_Click(object sender, EventArgs e){if (showBitmap != null){SaveFileDialog saveFileDialog = newSaveFileDialog(); saveFileDialog.Filter =@"Bitmap文件(*.bmp)|*.bmp|Jpeg文件(*.jpg)|*.jpg|所有合适文件(*.bmp,*.jpg)|*.bmp;*.jpg";saveFileDialog.FilterIndex = 3;saveFileDialog.RestoreDirectory = true;if (DialogResult.OK == saveFileDialog.ShowDialog()){ImageFormat format = ImageFormat.Jpeg;switch(Path.GetExtension(saveFileDialog.FileName).ToLower()){case".jpg":format = ImageFormat.Jpeg;break;case".bmp":format = ImageFormat.Bmp;break;default:MessageBox.Show(this, "Unsupported image format was specified", "Error",MessageBoxButtons.OK,MessageBoxIcon.Error);return;}try{showBitmap.Save(saveFileDialog.FileName,format ); }catch (Exception){MessageBox.Show(this, "Failed writing image file", "Error",MessageBoxButtons.OK, MessageBoxIcon.Error); }}}}c#中将bitmap或者image保存为清晰的gif在c#中默认可以讲bitmap保存为gif等格式,但是这种保存方法保存的gif会严重失真,正常情况下的代码:1 System.Drawing.Bitmap b = new System.Drawing.Bitmap(“c://original_image.gif“);2 System.Drawing.Image thmbnail =b.GetThumbnailImage(100,75,null,new IntPtr());3 thmbnail.Save(“c://thumnail.gif“, System.Drawing.Imaging.ImageFormat.Gif);一个批量处理图片的软件,包括各种处理方式,处理效果,但是在保存为gif的时候出现了问题,在网上查了很久也没有发现一个可用的改善gif图片质量的方法,找到了一个解决办法,保存出来的gif容量大减,但是效果基本符合常规这中方法就是就是“Octree“算法。
C#入门课程PPTCsharp入门课程
Windows窗体界面设计
1 窗体、属性与事件
2 Windows窗体基本控件 3 菜单与工具栏本章教学目的 介绍Windows窗体基本设计方法以及基本控件的用法。
本章教学要求
(1)掌握基本控件的属性设置方法以及常用属性;
(2)掌握基本控件的常用事件处理方法;
1.2
单文档窗体(SDI)与多文档窗体(MDI)
6
(4)添加“打开Form2”、“打开Form3”事件: private void 打开Form2ToolStripMenuItem_Click(……) { Form2 fm = new Form2(); 不能省略,如果不设置,将其作 为子窗体时,其Name属性默认 fm.MdiParent = this; 为空字符串(String.Empty) = "Form2"; fm.Show(); } private void 打开Form3ToolStripMenuItem_Click(……) { Form3 fm = new Form3(); fm.MdiParent = this; = "Form3"; fm.Show(); }
5) SelectedValue属性(只有在数据绑定中才用此属性,第8章再讲)
3.常用方法 1) Add方法、Remove方法、Insert方法
19
2.7
ListBox控件
1.用法及属性有些类似于CheckedListBox。
2.常用属性 1)Items:描述控件对象中的所有项 2)MutiColumn:是否以多列的形式显示各项 3)SelectionMode: None、One、MultiSimple、MultiExtended
4)SelectedIndex:当前选定项的索引号 5)SelectedItems:当前选定项 3.常用事件 SelectedIndexChanged:当SelectedIndex属性值更改时触发。 4.举例:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C#,深入浅出全接触目录表一、什么是C#?二、Java与C#三、C#的主要特征四、安装运行环境五、C#编辑器六、C#的程序结构七、C#和名称空间八、C#中一个经典例程的编写与编译九、C#编程实战演习ABC1、使用Visual Studio .NET编写C#程序2、使用Visual C#创建Windows应用程序3、创建C#类库(Dll)一、什么是 C#?C# 是由Microsoft开发的一种新型编程语言,由于它是从C和C++ 中派生出来的,因此具有C++的功能。
同时,由于是Microsoft公司的产品,它又同 VB一样简单。
对于web开发而言,C#象 Java,同时具有Delphi的一些优点。
Microsoft宣称:C#是开发.NET框架应用程序的最好语言。
二、Java与 C#要学习C#,不能不首先看一看Java语言。
相对于其他编程语音,Java有一个无庸置疑的优点:用户以及编译器第一次不必了解生成可执行代码的特定CPU细节。
Java引入了一个编译代码中间层,叫做字节代码,并使用一个虚拟抽象的机器,而不是一个真实的机器。
当Java 编译器结束了一个源文件的编译后,你所得到的不是可以立即在一个给定平台上运行的代码,而是可以在任何真实的平台上运行的字节代码,唯一的条件就是这个平台要理解和支持Java。
这些发展包含着一个文化的变革。
作为一个开发人员,你只需要确定Java虚拟机(JVM)提供的抽象层,不同的OS销售商负责执行代码层,从而将中立于平台的字节代码映射到主机平台的机构中。
在这种情况下,Java似乎是统一分布式计算机世界的领袖候选人了。
“编写一次,永远运行”(并且无论在哪里)一度成为Java诱人但却真实的口号。
那么为什么说Java只是“似乎”是一个好东西呢?跨平台理论的发展很好地证明了这一点。
我们看到,将Java代码从一个平台移植到另一个平台—Java这个语言最重要和最受吹捧的特点—并不象宣传的那样容易。
任何Java平台都有其自己的虚拟机,它可以理解通用的字节代码,并且及时地将其编译为本地代码。
矛盾由此产生,不同虚拟机的执行也很不相同,这一点足以使代码的移植比预期耗费多得多的时间,而且基本上不是自动的。
那么,Java模型的好处在哪里呢?首先,Java是一种先进的、面向对象的语言,包含了预防常见错误的内置功能,并在仅仅一两个对象中携带了许多经常需要用到的功能。
与C++相比,Java更易于读写,不容易出错,而且更加美观,但是它速度较慢也不太灵活。
想实现在任何软件和硬件平台上都可虚拟移植,Java尽可能少地使用了公分母模型,也就是说放弃了将每个平台开发到极限的能力。
第二,虚拟机的概念本身就是可移植和可共用的,因此对于分布式环境来说是理想的。
Java对于为非Windows平台开发代码是最好的语言。
那么对于Windows平台来说,Java又怎么样呢?让Java适应Windows是不可能的,这是由于Sun的许可约束问题。
但是Java实在是太吸引人了,Microsoft比谁都能更清楚这一点。
因此,Microsoft又一次采取了“拿来主义”的手法,很好地利用了Java 的众多特性,隆重推出了Windows平台的新锐力量,它就是相当简单但十分强大的面向对象的C#编程语言。
C#超过了C++,它天生就包含了.NET框架类库中的所有类,并使语法简单化。
可以说,Java具备的优点,C#都可以或者都将具备!三、C#的主要特征C# 是.NET的关键性语言,它是整个.NET平台的基础。
与C#相比,.NET所支持的其它语言显然是配角身份。
比如,的存在主要是对千万个VB开发人员的负责。
对于和 Managed C++ 也同样可以这么说,后者只是增加了调用.NET类的C++ 语言。
C#是唯一没有在设计思路中加入了前辈语言某种遗传的新事物。
.NET平台将 C#作为其固有语言,重温了许多Java的技术规则。
C#中也有一个虚拟机,叫做公用语言运行环境(CLR),它的对象也具有同样的层次。
但是 C#的设计意图是要使用全部的Win32 API甚至更多。
由于C#与 Windows的体系结构相似,因此 C# 很容易被开发人员所熟悉。
Java的目的是要拯救分布式计算世界,C# 则不同。
C#本质上是C++的进化产物,使用了包括声明、表达式及操作符在内的许多C++特征,但是 C#还有更多的增强功能,比如类型安全(type-Safe)、事件处理、碎片帐集、代码安全性等。
在C#中,除了可以使用许多API,更能使用.NET类。
特别地是,我们可以处理COM的自动化和C类型的函数。
C#还让你调用无管理的代码,也就是在CLR引擎控制之外的代码。
这种不安全的模式允许你操作原始指针来读和写内置碎片帐集控制以外的内存。
四、安装运行环境安装.NET SDK 是在机器上运行C# 的第一步。
.NET SDK 可以安装在Windows ME、Windows NT或Windows 2000上,但是最好的选择是Windows 2000上。
选择了操作系统后,再执行以下步骤:∙安装 IE 5.5∙安装Microsoft .NET Framework SDK。
它是免费的,可以从以下站点下载. NET Framework SDK.∙完成以上安装后,就可以在任何文本编辑器中编写代码了,最后保存为扩展名为.cs的文件。
五、C# 编辑器编写C#程序可以在文本编辑器中进行,或者在集成开发环境Visual Studio中进行。
市场上还有一些第三方编辑器,其中一些是免费的。
更多信息请查看这里。
六、C#的程序结构一个C#程序包含一个类,这个类中至少有一个公用的静态方法Main,这个方法对程序进行初始化并终止程序。
在Main 方法中创建子对象、执行方法并实现软件的逻辑处理。
下面是一个典型的微型C#例程:using System;class MyFirstApp{static int Main(String[] args){System.Console.WriteLine ("Hello .NET");return 1;}}在C#中,要使用下面的声明来引入外部定义,而不是用象C++中的#include:using System;using System.Data;然后,使用C#编译器csc.exe编译代码。
假定将前面的代码保存为文件hello.cs,使用以下命令:csc hello.cs结果就生成了hello.exe,它向控制台输出窗口写入信息 "Hello .NET"。
尽管编译后的结果文件包含.exe后缀,但hello.exe却不是一个真正的、明确的CPU代码段。
实际上,它包含了.NET 字节代码。
当启动hello.exe时,CLR 将提取编译器写入代码中的重要元数据。
接着,一个叫做 Just-In-Time 编译器的模块将代码映射到特定的 CPU中,开始实际的执行过程。
七、C# 和名称空间实际中的 C#程序通常包含多个文件,其中每个文件都可以包含一个或多个名称空间。
一个名称空间就是一个名字,它向编译器描绘出一些软件实体,如类、界面、枚举以及嵌入的名称空间。
名称空间和数据类型一样必须有唯一的名称。
在一个C#程序中,可以通过一个元素的完整资格名称来识别它,这个资格名称表明出层次关系。
例如,System.String 是 .NET String类型完整的资格名称。
但是为了简化代码起见,只要声明正在使用System名称空间:using System;就可以使用一个相对名称如String来作为完整名称的同义词,而最后依然代表 System.String。
通过使用namesapce关键字,我们还可以将C#程序或者类包裹在自身的名称空间中,比如:namespace MyOwn{using System; // for Stringclass MyFirstApp{static int Main(String[] args){System.Console.WriteLine ("Hello .NET");return 1;}}}名称空间 MyOwn 是全局名称空间的一部分。
调用它不需要再使用前缀,因为其完整资格名称就是简单的MyOwn。
定义一个名称空间是保持公共名称唯一性的一个途径。
实际上,如果两个类的名称发生冲突,但只要它们分别属于不同的名称空间,两个类仍然是各自唯一的。
八、C#中一个经典例程的编写与编译1、编写代码“Hello World”几乎是学习任何一门编程语言都要涉及的第一个例程。
下面也让我们用C#完成这个工作。
在上面提到的任意一个C#编辑器中(比如写字板),键入以下代码:using System;class MyClass{static void Main() {Console.WriteLine("Hello World!");}}然后保存为文件myclass.cs。
2、编译程序注意:C#编译器要要求至少一个自变量,比如文件名。
假设你的C# 文件名是myclass.cs,现在用命令行程序csc.exe来编译上面的myclass.cs文件:csc myclass.cs于是,C# 编译器在工程文件的bin 目录下生成了一个myclass.exe文件。
运行这个 exe,看输出是什么。
3、代码含义下面我们逐行看看这些代码的含义:程序的第一行是using System。
为什么要using System呢?因为System是存储系统类的名称空间,程序中用来在控制台上显示输出的Console(控制台)类就是在System 名称空间中定义的。
下一行是class MyClass。
C# 中的class关键字用于创建一个新类。
每个类都有一个静态的void Main() 函数,这个函数就是一个 C# 程序的入口。
Console 类的WriteLine方法负责向控制台输出文本信息。
九、C#编程实战演习ABC1、用Visual Studio .NET编写C#程序Visual 是Microsoft新一代的旗舰开发环境,在这个环境中,我们能够看到Microsoft将所有开发工具都集成到一个IDE中。
我们惊喜地发现,我们拥有了一个所有编程语言都适用的代码编辑器。
而且,这个环境中还具一个HTML 编辑器、一个XML编辑器、一个SQL Server界面以及一个Server Explorer。
下面,我们将学习如何在 Visual Studio .NET中编写C#程序。
初始页面启动后,我们会看到与以前版本完全不同的景象。
实际上,它看起来更象Visual J++。
一开始出现的是初始页面,这是一个HTML格式的页面。