首页 > 编程语言 >C#静态类和GC

C#静态类和GC

时间:2024-11-11 19:18:06浏览次数:3  
标签:C# System 静态 static GC 析构 using

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _02_静态类
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 静态类是指只包含静态成员的类,静态成员可以直接通过类名来访问,而不需要创建类的实例。
            // 静态类使用static关键字声明,只能包含静态成员,不能包含实例成员。

            // 静态类的使用 
            Tools.Fun(); // 调用静态方法
            
            // 静态类不能被实例化
            Console.ReadLine();
        }
    }
    static class Tools
    {
        // 普通的(实例)的成员不能写在静态类中
        // 静态类只包含静态成员

        static public string Id { get; set; }

        // 静态的方法
        static public void Fun()
        {
            Console.WriteLine("静态类中的静态方法");
        }

        // 静态类不能包含实例构造函数

        // 静态构造函数
        static Tools()
        {
            // 静态构造函数可以初始化静态数据

            // 静态构造函数在第一次使用类时执行一次
        }
    }
    // 静态类不能被继承 也不能够继承与其他类
    //class Person: Tools
    //{

    //}
    // 1. 静态类只能包含静态成员,不能包含实例成员。
    // 2. 静态类不能被实例化
    // 3.  静态类不能包含实例构造函数
    // 4. 静态类实现了密封 不能被继承 也不能够继承与其他类
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _03_析构函数
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 垃圾回收机制
            // GC 当我们回收垃圾时就会触发GC
            // C# 自带垃圾回收机制
            // GC 当内存满的时候就会触发GC
            // GC 也可以手动触发

            // 析构函数 就是相关数据被清理时执行的函数
            // 析构函数 执行的两个条件
            // 1. 相关数据是垃圾
            // 2. 垃圾回收机制触发了

            Person person  = new Person();
            A a = new A();
            a = null;
            // 让person 数据变成垃圾
            //person = null;

            // 手动触发GC 回收垃圾
            GC.Collect();
            
            Console.ReadLine();

            // 析构函数 就是相关数据被清理时执行的函数

        }
    }
    class A {

        public int Id { get; set; }
        public string Name { get; set; }
        ~A()
        {
            // 当A 类数据被清理时执行
            Console.WriteLine("A 类析构函数执行了");
        }
    }
    class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Address { get; set; }

        // 析构函数
        ~Person()
        {

            // 当Perso 类数据被清理时执行
            Console.WriteLine("析构函数执行了");
            // 当相关数据被清理时执行析构函数
            // 析构函数中做一些收尾工作
        }

    }

}

标签:C#,System,静态,static,GC,析构,using
From: https://blog.csdn.net/2401_86981975/article/details/143693248

相关文章

  • 【C++】踏上C++的学习之旅(七):深入“类和对象“世界,掌握编程的黄金法则(二)(内含构造函数
    文章目录前言1.类的6个默认的成员函数2.构造函数和析构函数的“好处”3.构造函数3.1概念3.2构造函数的特性4.析构函数4.1概念4.2特征前言在踏上C++的学习之旅(六):深入“类和对象“世界,掌握编程的黄金法则(一)中,我给大家讲解了"类"的定义以及如何使用类创建出......
  • AtCoder Beginner Contest 356 - VP记录
    A-SubsegmentReverse点击查看代码#include<cstdio>#include<numeric>#include<algorithm>usingnamespacestd;constintN=105;intn,a[N],l,r;intmain(){ scanf("%d%d%d",&n,&l,&r); iota(a+1,a+n+1,1); reverse(a+l,......
  • [AGC005D] ~K Perm Counting
    题意求对于所有的\(i\)满足\(|P_i-i|\neqk\),的排列数量,对\(924844033\)取模。\(2\len\le2\times10^3,1\lek\len-1\)。Sol考虑转成\(n\timesn\)的网格图,那么就是所有\((i,i+k)\)以及\((i,i-k)\)的格子涂黑不能用。题意转化为在网格图里......
  • Queuing 表(buffer表)的优化实践 | OceanBase 性能优化实践
    案例问题描述该案例来自一个金融行业客户的问题:他们发现某个应用对一个数据量相对较小的表(仅包含数千条记录)访问时,频繁遇到性能下降的情况。为解决此问题,客户向我们求助进行分析。我们发现这张表有频繁的批量插入与删除操作,起初,性能基本正常,但不久后性能就会出现了下降。为深......
  • 2024年华为OD机试真题-光伏场地建设规划 -C++-OD统一考试(E卷)
    最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客     每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。题目描述祖国西北部有一片大片......
  • 算法:LeetCode448_找出所有数组中消失的数字_java实现
    packagecom.leetcode;importjava.util.*;/***LeetCode448FindDisappearedNumInArr:找出所有数组中消失的数字*/publicclassLeetCode448FindDisappearedNumInArr{/***方法1.hashset,找出没出现的数字*/publicstaticList<Integer>findD......
  • Educational Codeforces Round 158 (Rated for Div. 2) - VP记录
    A.LineTrip油量必须支持车子通过所有加油站间的空间,还要注意开回来的时候终点不能加油。点击查看代码#include<cstdio>#include<algorithm>usingnamespacestd;constintN=55;intn,x,a[N];intmain(){ intT;scanf("%d",&T); while(T--) { scanf("%d%d",&am......
  • Qml 中的那些坑(七)---ComboBox嵌入Popup时,滚动内容超过其可见区域不会关闭ComboBox弹
    【写在前面】最近在写信息提交(表单)的窗口时发现一个奇怪的BUG:其代码如下:importQtQuick2.15importQtQuick.Controls2.15importQtQuick.Window2.15Window{width:640height:480visible:truetitle:qsTr("HelloWorld")Button{......
  • P3287 [SCOI2014] 方伯伯的玉米田
    P3287[SCOI2014]方伯伯的玉米田感觉其实也不难。我们必然知道选择加区间的右端点是\(n\),因为如果只选中间的话会与后面相差开,不如直接选上右,因为有两个变量,位置与操作次数,所有我们就设状态为\(f_{x,k}\)为我们\(x\)为左端点被加\(k\)次的最长不下降子序列,此时我们的树......
  • antD——Warning: `callback` is deprecated. Please return a promise instead.
    参考:1.https://blog.csdn.net/huochai770880/article/details/125925665 我的情况antD表单校验,代码未报错,但提交时控制台报错:Warning:`callback`isdeprecated.Pleasereturnapromiseinstead. 原报错代码:constvalidateParams=useCallback((_:RuleObjec......