C# 面向对象编程(一)——类 第二篇

总目录
C# 语法总目录

系列链接
C# 面向对象编程(一)     类 第一篇
C# 面向对象编程(一)     类 第二篇
C# 面向对象编程(一)     类 第三篇

简介

  主要记录的是面向对象编程中,类的解构器,方法的使用,索引器和终结器及相关的注意事项

面向对象编程

类 第二篇

4. 解构器

要求C# 7.0以上

这里的解构器可以看做是构造器的反向操作,解构器可以把一个对象赋值给一个元组

解构器必须要下面这种形式,必须是Deconstruct这个名字,必须要有out传出参数。

public void Deconstruct(out string? name,out int age)

internal class Person
{
    private string? name;
    private int age;
    public Person()
    {
        name = "zhang";
        age = 18;
    }

    public Person(string? name,int age)
    {
        this.name = name;
        this.age = age;
    }

    public string? Name { get => name; set => name = value; }
    public int Age { get => age; set => age = value; }

    //必须要
    public void Deconstruct(out string? name,out int age)
    {
        name = Name;
        age = Age;
    }

    public override string ToString()
    {
        return this.name+","+this.age;
    }
}
static void Main(string[] args)
{
    Person p = new Person();
    (string? name, int age) = p;
    Console.WriteLine(name+","+age);
    Console.ReadLine();
}
//输出
zhang,18
5.方法

方法可以用以下修饰符修饰

  • 静态修饰符:Static
  • 访问修饰符:public , internal , private , protected
  • 继承修饰符:new , virtual , abstract, override , sealed
  • 部分方法修饰符: partial
  • 非托管代码修饰符:unsafe , extern
  • 异步代码修饰符:async

其他比如重载方法,使用 ref 引用传递,过程略。

6. 事件

需要搭配委托使用,暂略。

7. 索引器

索引器一般是数组用的东西,但是类中也有这个方法。

简单来说,类的索引器就是重写 [ ] 中括号这个

internal class PersonIntroduce
{
    private string? content;
    private string[]? conts;

    public PersonIntroduce()
    {
        content = "this is introduce";
        conts = content.Split();
    }

    public PersonIntroduce(string content)
    {
        this.content = content;
        conts = content.Split();
    }

    public string this[int index]
    {
        get { return conts[index]; }
        set { conts[index] = value; }
    }
}
static void Main(string[] args)
{
    PersonIntroduce pi = new PersonIntroduce();
    string str = pi[1];
    Console.WriteLine(str);
    pi[1] = "times";
    Console.WriteLine(pi[1]);
    Console.ReadLine();
}
//输出
is
times
8. 终结器

终结器(Finalizer),在垃圾回收器回收未引用的对象占用的内存前调用。

终结器可以被 非托管代码修饰符 unsafe 修饰。

internal class PersonIntroduce
{
    public PersonIntroduce()
    {
        Console.WriteLine("开始");
    }
    ~PersonIntroduce(){
        Console.WriteLine("结束了");
    }
}
static void Main(string[] args)
{
    PersonIntroduce pi = new PersonIntroduce();
   
}

总目录
C# 语法总目录

系列链接
C# 面向对象编程(一)     类 第一篇
C# 面向对象编程(一)     类 第二篇
C# 面向对象编程(一)     类 第三篇

相关推荐

  1. C# 面向对象编程(一)——类 第二

    2024-04-21 10:36:02       48 阅读
  2. C# 面向对象编程(一)——类 第三

    2024-04-21 10:36:02       34 阅读
  3. C++面对对象编程

    2024-04-21 10:36:02       49 阅读
  4. Python面向对象编程:入门(类和对象

    2024-04-21 10:36:02       46 阅读
  5. C++ 结构体(面向对象编程

    2024-04-21 10:36:02       64 阅读
  6. CC++ 编程面向对象编程

    2024-04-21 10:36:02       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-21 10:36:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-21 10:36:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-21 10:36:02       82 阅读
  4. Python语言-面向对象

    2024-04-21 10:36:02       91 阅读

热门阅读

  1. MySQL中NULL和空的区别是什么?底层原理是什么?

    2024-04-21 10:36:02       43 阅读
  2. Centos sudo权限错误

    2024-04-21 10:36:02       41 阅读
  3. Android10以上MediaProjection截屏

    2024-04-21 10:36:02       98 阅读
  4. 欢迎 Llama 3:Meta 的新一代开源大语言模型

    2024-04-21 10:36:02       31 阅读
  5. npm环境搭建

    2024-04-21 10:36:02       104 阅读
  6. 数据结构(data structure)(2)链表的运用

    2024-04-21 10:36:02       40 阅读
  7. React-RTK

    React-RTK

    2024-04-21 10:36:02      35 阅读
  8. 基于微信小程序的房屋租赁管理系统

    2024-04-21 10:36:02       30 阅读
  9. 迁移学习入门

    2024-04-21 10:36:02       37 阅读