zoukankan      html  css  js  c++  java
  • .NET复习要点

    image
    image
    重点:第七章、第八章面向对象⭐⭐

    一、填空题要点

    顶层类Object属性和事件(第七章P163)

    4个公有成员方法:
    image
    使用:

    object o1 = new object();
    Console.WriteLine(o1.GetType());	//输出System.Object
    

    面向对象相关概念(第七章P137)

    主要特性:封装性、继承性、多态性


    • 类是一种提供功能的数据类型,可以用来声明、产生对象。可以把类理解成一种定义了对象行为和外观的抽象模板,把对象看作是类的具体实例;对象就是类的一个实例,而一个类可以创建多个对象。

    • 对象
      任何一个对象都具有属性和方法这两个要素。
      一个系统的多个对象之间通过一定的渠道相互联系,因此对象要能收发消息。所谓消息,就是对象与对象之间用来沟通的信号、语言等。

    • 访问修饰符
      image

    • 静态类(第七章P159)
      使用static关键字声明
      image

    • 抽象类(第8章P183)
      使用abstract修饰
      有抽象类成员,只有声明,没有实现;可以包含非抽象的成员
      抽象类不能被实例化,因为包含没有实现的成员
      从抽象类继承的类必须实现所有功能,如果没有完全实现,也会变成抽象类,必须用abstract修饰。
      抽象类定义方法,由派生类实现

    • 委托(第8章P196)
      委托能将方法本身作为参数传递
      声明委托

    [访问修饰符] delegate 返回值类型 委托名([参数列表]
    public delegate int Caculate(int x, int y); //声明了一个Caculate的委托
    

    委托的实例化

    委托类型 委托变量名 =  new 委托型构造函数( 委托要引用的方法名)
    int intAdd(int x, int y){
    	return x + y;
    }
    
    int intSub(int x, int y){
    	return x - y;
    }
    Caculate a1 = new Caculate(intAdd);
    Caculate a2 = new Caculate(intSub);
    

    委托方法的调用

    Caculate cal = new Caculate(intAdd);
    int result = cal(6,8);
    
    //另一种调用
    Caculate cal = intAdd;
    int result = cal(6,8);
    

    委托使用分为3步:类型定义、对象创建和方法绑定、方法调用
    一个委托对象可以封装多个方法进行多路广播

    • 接口(第8章P188)
      接口比抽象类型更抽象,只描述能提供什么服务,但不实现任何功能
      C#可以用接口实现多继承
      功能由派生类实现
    • 事件(第8章P203)
      完整的事件有三要素
      image
      发布者类中声明事件
    public delegate void ClassEventHandler();     //声明委托
    public class Subscriber     //发布者类
    {
        private string str;
        public string Str
        {
            get { return str; }
            set { str = value; }
        }
        public event ClassEventHandler InputStr;    //声明事件
        public void InputSomething()
        {
            if(Console.ReadLine() == "class")
            {
                if (InputStr != null)
                    InputStr();      //触发事件
            }
    
        }
    }
    

    订阅者类中订阅事件

    public class Student: Person, AttendClass, Exam
    {
        public Student(string name, string id):base(name, id)
        {
    
        }
    
        public void Enter(Subscriber sub)
        {
            sub.InputStr += go_to_class;
        }
    
        public void go_to_class()
        {
            Console.WriteLine("----------------------");
            Console.WriteLine(Name+":我要去听离散数学课了!");
        }
    
        public void go_to_exam()
        {
            Console.WriteLine("----------------------");
            Console.WriteLine(Name+":我来参加离散数学的考试");
    
        }
    }
    

    EventHandler委托

    在.NET Framework中内置的EventHandler委托具有两个参数,它们的数据类型分别是Object和EventArgs类型,并且没有返回值

    对控件的遍历访问(第6章P109)

    foreach (Control item in this.Controls)

    ADO.NET进行数据库访问的核心对象(第12章P296)

    image

    二、选择题要点

    MessageBox.Show()参数(第4章P75)

    MessageBox.Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon);
    显示具有指定文本、标题、按钮和图标的消息框。

    容器类控件(第5章P98)

    image

    • 分组框GroupBox:把RadioButton(单选框)和CheckBox(复选框)等控件放在其中
    • 面板Panel:只有GroupBox有标题,Panel有滚动条
    • 选项卡TabControl:可以生成多页对话框

    集合类控件(第6章P117)

    • 列表框ListBox
      常用操作
    # 在列表中插入元素
    listBox1.Items.Add(0);
    listBox1.Items.Add("zero");
    object[] obj = new object[4]{2,"two",3,"three"};
    listBox1.Items.AddRange(obj);
    listBox1.Items.Insert(2, 1);
    listBox1.Items.Insert(3, "one");
    # 从列表中删除元素
    listBox1.Items. Remove (0); 
    listBox1.Items. RemoveAt (0);
    # 从列表中清除所有项目
    listBox2. Items.Clear( );
    # 获取列表中的项目数
    listBox1.Items.Count
    # 判断指定值是否在表中
    bool b1=listBox1.Items.Contains(3);
    bool b2=listBox1.Items.Contains(“three”);
    # 将列表中的全部项目写到数组中指定位置
    object[] obj2 = new object[10];
    listBox1.Items.CopyTo(obj2, 0);
    # 获取列表指定项的索引
    int i=listBox1.Items.IndexOf("two");
    # 获取列表指定索引处的项目
    object item4 =listBox1.Items[3];
    # 获取列表中指定的项
    listBox1.SelectedItems
    
    • 复选列表框CheckedListBox
      常用的基本和ListBox一致
    # 获取项目项目中复选框的选择状态
    bool b = checkedListBox1.GetItemChecked(4);
    
    • 组合框ComboBox(下拉框)
      SelectedIndex表示选中了第几个

    三、编程题要点

    • 会设计一个类
    • 类的实例化
      委托类的创建、实例化,匿名方法委托
      匿名方法:不写出该方法的定义,而是将代码直接写在委托创建表达式中
    • 方法的实现
      文件处理、异常处理等
    • 事件的创建
    事件的例子点击查看
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ex8
    {
        //定义事件,输入class时触发时间,学生上课
    
        public delegate void ClassEventHandler(bool isClassBegin);  //定义委托类型
        public class Bell
        {    //发布者类
            private bool isBegin = false;
            public bool IsBegin
            {
                get{ return isBegin; }
                set{ isBegin = value; }
            }
    
            public event ClassEventHandler OnClassChange; //声明事件
            public void BellChange()
            {
                isBegin = !isBegin;
                Console.WriteLine("现在是:{0}", isBegin ? "上课" : "下课");
                if (OnClassChange != null)
                    OnClassChange(isBegin);   //触发事件
            }
        }
    
        public class Teacher
        {//订阅者类
            public void isClass(Bell bell)
            { //订阅事件
                bell.OnClassChange += isGotoClass;
            }
            public void isGotoClass(bool isBegin)
            {  //事件处理程序
                if (isBegin)
                {
                    Console.WriteLine("Teacher: Class Beginning!");
                }
                else
                {
                    Console.WriteLine("Teacher: Class Not Beginning!");
                }
            }
        }
        public class Student
        { //订阅者类
            public void isClass(Bell bell)
            { //订阅事件
                bell.OnClassChange += isGotoClass;
            }
            public void isGotoClass(bool isBegin)
            {  //事件处理程序
                if (isBegin)
                {
                    Console.WriteLine("Student: Class Beginning!");
                }
                else
                {
                    Console.WriteLine("Student: Class Not Beginning!");
                }
            }
        }
    
    
        class Program
        {
            static void Main(string[] args)
            {
                Bell bell = new Bell();  //实例化发布者类
                Student stu = new Student();    //实例化订阅者类
                Teacher teacher = new Teacher();
                stu.isClass(bell);  //绑定事件
                teacher.isClass(bell);  //绑定事件
                bell.BellChange();  //触发事件
                bell.BellChange();  //触发事件
                bell.BellChange();  //触发事件
            }
        }
    }
    
    

    image

    四、简答题要点

    不同类的区别

    • 静态类
      只包含静态成员
      不能被实例化
      不能被继承
    • 抽象类
      抽象类中包含的抽象方法只有声明,没有实现
      不能实例化
      只能作为基类被继承
    • 密封类
      不能被继承,和抽象类相反
      方法必须是实现的,不能是虚拟的或抽象的

    对象方法实现

    • 重载和重写(第8章P179
      重载:方法名相同,参数表不同
      重写:与多态性相关,派生类在继承时重写基类的方法,用override
    • 委托
      多路广播:向一个委托的调用列表添加多个方法引用后,通过调用该委托一次性调用所有的方法。
      用委托合并来实现多路广播
      委托合并就是委托对象的相加

    简单类型和对象类型

    • 值类型
      进一步划分为简单类型、枚举类型、结构类型
      装箱:将值类型转换为引用类型
      拆箱:将引用类型显示转换为值类型
    • 引用类型
      类、接口、委托、数组、字符串、对象型(动态数组、队列、栈、哈希表、有序列表)
    • 类型转换(第2章P34)
      隐式转换:编译系统自动进行
      显式转换:
      (int)(..)
      int.Parse("100")
      Convert.ToInt32("100")

    ADO.NET数据库访问机制(第12章P298)

    • 联机访问
      程序在处理数据过程中,没有与数据库端口,一直与数据库保持连接状态
      image
    • 脱机访问
      没处理数据之前,与数据库连接来获取数据,数据处理过程中与数据库断开,处理完数据再与数据库连接来更新数据
      image

    注:有错误请指出!

    作者:inss!w!
    版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 相关阅读:
    Metasploit advanced命令使用技巧
    Metasploit命令info使用技巧
    Kali Linux 2020.1b发布了
    设置USB无线网卡为监听模式大学霸IT达人
    解决ifconfig命令未找到
    Metasploit新增技巧提示功能
    Wireshark运算符!=无法正常工作
    解决Kali Linux XFCE桌面Tab无法补全
    Nessus更新到8.9.1
    ASP入门(七)-Response小案例
  • 原文地址:https://www.cnblogs.com/Hfolsvh/p/15756528.html
Copyright © 2011-2022 走看看