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

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}; //只指定第一个常量的值时,此后的常量值会自动递增1

enum 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()
        {
            //创建一个对象p1
            Point1[] 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();
            //创建一个对象p2
            Point2[] 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中的目录(包括所有子目录和文件),否则为false

Directory.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

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

 

 

 

 

 

 

 

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值