C#开发轻松入门(慕课网)
1、C#简介
1-1 .NET简介
.NET平台可运用多种语言编程,C#配合的最好。
1-2 Visual Studio简介及安装
...
1-6 Hello World
控制台程序:Main方法,程序的入口
Console.Write("Hello World\n"); // Ctrl+F5直接运行
namepalce命名空间--class类(C#程序有一个一个的类组成)
2、C#语法基础
const常量
数组声明:
string[] name = new string[3]; char[] a = new char[] {'a', 'b', 'c'}; char[] a = {'a', 'b', 'c'}; //二维数组,看作是数组的数组 int[,] arr = new int[2,3]; //包含2个一维数组,每个一维数组包含3个变量,总共2*3=6个数组元素
foreach
foreach循环可以不依赖索引而读取每一个数组元素,有迭代的意思
int[] num = {1, 2, 3}; foreach(int i in num) { Console.Write(i); }
在控制台接收输入:
string name; name = Console.Readline();
在C#中进行断点跟踪和调试:
F9设置/取消断点
F5进行调试
F10进行单步执行
F11进入方法体
用C#实现封装(慕课网)
1、C#中的类和对象
1-1 类和对象的概念:
面向对象、封装、继承、多态、类、对象、字段(属性)、方法。
实例化
1-2 定义类
在项目处右击添加类
namespace MyFirstApp { ////// 小朋友 /// class Child { public string name; public int age; public void playBall() { Console.Write("我是LBJ"); } } }
1-3 实例化对象并访问对象成员
Child XiaoMIng = new Child();//实例化对象 XiaoMing.name = "小明";//为字段赋值 XiaoMIng.playBall();//调用方法
1-4 访问修饰符public&private
public(公共的)、private(私有的)
默认为private
2、属性的封装
2-1 封装的概念
为什么要在程序中使用封装--使用封装(隐藏对象的信息、留出访问的接口)
class Child { private string _sex; public string Sex { //get、set、value都是关键字 get{return _sex;}//读访问器 set{_sex = value;}//写访问器 } }
2-2 代码实现属性的封装
封装的快捷键:Ctrl+R+E
class Child { private string _name; //使用快捷键Ctrl+R+E实现快速封装 public string Name { get { return _name;} set { _name = value;} } }
2-3 只读属性
只有get访问器,用构造方法为字段进行初始化
2-4 通过set块约束属性赋值
private int _age; public int Age { get { return _age; } set { //约束属性赋值 if(value>3 && value<7) _age = value; } }
3、方法
3-1 定义并调用无参方法
。。。
3-2 定义并调用带参方法
形参实参
public void EatSuge(string suger) { if(suger == "榴莲糖") //输出 else //输出 }
3-3 方法的重载(通过实参类型和参数数量的不同确定)
public void EatSuge(int count) { //... } public void EatSuge(string suger, int count) { //... }
3-4 通过return结束方法调用或带回返回值
4、构造方法
4-1 默认构造方法、无参构造方法和有参构造方法
构造方法:在实例化对象时为属性赋初始值
通常声明为public,可重载
无参:
public Child() {//...}
有参:
public Child(string name, string sex, int age) { _name = name; _sex = sex; _age = age; }
4-2 this关键字
this代表当前对象
public Child(string name, string sex, int age) { this._name = name; this._sex = sex; this._age = age; }
4-3 对象初始化器
Child child = new Child(){Name = "asf", Age = 5};
5、值类型和引用类型
5-1 值类型与引用类型
**值类型:int、char、double、bool
//x的值不变,创建了y副本 //值类型变量存储对象的值,赋值会创建值得副本,修改任何副本都不会影响其他副本 int x; int y=x; y--;//y变x不变
**引用类型:类(string)、数组、接口
//引用类型存储对象的内存地址 //赋值不会创建值得副本,只会创建地址的副本 //修改任何一个副本,也同时修改其他的副本 Child c1 = new Child(); c1.Name = "张小明"; Child c2 = c1; c2.Name = "刘小勇"; Console.Write(c1.Name);//输出为刘小勇 Console.Write(c2.Name);//输出为刘小勇
5-2 结构(值类型,也可以有字段、属性和方法)
结构与类的不同:
最根本的区别是结构是值类型,而类是引用类型;
结构的字段不能赋初始值;
结构不能定义无参的构造方法;
结构内的构造方法里必须为所有的字段赋值;
结构定义时不必须实例化;
5-3 枚举(值类型)
举例:用枚举限制sex的赋值
enum Gender { 男,女 }
特点:
枚举是值类型;
枚举不能定义字段、属性和方法;
枚举值是从0递增的整数。
5-4 方法传参中的值类型和引用类型
值类型与引用类型赋值时不同造成的差异
引用类型,按引用传参,传递的是地址--导致形参改变实参也改变
值类型,按值传参,传递的是值副本--形参改变,实参不变
5-5 ref关键字
//使得值类型的参数可以按照引用传参 class Program { static void Main(string[] args) { int age = 2; increase(ref age);//传入age的引用,类似于C++的&age Console.Write(age); } static void increase(ref int Age)//ref int传入引用,类似于C++的int& { Age++; } }
5-6 out关键字
返回多个值
举例:
class Program { static void Main(string[] args) { int ly, ny;//去年的年龄,明年的年龄 int age = 2; lyny(age, out ly, out ny);//返回去年的年龄和明年的年龄 Console.WriteLine(ly+" "+ny);//输出1 3 } static void lyny(int Age, out int lastyear, out int nextyear)//输出去年的年龄和明年的年龄 { lastyear = Age - 1; nextyear = Age + 1; } }
5-7 课程总结
封装
类和对象
把字段封装成属性
方法
构造方法
值类型和引用类型