《高级语言程序设计(C#)》复习
1. C#基础概念
- C#是.NET上运行的语言之一
- C#是一种编程语言,.NET是一个程序运行框架
- .NET除了支持C#外还支持F#、VB.NET等语言
- .NET最基础的两个组成部分是:公共语言运行时,公共语言规范
- 原理上,只要安装了.NET框架,即可运行C#程序
- C#源代码文件后缀是cs,它编译后生成的文件格式常见的有exe和dll两种格式
- C#没有行的概念,以;为结束标记,多行语句时用{}包括
2. C#标识符
- 只能由数字、字母、下划线组成,而且第一个字符必须是下划线
- 标识符不能与系统关键字相同,如果一定要使用关键字,在标识符前面添加一个“@”
3. C#数据类型
3.1 值类型
值类型
- 实数型
int i;//整型
byte b;//字节型
long ln;//长整型
float f;//单精度
double d;//双精度
decimal dc;//多精度
- 字符型
char c = 'h';//字符型
string str = "hellow";//字符串型
/**
* 字符串型本质是字符型数组
*/
- 布尔型
//主要用于判断if while do-while
bool b = true;//只能取true或false
- 结构体
//结构体可以扩展C#的基本类型,由基本类型构成
//如果想要结构体的成员可访问,必须添加public关键字
struct Student{
public string name;
public int age;
public double socre;
};
//结构体的使用
Student stu;
stu.name = "张三";
- 枚举
//枚举的定义
enum Color{RED = 0,GREEN = 3,BLUE = 4}
//枚举的使用
Color.RED;//返回RED
(int)Color.RED;//返回0
3.2 引用类型
类、数组都是引用类型
- 引用类型与值类型的区别在于引用类型共享内存空间,引用类型只保留内存地质而不重新声明新得内存
//有一个People类
People p1 = new People();
p1.name = "张三";
People p2 = p1;
p2.name = "李四";//p1.name = "李四";
3.3 算数运算符
+ - * / %(求余)+= -+ *= /= %= ++ --
3.4 字符串运算符
+ 用于连接字符串 "hellow" + " word" // hellwo word
3.5 比较运算符
"> < == >= <= !="
3.6 逻辑运算符
"&& || !"
4 选择结构
选择结构主要有:
- if...else 语句
int score = 60;
if(score >= 60){
Console.WriteLine("及格");
} else {
Console.WriteLine("不及格");
}
- if...else if...else语句
int score = 60;
if(score > 80){
Console.WriteLine("优秀");
} else if(score > 60 && score < 80){
Console.WriteLine("及格");
} else {
Console.WriteLine("不及格");
}
- switch语句
int weekday = 1;
switch(weekday){
case 1 :
Console.WriteLine("周一");
break;
case 2 :
Console.WriteLine("周二");
break;
case 3 :
Console.WriteLine("周三");
break;
case 4 :
Console.WriteLine("周四");
break;
default :
Console.WriteLine("输入错误");
break;
}
/**
(1)switch括号内是一个变量,而且该变量的取值是有限的
(2)case后面的值是固定的
(3)每一个case和default后面必须有一个break;
(4)建议把default语句写上,因为用户的输入不一定按照程序编写的思想输入,可能存在异常输入,如整型输入成字符型,1-7输入了8
*/
5 循环结构
循环结构:
- while
int i = 0;
int sum = 0;
while(i<= 100){
sum = sum +i;
i = i +1;
}
- do-while
int i = 0;
int sum = 0;
do{
sum = sum + i;
i = i + 1;
}while(i <= 100);
- for
int sum = 0;
for(int i = 0; i <= 100; i = i +1;){
sum = sum +i;
}
- foreach:一般用于数组或列表
List temp = new List();
foreach(temp as t){
t.Add('hellow');
}
6 面向对象的概念(类)
类和对象的关系
- 对象是类的实例化,是一类事务中的一个特定实例,如人类里面的张三,张三就是人类的实例
类的成员
- 属性/字段
- 方法/事件
类的定义
- [修饰符] class 类名 { }
修饰符:public protected private internal sealed
//定义
public class People{
public string name{get;set;}
public int age;
public string info(){
Console.WriteLine(this.name+"=="+this.age);
}
}
//使用
People p = new People();
类的构造函数和析构函数
//定义,构造函数在类实例化时调用
//构造函数的固定格式是:public 类名(参数){}
public class People{
public string name;
public int age;
//定义构造函数
public People(){
}
public People(string _name, int _age){
this.name = _name;
this.age = _age;
}
public string info(){
Console.WriteLine(this.name+"=="+this.age);
}
//析构函数,一般涉及不到
~People(){
Console.WriteLine("析构函数");
}
}
//使用
People p = new People("张三", 21);
方法/事件的定义
- [修饰符] 返回值 函数名(参数){}
- 修饰符:public protected private
- 返回值:void(空值,不反回,不用写return),C#的值类型和引用类型都可以作为返回值
- 除了void之外,其他的函数必须由return,return的值要和事件/方法定义的返回值相同
- 参数:可以是C#支持的任何数据类型,括号内的叫做形式参数,实际调用时叫做实际参数
//定义,构造函数在类实例化时调用
//构造函数的固定格式是:public 类名(参数){}
public class People{
public string info(string name){
//string name 叫做形参
return "欢迎您:"+name;
}
}
//调用
People p = new People();
p.info("张三");//"张三"是实参
方法的重载(一个方法实现不同的功能)
- 函数名相同
- 参数的个数和类型不同(主要是个数)
- 返回值可以不同
//定义,构造函数在类实例化时调用
//构造函数的固定格式是:public 类名(参数){}
public class People{
public void info(){
Console.WriteLine("。。。");
}
public string info(string name, string address){
return name+age;
}
public int info(int age){
return age + 20;
}
}
7 静态类/方法/属性
添加static修饰符
- 静态类/方法/属性是放置在公用内存空间的,大家都可以用,无需实例化
- 正常:People p = new People(); p.info()
- 静态:People.info();
public static class People{
public static void info(){
Console.WriteLine("。。。");
}
}
//使用
People.info();
8 类的继承
以:继承
- 类只能单继承
- 类继承时只能继承父类的非私有属性和方法
- 类的继承具有传递性People:Mannal:Animal
class Animal{
}
class Mammal : Animal{
}
class People : Mammal{
}
9 抽象类
以abstract关键字定义抽象类
- 抽象类里可以由实现,也可以不实现
- 抽象类不能直接实例化
- 抽象类必须被继承后,才可调用,继承的类必须实现所有的抽象方法
public abstruct class db{
//普通方法
public void connect(){
Console.WriteLine("1234");
}
//抽象方法
public abstruct void insert();
}
class mysql : db{
public overwrite void insert(){
Console.WriteLine("Insert");
Console.WriteLine("Insert");
}
}
mysql my = new mysql();
my.insert();
10 接口
以interface关键字定义接口
- 接口没有实现
- 接口必须被类继承并实现后才能实例化
- 接口可以多继承
interface IO{
void write();
void read();
}
interface IText{
void encode();
void decode();
}
class Doc : IO,IText{
//隐式实现
public void write(){ }
public void read(){ }
public void encode(){ }
public void decode(){ }
//显示实现
public void IO.write(){ }
public void IO.read(){ }
public void IText.encode(){ }
public void IText.decode(){ }
}
//隐式调用
Doc d = new Doc();
d.write();
//显示调用
IO i = new Doc();
i.write();
阅读剩余
版权声明:
作者:姜九二
链接:https://www.jiangjianwu.cn/development/coding/334/%e3%80%8a%e9%ab%98%e7%ba%a7%e8%af%ad%e8%a8%80%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1%ef%bc%88c%ef%bc%89%e3%80%8b%e5%a4%8d%e4%b9%a0.html
文章版权归作者所有,未经允许请勿转载。
THE END