2020C#程序设计及应用教程复习总结

目录

第一章

第二章

第3-4章

第5-6章

第七章

第八章

第九章

第十二章


第一章 C#代码编程基础

1.基本概念

(1)Microsoft.NET框架包括两个主要组件,一个是公共语言运行库(CLR),一个是类库。其中,公共语言运行库提供.NET应用程序所需要的核心服务;类库是与公共语言运行库紧密集成的可重用的类的集合,旨在为开发和运行.NET应用程序提供各种支持。

(2)命名空间

根据类的功能不同,将这些类分别划分到不同的命名空间中。

using关键字的三种用途:1.作为引用指令,用于为命名空间导入其他命名空间中定义的类型。2.作为别名指令,用于简化命名空间的表达形式。3.作为语句,用于定义一个范围。

(3)控制台应用程序的入口(Main方法)。

(4)WPF应用程序的入口(App.xaml),WPF应用程序从Main方法开始运行。

2.控制台应用程序的输入和输出

(1)接收从控制台输入的字符串。Eg1-1.

string s = Console.ReadLine();//读入从控制台输入的字符
Console.WriteLine();
Console.Write(s);  //输出不换行
Console.WriteLine(s);  //输出换行
int a1 = 3, a2 = 4, a3 = 5;
Console.WriteLine("{1},a1{2},\n{0}", a1, a2, a3);  //格式化输出

(2)格式化符:D、F的使用方法

第二章 基本数据类型和流程控制语句

1.基本概念

(1)值类型包括简单类型、枚举、自定义结构类型和可空类型;引用类型包括类、接口、数组和委托。值类型和引用类型的区别在于,值类型变量直接在堆栈中保存变量的值,引用类型的变量在堆栈保存的是对象的引用地址。

(2)各种基本数据类型的定义和使用(此处只提重点)

1.布尔类型(bool)

//bool型只有两个值:true和false
bool myBool = false;
bool b = (i>0 && i<10);
//在C#语言中,条件表达式的运算结果必须是bool型的
int i = 5, j = 6;
if(i) j += 10;  //错误
if(j = 15) j += 10; //错误
//正确用法:
if(i != 0) j += 10;
if(j == 15)j += 10;

2.字符类型(char)

//字符型常量用单引号引起来
char c1 = 'A'
char c2 = '\x0041' //字母A的十六进制表示
char c3 = '\u0041' //字母A的Unicode编码表示

3.枚举类型(enum)

//定义枚举类型时,枚举中的所有常量值必须是同一种基础类型。基础类型只能是8中整型类型之一,如果不指定基础类型,默认为int类型
public enum MyColor{Red, Green, Blue};
public enum MyColor{Red=0, Green=1, Blue=2};//与上式同
public enum Number:byte{x1=3, x2=5}; //基础类型为字节型
public enum MyColor{Red=1, Green, Blue}; //只指定第一个常量的值时,此后的常量值会自动递增1enum Number:byte{x1=255, x2}; //注意,此处用法错误,byte类型的取值范围是0-255

2.基本类型之间的转换

(1)将字符串s转换为整型、浮点型。

int n1 = int.Parse(s);
int n2;
var b1 = int.TryParse(s, out n2); //异常处理
double d1 = double.Parse(s);
double d2;
var d2 = double.TryParse(s, out d2);

(2)int和char之间的转换

int a = 50;
char b = 'a';
int a1 = (int)b;
char c1 = (char)a;
var b1 = char.IsDigit(b);  //判断一个字符是否是数字
var b2 = char.IsLetter(b); //判断一个字符是否是字母

3.字符串常用处理方法

//求字符串长度
var s = "abEF123 张三 456";
var n = s.Length;
//求子字符串的起始位置(IndexOf)
var s = "abcdcd123123";
var n1 = s.IndexOf("cd"); //n1=2
//求字符串(Substring)
var s = "abcdcd123123";
var s1 = s.Substring(1, 3); //s1="bcd" 从1开始截取3个字符
var s2 = s.Substring(3); //s2="dcd123123" 从3开始截取后面所有字符
//求字符串中某个位置的字符串、插入、删除字符
var s = "abcdcd123123";
char c1 = s[3];
var s1 = s.Insert(2, "xy");  //s1="abxycdcd123123" 从2开始插入
var s2 = s.Remove(2, 1); //s2="abdcd123123" 从2开始,移除一个字符

4.数组

//一维数组的定义,遍历,排序
int[] a = new int[30];
a[0] = 23;
a[29] = 67; //赋值
for(int i=0; i<a.Length; i++){ //遍历Console.Write(a[i]);
}
Array.Sort(a); //按升序排序
Array.Reverse(a); //反转数组a的值
int max = a.Max(); //求最大值
int min = a.Min(); //求最小值
int sum = a.Sum(); //求和
int ave = a.Average(); //求平均值
//拆分字符串到数组中;合并数组到字符串中
string s = "a1,a2,a3 32 25";
var a1 = s.Split(','); //a1 = {"a1", "a2", "a3 32 25"}
var a2 = s.Split(',', ''); //a2 = {"a1", "a2", "a3", "32", "25"}
var b1 = string.Join(",", a1); //b1=s;
var b2 = string.Join(",", a2); //b2="a1,a2,a3,32,25";

5.数据类型转换

(1)隐式转换:是系统默认的、不需要加以声明就可以进行的转换,如从int类型转换到long类型,适用于从低精度、小范围的数据类型转换为高精度、大范围的数据类型;显式转换:又称强制转换,显示转换需要用户明确地指定转换的类型例如long k = 5000; int i = (int)k;。所有的隐式转换都可以采用显示转换的形式来表示。将大范围类型转换为小范围类型数据时,必须谨慎以免丢失数据。

(2)装箱(boxing):装箱操作是将值类型隐式地转换为Object类型。装箱一个数值会为其分配一个对象实例,并把该数值复制到新对象中。例如 int i = 123; object o = i; 拆箱(unboxing):拆箱操作是指显式地把Object类型转换为值类型。例如int j = (int)o;   装箱和拆箱必须遵循类型兼容。

6.流程控制语句

if-else, switch-case-default, for, foreach, while, do-while, continue, break, try-catch, try-catch-finally, throw语句详例请参考课本p54

第3-4章

1.类

(1)类是封装数据的基本单位,用来定义对象具有的特征(字段、属性等)和可执行的操作(方法、事件等)。

类的主要成员:字段、构造函数、属性和方法;成员分为:static成员和实例成员。

(2)访问修饰符:public、private、protected、partial

(3)构造函数、默认构造函数、重载构造函数Eg3-2

using System.Text;
namespace ch03.Examples
{class StructExample(){StringBuilder sb = new StringBuilder();public StructExample(){//创建一个对象p1Point1[] p1 = new Point1[10];for(int i = 0; i < p1.Length; i++){//由于Point1是类,所以必须为每个元素创建一个对象p1[i] = new Point(i, i);sb.AppendFormat("({0}, {1}) ", p1[i].x, p1[i].y);}sb.AppendLine();//创建一个对象p2Point2[] p2 = new Point2[10];for(int i = 0; i < p2.Length; i++){//由于Point2是结构,所以不需要再为每个元素创建对象sb.AppendFormat("({0}, {1}) ", p2[i].x, p2[i].y);}sb.AppendLine();System.Windows.Forms.MessageBox.Show(sb.ToString());}}class Point1{public int x,y;public Point1(int x, int y){this.x = x;this.y = y;}}struct Point2{public int x, y;public Point2(int x, int y){this.x = x;this.y = y;}}
}

(4)字段与局部变量

字段是指在类或结构中声明的“类级别”的变量。换句话说,字段是整个类内部的所有方法和事件都可访问的变量。

局部变量是相对与字段来说的。可以将局部变量理解为“块”级别的变量,例如在某个while块内定义的变量其作用域仅局限于定义它的块内,在块的外部则无法访问该变量。

2.结构

结构式值类型

结构和类的区别:它与类的主要区别是结构中的数据保存在堆栈(Stack)中而不是堆(Heap)中。另外,所有结构也都和类一样默认隐式地从Object类继承,但结构不能继承自其他结构。

3.属性、方法和事件

(1)属性是字段的扩展,用于提供对字段读写的手段。属性和字段的区别是,属性不表示存储位置,而通过get访问器和set访问器指定读写字段的值时需要执行的语句。根据使用情况,可以只提供其中一个访问器,也可以两者同时提供。

(2)属性的定义(get、set)。
典型错误:未定义私有字段,但set中又包含赋值(属性名 =value)

(3)方法的定义和参数传递,详例eg3-3,3-4,3-5(课本p80)

(4)WPF定时器DispatcherTimer用法

(5)随机数的基本用法

//为避免频繁创建Random对象而创造出相同的随机数序列,一般先创建单个Random对象,然后利用对象提供的方法来生成随机数
Random r = new Random();
String s;
for(int i=0; i<5; i++)
{s += r.Next(1, 40+1) + ",";
}

4.类的继承与多态性

(1)面向对象编程的三个基本原则:封装、继承和多态。

(2)扩充类不能继承基类中所定义的private成员,只能继承基类的public成员或protected成员。在继承过程中,基类的实例构造函数、静态构造函数和析构函数不可被继承。base关键字用法:public B(int age):base(age),其含义为:将B类的构造函数的参数age传递给A类的构造函数。

(3)多态性中虚拟方法(virtual)、重写(override)、隐藏(new)

public virtual string MyProperty{get; set;} //扩充类可以重写此属性
public virtual void myMethod()  //扩充类可以重写此方法
{//实现代码
}
//扩充类中
public override void myMethod()
{//实现代码
}
//virtual不能和privat、static一起用
public new void myMethod() //在基类中隐藏同名方法,需要调用时使用base.方法名调用
{//实现代码
}

第5-6章

1.泛型与LINQ

(1)泛型列表List<T>用法,例题5-2

//核心代码
List<string> list = new List<string>();
list.Add("张三");
list.Add("李四");
list.Insert(0, "王五");
if(list.Contains("赵六") == false)
{list.Add("赵六");
}
//可以通过下标访问

(2)LINQ查询表达式(自行参考课本p124-130)

2.目录与文件操作

(1)目录、文件的创建、删除、移动、判定目录、文件是否存在

//public static DirectoryInfo CreateDirectory(string path) 创建目录,path为要创建的目录路径,若指定的路径不存在,系统会按path指定路径创建所有目录和子目录。Directory.CreateDirectory(@"c:\test");  //@表示之后的语句不再解析变量//public static void Delete(string path, bool recursive) 删除指定目录 recursive为true则移除path中的目录(包括所有子目录和文件),否则为falseDirectory.Delete(@"c:\test", true)//public static void Move(string sourceDirname, string destDirName) 移动目录或重命名,sourceDirName为要移动的文件或目录路径,destDirName为新位置的目标路径(应为新目录,不可以时已经存在的路径)//判断目录是否存在
string path1 = @"c:\temp";
if(Directory.Exists(path1))
{Console.WriteLine("存在{0}目录", path1);
}//判断文件是否存在
string path1 = @"c:\temp\MyTest1.txt";
if(File.Exists(path1))
{Console.WriteLine("存在{0}文件", path1);
}
//复制文件 public static void Copy(string sourceFileName(被复制的文件名), string destFileName(目标文件名), bool overwrite(是否覆盖目标文件))
File.Copy(path1, path2, true)//删除文件 public static void Delete(string path) 指定文件不存在时不会引发异常//移动文件 public static void More(string sourceFileName(要移动的文件名), string destFileName(文件新路径))

(2)读写文本文件(详见课本p142-p144)

第七章 WPF应用程序入门(课本p158)

(1)XAML基本语法(p158)。注意区分大小写

(2)WPF窗口创建、显示(show、showDialog)、隐藏和关闭(closing事件)

(3)用C#代码设定WPF控件的背景色,用C#代码创建纯色画笔

(4)WPF应用程序中,事件注册的方法、事件源判定(sender、e.Source)

(5)WPF的事件路由策略:直接、冒泡和隧道及其含义

(6)常用鼠标和键盘事件

第八章 WPF控件

(1)基本概念

1.WPF控件模型:内容、内边距、边框和外边距。P194

2.WPF内容模型 P204

Text 内容模型(Text 属性,控件:TextBox、TextBlcok、PasswordBox);Content内容模型(Content属性,控件:Label、Button、Image、RadioButton、CheckBox)

(2)布局控件

1.Grid布局控件的含义及其基本用法(*,3*,auto,Grid.Row/Grid.RoeSpan, Grid.Column/Grid.ColmunSpan)

2.StackPanel布局控件适用于子元素纵向或横线顺序排列。

3.Canvas 是WPF中惟一的一个绝对定位布局控件,其余布局控件均为动态定位布局控件。

4.DockPanel定义一个区域,使其内子元素可以沿着某个方向停靠的控件。

(3)常用基本控件

1.标签控件 Label、文本块控件 TextBlock 及其常用属性的基本用法。

2.按钮(Button)及其常用属性的基本用法。

3.文本框控件TextBox 和PasswordBox,例8-10。

4.列表框控件ListBox和ComboBox控件,例8-13。

第九章 资源与样式控制

(1)XAML资源的声明:在元素的Resources属性内使用Style元素定义样式,4种Style定义形式,TargetType 和X:key特性(P240)

(2)内联式、框架元素样式、应用程序样式、资源字典的含义。

(3)会使用元素的Style属性引用各种资源。静态资源(StaticResource),动态资源(DynamicResource)。

第十二章 数据库与实体数据模型

(1)数据库优先模式:先创建数据库,然后根据数据库生成实体数据模型。

(2)用实体框架(EF)和LINQ对数据表进行添加、删除、修改和查询操作。例题12-4、5、6、7、8

不够详细的地方请自行查阅课本,如有错误欢迎指正。

2020C#程序设计及应用教程复习总结相关推荐

  1. 读ACM程序设计竞赛基础教程之-------技巧小结

    ACM程序设计竞赛基础教程 前言 分治算法 计数问题(统计数字出现个数) 查找等式的解(思维) 递归算法 汉诺塔问题 贪心算法 钓鱼问题 前言 鉴于本人原因,本文记录的是博主认为之前没有想过的思路和想 ...

  2. 单片机独立式按键c语言程序,(原创)51单片机C语言程序设计--速学教程实例(入门篇)之独立按键(查询)...

    (原创)51单片机C语言程序设计--速学教程实例(入门篇)之独立按键(查询) /************************************************************ ...

  3. java程序设计与实践教程 王薇 doc_Java程序设计与实践教程 王薇主编 答案

    Java程序设计与实践教程 王薇 主编 董迎红 副主编 课后习题 答案 第1章 JAVA简介 一.判断题 1.√ 2.√ 3. 4. 5. 6.√ 7.√ 8.√ 9. 10. 二.填空题 1.App ...

  4. 计算机 电工学简明教程,电工学简明教程复习要点

    <电工学简明教程复习要点>由会员分享,可在线阅读,更多相关<电工学简明教程复习要点(88页珍藏版)>请在人人文库网上搜索. 1.本章要求掌握1 .旁路电流法.叠加原理.达宾定理 ...

  5. c语言周林答案,C语言程序设计实训教程教学课件作者周林ch04结构化程序设计课件.ppt...

    C语言程序设计实训教程教学课件作者周林ch04结构化程序设计课件.ppt * * 4.1 选择结构程序设计 4.2 循环结构程序设计 4.3 辅助控制语句 第四章 结构化程序设计 4.1 选择结构程序 ...

  6. 考研807程序设计C语言教程,中央财经大学

    考研是一场持久战,在中央财经大学807C语言程序设计考研复习的过程中,难免会遇到各种各样的问题和挑战.在进入强化冲刺阶段之后,高强度的学习和心里压力更是让很多学子身心疲惫!如何少走弯路,及时解决这些问 ...

  7. c语言程序设计工作任务,C语言程序设计任务驱动教程

    <高等院校计算机任务驱动教改教材:C语言程序设计任务驱动教程>强调动脑.动手,强调"做中学.做中会".每个教学单元的语法知识条理化,程序编写渐进化,通过"知识 ...

  8. 《Java程序设计与数据结构教程(第二版)》学习指导

    <Java程序设计与数据结构教程(第二版)>学习指导 目录 图书简况 学习指导 第一章 绪论 第二章 数据和表达式 第三章 使用类和对象 第四章 条件和循环 第五章 编写类 第六章 图形用 ...

  9. C语言程序设计案例式教程

    C语言程序设计案例式教程 数据类型与运算符 变量的数据类型 :整形变量,实型变量,字符型变量,枚举类型变量: (单引号内只可以存放转义字符.一个字符) 数据类型 所占字符数 char 1个字节 int ...

最新文章

  1. hpm1216nfh驱动程序_惠普HP LaserJet Pro M1216nfh 一体机驱动
  2. udp如何知道对方关闭_聊聊tcp和udp那些事
  3. Oracle增大redo log file的方法
  4. Asp.Net Core 快速邮件队列设计与实现
  5. multi task训练torch_手把手教你使用PyTorch(2)-requires_gradamp;computation graph
  6. linux编译内核的步骤
  7. Android4.0 添加一个新的Android 键值
  8. idea无法正常使用SVN的解决方法
  9. 高斯过程和高斯过程回归
  10. Protel 99 SE 应用技术问答
  11. 汽车侧向动力学模型简介(动力学建模入门知识)
  12. PyTorch1.12 亮点一览 | DataPipe + TorchArrow 新的数据加载与处理范式
  13. i5 12490f和i5 12600kf差距 i512490f和i512600kf对比
  14. 计算机应用基础试题文件夹,计算机应用基础试题及参考答案
  15. 演示程序之打游戏 -- 慕司板IAP15
  16. 模拟stack/queue/priority_queue
  17. Nature communications:VWFA,一个集语言与注意于一身的脑区
  18. Jenkins+tomcat安装笔记
  19. STM32定时器中断实验
  20. 15个有趣的555电路,没事可以自己做一做

热门文章

  1. excel怎么转换成左上角带绿色小三角的文本格式
  2. Android的自动锁屏、解锁
  3. Java中使用封装实现电子宠物系统的企鹅类正确输入健康值和亲密度
  4. C语言求1900到2000年之间的闰年
  5. 关于Spring-Data-Mongodb中的project()的用法,和previousOperation()的用法
  6. zigbee定位的概念
  7. Android“FakeID”签名漏洞分析和利用
  8. uniapp系列-图文并茂手把手教你hbuilder进行uniapp云端打包 - 安心打包
  9. 【媒体应用:Android平台VLC媒体播放器探索之路系列】之一:VLC播放器开篇
  10. 厚积方能薄发,通往Android封神之路的降龙十八掌