第3章 C Sharp语言基础
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 返回类型 方法名() ❖ 示例
数相同而参数类型不同) 与方法的访问修饰符的返回值无关。
CSharp_入门教程

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这个语言最重要和最受吹捧的特点—并不象宣传的那样容易。
Csharp简介

第一讲C#语言简介§1.1 概述C#(读作“See Sharp”)是一种简单、现代、面向对象且类型安全的编程语言, C# 起源于 C 语言家族。
C# 是面向对象的语言,然而C# 进一步提供了对面向组件(component-oriented) 编程的支持。
C#具有一个统一类型系统(unified type system)。
所有C# 类型(包括诸如int和double之类的基元类型)都继承于一个唯一的根类型:object。
因此,所有类型都共享一组通用操作,并且任何类型的值都能够以一致的方式进行存储、传递和操作。
此外,C# 同时支持用户定义的引用类型和值类型,既允许对象的动态分配,也允许轻量结构的内联存储。
为了确保C# 程序和库能够以兼容的方式逐步演进,C# 的设计中充分强调了版本控制(versioning)。
许多编程语言不太重视这一点,导致采用那些语言编写的程序常常因为其所依赖的库的更新而无法正常工作。
C# 的设计在某些方面直接考虑到版本控制的需要,其中包括单独使用的virtual和override修饰符、方法重载决策规则以及对显式接口成员声明的支持。
§1.2 Hello world按照约定俗成的惯例,我们先从“Hello, World”程序着手介绍这一编程语言。
下面是它的C# 程序:【例1.1】“Hello, World”程序。
程序名称:Hello.csusing System;class Hello{static void Main() {Console.WriteLine("Hello, World");}}C# 源文件的扩展名通常是.cs。
假定“Hello, World”程序存储在文件hello.cs 中,可以使用下面的命令行调用Microsoft C# 编译器编译这个程序:csc hello.cs编译后将产生一个名为hello.exe的可执行程序集。
[C#]CSharp基本语法
![[C#]CSharp基本语法](https://img.taocdn.com/s3/m/5f23d37bf56527d3240c844769eae009581ba28f.png)
[C#]CSharp基本语法⼀、基础1.规范:除常量外,所有变量⽤驼峰命名⽅式,其它⽤帕斯卡命名⽅式.2.编译:⾸先由csc.exe将cs⽂件编译成MSIL.当双击exe的时候,会由clr的jit(just in time)编译器再次编译成cpu指令. csc位置(如):C:\Windows\\Framework\v4.0.30319\csc.execsc命令(如):csc /t:library acme.cs(编译成类库) csc /r:acme.dll test.cs(引⽤acme.dll后编译)ngen位置(如):C:\Windows\\Framework\v4.0.30319\ngen.exe(可实现jit效果)ngen命令(如):ngen install D:\SystemTool\HelloWorld.exe (备注:exe⽅式)3.⾯向对象(Object-Oriented ⾯向对象编程:Object-Oriented-Programming):类是抽象的,对象是具体的.析构函数:~ClassName(){}.实际是重写基类的Finalize()⽅法4.变量:成员变量:默认有⼀个初始值.string->null,int->0,bool->false局部变量:使⽤前必须赋值.5.封装:a.字段封装成属性b.⽅法参数封装成类c.⽅法重⽤d.封装成类库6.继承:单根性,传递性构造函数不继承.7.多态:a.vitual和override⽅法可以给重写b.abstract⽅法c.接⼝8.访问修饰符:成员访问修饰符:private:当前类内protected:当前类内和⼦类内internal:当前程序集内protected internal:当前程序集内或当前类内和⼦类内public:所有都可以命名空间下的访问修饰符:只允许使⽤public和internal,但是微软内部使⽤private.9.静态:静态作为与多态区别的.stati修饰.静态类:不能被实例化,成员都为静态成员,可以有const常量静态成员:静态成员在赋初始值的时候,是在静态构造函数中赋值的.静态构造函数:在类第⼀次使⽤前只调⽤⼀次.不能有修饰符,不能重载.10.值类型与引⽤类型值传递与引⽤传递:值类型:int double struct等隐式继承ValueType.引⽤类型:string 类数组等隐式继承Object.值传递:默认就是值传递.引⽤传递:在⽅法参数中加上ref就是引⽤传递.11.SOLID:single:单⼀职责open:开发封闭lis:⾥⽒替换interface:接⼝分离depend:依赖倒置12.接⼝:a.接⼝⾥只能定义⽅法.b.接⼝的成员不能有修饰符.默认为public13.实现接⼝和显⽰实现接⼝:⼀个类同时实现接⼝和显⽰实现接⼝。
你必须知道的Csharp的25个基础概念

}//5-1-a-s-p-x
}
复制代码
客户端代码:
using System;
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Text;
namespace Example02Lib
{
public class Class1
{
public const String strConst = "Const";
static int Main()
{
string myString;
Console.Write("Enter your message: ");
myString = Console.ReadLine();
return MessageBox(0, myString, "My Message Box", 0);
}
}
}
复制代码
结果:
4.abstract是什么意思?答:abstract修饰符可以用于类、方法、属性、事件和索引指示器(indexer),表示其为抽象成员abstract不可以和static、virtual、override一起使用声明为abstract成员可以不包括实现代码,但只有类中还有未实现的抽象成员,该类就不可以被实例化,通常用于强制继承类必须实现某一成员示例:
C Sharp面向对象基础

C#面向对象基础1.面向对象简介using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace C_Sharp面向对象基础{class Program{static void Main(string[] args){Person p1 = new Person();//="tom";p1.Height = 180;p1.Age = 30;p1.SayHello();Person2 p2 = new Person2();p2.Age = 20;p2.GiveName("tom");p2.SayHello();Person3 p3=new Person3();p3.Age=30;//Console.WriteLine("年龄是{0}",p3.age);p3.Age=-1;Console.WriteLine("年龄是{0}",p3.Age);p3.Age1=-100;Console.WriteLine("年龄是{0}",p3.Age1);Person4 p4 = new Person4();p4.Age = 30;p4.Age = p4.Age + 1;Console.WriteLine(p4.Age);//Person5 p5 = new Person5();//p5.Age = 30;//Console.WriteLine(p5.Age);Person6 p6 = new Person6();p6.IncAge();p6.IncAge();//p6.Age = 30;Console.WriteLine("年龄{0}",p6.Age);Person7 p7 = new Person7();p7.Age = 30;Console.WriteLine(p7.Age);Console.ReadKey();}class Person{public int Height;public int Age;private string Name;public void SayHello(){Console.WriteLine("大家好,我叫{0},我的身高是{1},我的年龄是{2}",,this.Height,this.Age);}}class Person2{public int Height;public int Age;private string Name;public void GiveName(string name){if (name == "jerry"){return;}=name;}public void SayHello(){睁眼();Console.WriteLine("大家好,我叫{0},我的身高是{1},我的年龄是{2}", , this.Height, this.Age); }private void睁眼(){Console.WriteLine("睁开双眼");}}class Person3{private int age;public int Age1;public int Age{set//赋值{if(value<0){return;}this.age=value;}get//取值{return this.age;}}}class Person4{public int Age{set{}get{return 3;}}}class Person5{private int age;public int Age{set{this.Age = value;//给自己赋值,死循环}get{return this.Age;}}}class Person6{private int age;public int Age //只读属性,因为只有get,没有set{get { return age; }}public void IncAge(){age++;}}class Person7{public int Age{get; //编译器自动帮我们生成私有字段和set、get代码块。
Visual C Sharp基础(数据类型)
C#程序结构 C#程序的组成要素
1. 关键字 在C#代码中常常使用关键字,关键字也叫保 留字,是对C#有特定意义的字符串。关键字在 Visual Studio 环境的代码视图中默认以蓝色显 示。例如,代码中的using、namespace、class、 static、void等,均为C#的关键字。
变量声明方法: 数据类型 变量名;
整数类型
整数类型在计算机中的取值范围
描述 位数 8 有符号整 数 16 32 64 8 数据类 型 sbyte short int long byte ushort 取值范围 –128~127 –32 768~32 767 –2 147 483 648~2 147 483 647 –9 223 372 036 854 775 808~9 223 372 036 854 775 807 0~255 0~65 535
”对待,也可以将其看成是两个字符“反斜杠”和“ 字母n”。为了能够区别这两种情况,C#语言规定,在 需要将字符串常量中包含的“转义字符”样式字符数 据作为普通字符时,在字符串常量前面用字符“@”引 导。
String常用方法
C# 中常用的字符串处理方法:
Equals() :比较两个字符串的值是否相等 Join():连接字符串 Split():分割字符串 IndexOf():查找某个字符在字符串中的位置
其他类型
Convert.ToXxx(object):
任意类型 其他类型
注:Xxx表示某种类型
小结
类型转换有几种方式?
下面各种转换的结果是什么?
string myString = "Hello"; int myInt = int.Parse(myString); 错误! 字符串不是有效的整数形式
Csharp面向对象编程(内容详细、案例搭配、适合初学者)
C#基础知识.NET/DOTNET:一般指.NET FRAMEWORK框架,一种平台,一种技术C#(sharp):一种编程语言,可以开发基于.NET平台的应用一个解决方案下面可以有多个项目,项目可以包含多个文件,文件中是我们写的程序在文件中,命名空间中可以包含类,类中可以包含方法,方法中是我们写的程序Main方法是我们程序的入口方法:当我们执行程序时候会首先找到Main方法,从Main方法的第一句程序开始执行,当Main方法执行完成后,程序结束。
.sln是解决方案的文件,今天写的第一句话:Console.WriteLine("你想写的内容!");第二句话:Console.ReadKey();当程序执行到Console.ReadKey();的时候,程序会停在这里,等待用户从键盘上输入一个键盘,用户输入这个键之后,程序才继续执行。
在C#中,每一句话都要一分号结束。
#region和#endregion可以折叠一段代码变量:代表着一块内存空间,我们可以通过变量名称向内存存取数据,有变量就不需要我们记忆复杂的内存地址。
在学习一句话Console.WriteLine()用于让用户从键盘上输入一句话,当程序执行到下面这句话,就会暂停,然后等待用户从键盘上输入一句话,按下回车继续执行。
如果想得到用户输入内容,就需要用户定义一个string类型的变量,写在下面这句话前面接收用户输入的内容。
转义字符是一个字符,可以赋值给例如char这样的类型;它有一个\+一个字母来组成具有特殊意义的一个字符;常用的转义字符有:\n换行 \b相当于backspace退格 \t tab由多个空格组成的一个字符,具有行与行之间的对齐功能,@字在字符串前面表示不转义,其都两种定义1)字符串中如果有\,则不在理解为转义符2)使字符串可以换行3)如果在字符串前面加上@符号,在字符串上用两个双引号代表一个双引号Decimal类型默认的无法转换成double类型注意:赋值运算符/算术运算符在进行运算时,要参与运算的操作数的类型必须相同,并且其运算结束也与操作数的类型相同。
第3章C#语言基础
数组
在C#中,数组的声明格式为: type[] arrayName; 在定义数组的时候可以预先在[]中指 定数组元素的个数。数组的元素个数也可 以通过数组的Length属性获得。
对数组元素的引用与C相同,采用“数 组名[下标]”的形式。C#中的数组元素的 下标也是从0 开始。
第3章 C#语言基础
3.3.4 字符串处理
使用StringBuilder string对象是“不可变的”,即它们一旦创建 就无法更改,对string对象进行操作实际上返回 的是新的字符串对象。出于性能方面的考虑,如 果字符串需要频繁执行如连接等操作,应当使用 StringBuilder类。
StringBuilder 类创建一个字符串缓冲区,用于 在程序执行大量字符串操作时提供更好的性能。 StringBuilder还允许修改字符串中的个别字符, 这是string类型所不支持的。
空字符串是字符串的特殊情况,判断字符串是 否为空就显得特别重要。 字符串等于null和字符串等于“”是有区别的。 在实际应用中,又需要对这两种情况进行同样的 处理,这时就可以用IsNullOrEmpty方法进行判断。 有时往往需要向字符串的后面或前面填充字符, 使其达到指定长度,可使用字符串的PadLeft或 PadRight方法。 如果要去掉字符串开头或结尾的指定字符,则 需要使用Trim、TrimEnd和TrimStart等方法。
第3章 C#语言基础
3.3.4 字符串处理
在C#中,很多类型的对象都提供了ToString方 法,用于将其值转换为字符串。字符串对象也提 供ToString方法,但执行字符串对象的ToString方 法不进行实际转换。
字符串类中还有一个公共属性Length,可以用 来获取字符串的长度。字符串也可以象数组一样 用[]加下标来获取指定位置的字符。在字符串中也 可以使用转义符,如“\n”(换行)和“\t”(制表符)等。
c sharp language
catch (IndexOutOfRangeException) { // catch the exception Console.WriteLine("No matching element found."); } } } } 输出结果: 4 / 2 is 2 Can't divide by Zero! 16 / 4 is 4 32 / 4 is 8 Can't divide by Zero! 128 / 8 is 16 No matching element found. No matching element found.
捕捉所有异常 有时我们想要捕捉所有异常,而不管其类型, 此时使用没有参数的catch语句.
using System; class ExcDemo5 { public static void Main() { int[] numer = { 4, 8, 16, 32, 64, 128, 256, 512 }; int[] denom = { 2, 0, 4, 4, 0, 8 }; for(int i=0; i < numer.Length; i++) { try { Console.WriteLine(numer[i] + " / " + denom[i] + " is"+numer[i]/denom[i]); } catch { Console.WriteLine("Some exception occurred."); }} }}
异常允许合理处理错误
异常处理的关键优点之一是:它允许程序响应错误并继续运 行.例如:下列数组的一个元素除以另一个元素.如果出现 除数为0的情况,那么产生DivideByZeroException异常.在此 程序中,此异常的处理是报告错误消息并继续执行. using System; class ExcDemo3 { public static void Main() { int[] numer = { 4, 8, 16, 32, 64, 128 }; int[] denom = { 2, 0, 4, 4, 0, 8 }; for(int i=0; i < numer.Length; i++) { try { Console.WriteLine(numer[i] + " / " + denom[i] + " is " + numer[i是运行时产生的错误.使用C#的异常处 理子系统,我们能够以标准化可控制的方式来处理运行时 错误. 异常处理可以说是对不正常情况的处理,包括发生错误时 的处理,异常处理通过允许程序定义代码块来简化错误处 理,此代码块称为异常处理程序,出现错误时自动执行它.