赞
踩
知识点:了解.NET 特性、 掌握.NET 框架结构组成和原理、掌握类和对象的概念、 掌握封装的基本概念
参考复习资料:C#编程基础第一课:C#和.NET框架、VS软件基本使用、编写第一个C#程序
简单地说,CLR是CTS的实现,也就是说,CLR是应用程序的执行引擎和功能齐全的类库,该类库严格按照CTS规范实现。作为程序执行引擎,CLR负责安全地载入和运行用户程序代码,包括对不用对象的垃圾回收和安全检查。在CLR监控之下运行的代码,称为托管代码(managed code)。
比如,我们想购买20台电脑,在购买之前,会列出一个配置清单(CPU、内存、显示器……),到店以后和销售人员进行交流,确定配置清单。
类定义的具体语法形式如下:
- 类的访问修饰符 类的修饰符 class 类名
- {
- //类的成员
- }
字段又称为:“成员变量”,一般在类的内部做数据交互使用。 字段的命名规范:camel命名法(首单词的首字母小写,后面其他单词的首字母大写)。
通俗的理解字段:
注意:如果类型的定义中,没有指定字段的初始值,使用对象时也没有给字段赋值,那么字段将会被赋予其类型的默认值:
测试:
- namespace ConsoleApp1
- {
- class Student//声明一个类
- {
- private string _name;//声明一个字段
- public string Name { get; set; }//声明属性
-
- private string _gender;
- public string Gender { get; set; }
-
- private int _age;
- public int Age { get; set; }
-
- private bool _wuHan;
- public bool WuHan { get; set; }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Student stu1 = new Student();//new一个对象
- stu1.Name = "张三";//只给对象的Name属性赋值,其他属性没有赋值
- Console.WriteLine("{0}你好,你的性别是:{1},你的年龄是:{2},是否武汉人:{3}",stu1.Name,stu1.Gender,stu1.Age,stu1.WuHan);
- Console.ReadLine();
- }
- }
- }
输出结果:
属性的理解:
C#中定义属性的语法:
- private string _name; //定义字段
-
- public string Name //定义属性
- {
- get{return _name;}
- set{_name = value;}
- }
定义属性时,我们需要首先定义一个私有字段,再定义一个公开的属性封装该字段,属性中定义了 get 和 set 访问器,通过 get 访问器可以访问私有字段的值,通过 set 访问器可以设置该字段的值。 属性按读写类型分为三种:
属性的作用:
- private int _age;
- public int Age
- {
- get { return _age; }
- set
- {
- if (value < 0)
- {
- _age = 18;
- }
- else
- {
- _age = value;
- }
- }
- }
方法是类的行为,C#中定义方法的语法是:
- 方法的访问修饰符 方法的返回值类型 方法名(参数列表)
- {
- //方法体
- }
补充说明:C#中return语句的使用方法
return语句用来终止它所在的方法的执行,并将控制权返回给调用方法,另外,它还可以返回一个可选值。如果方法为void类型,则可以省略return语句。
return语句后面可以是常量,变量,表达式,方法,也可以什么都不加。return语句可以出现在方法的任何位置。一个方法中也可以出现多个return,但只有一个会执行。当return语句后面什么都不加时,返回的类型为void。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
-
- namespace ConsoleApp1
- {
- class Student
- {
- /*
- * 类中可以存放的成员:
- * 字段:采用_camelCase命名方式
- * 属性:采用PascalCase命名方式
- * 方法
- */
- public string _name;//姓名
- public string _gender;//性别
- public int _age;//年龄
- //字段和变量的区别:字段可以存放多个值,变量只能存放一个值
-
- //声明一个方法,用以输出信息
- //静态方法只能调用静态成员,非静态方法可以调用任何成员
- public void Write()
- {
- Console.WriteLine("我叫{0},我是{1}生,我今年{2}岁了!",_name,_gender,_age);
- }
-
- }
- }
第四步,实例化对象,并调用方法:在主程序Main方法中,实例化对象,并调用我们刚才写的方法。实现方法:在右侧解决方案资源管理器中,双击类名【Program.cs】,打开文件。
- static void Main(string[] args)
- {
- //将类实例化,就是将类指定某个对象
- Student zsStudent = new Student();
- zsStudent._name = "张三";
- zsStudent._gender = "男";
- zsStudent._age = 19;
-
- //调用非静态方法
- zsStudent.Write();
- Console.ReadLine();
- }
第五步,预览效果:点击菜单栏【启动】,查看运行效果。
案例思考:再实例化一个对象,进行输出。同时声明一个变量,进行两次赋值,然后进行输出,观察结果对比。
- static void Main(string[] args)
- {
- //将类实例化,就是将类指定某个对象
- Student zsStudent = new Student();
- zsStudent._name = "张三";
- zsStudent._gender = "男";
- zsStudent._age = 19;
- string mystr = "王五";//声明一个变量,并赋值
-
- //调用非静态方法
- zsStudent.Write();
-
- //实例化第二个对象
- Student lsStudent = new Student();
- lsStudent._name = "李四";
- lsStudent._gender = "女";
- lsStudent._age = 18;
- mystr = "赵六";//给变量mystr,重新赋值
-
- //调用非静态方法
- lsStudent.Write();
- Console.WriteLine(mystr);
- Console.WriteLine(mystr);
- Console.ReadLine();
- }
第四步,声明方法:在Clerk类中,继续声明一个方法,用以输出自我介绍。
- class Clerk
- {
- private string _name; //声明一个私有字段_name
- public string Name { get; set; } //声明一个自动属性
-
- private string _gender;
- public string Gender //声明一个只读属性
- {
- get
- {
- _gender = "男";
- return _gender;
- }
- }
-
- private int _age;
- public int Age //声明一个读写属性
- {
- get { return _age; }
- set
- {
- if(_age<1 || _age > 100) //判断写入的年龄数据,是否符合逻辑
- {
- value = 18; //如果写入的年龄小于1或大于100,则设置value值为18
- }
- _age = value; //将value值,赋值给_age
- }
- }
-
- //声明方法,输出职员信息
- public void SayHello()
- {
- Console.WriteLine("我叫{0},我是{1}员工,我今年{2}岁!", Name,Gender,Age);
- }
- }
第五步,实例化对象,并调用方法:在主程序Main方法中,实例化对象,并调用我们刚才写的方法。实现方法:在右侧解决方案资源管理器中,双击类名【Program.cs】,打开文件。
- static void Main(string[] args)
- {
- //实例化一个对象,语法:类名 对象名 = new 类名();
- Clerk zsClerk = new Clerk();
- //给对象相关属性赋值
- zsClerk.Name = "张三";
- //zsClerk.Gender = "女"; //Gender属性由于是只读属性,因此这里如果给它赋值会编译出错
- zsClerk.Age = 0;
-
- //调用方法,语法:对象名.方法名();
- zsClerk.SayHello();
- Console.ReadLine();
- }
第六步,预览效果:在右侧【解决方案资源管理器】中,右键单击项目名称【ConsoleApp2】——点击【设为启动项目】,然后再点击菜单栏【启动】,查看运行效果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。