C#语法回忆零散巩固(持续更新最新版)

散知识点回忆巩固,为本人开发过程中遇到的突然想不起来的知识点,进行汇总回顾,每个知识点都会有标题方便点击目录查。遇到什么就加什么,文章会越来越长,会持续上传最新版。

C# 类的静态成员

用关键字 static 进行修饰,修饰变量即为静态变量,可以通过类直接进行调用,不需要通过对应的实例(new对象来调用)。

cs 复制代码
using System;
namespace StaticVarApplication
{
    class StaticVar
    {
       public static int num;
        public void count()
        {
            num++;
        }
        public int getNum()
        {
            return num;
        }
    }
    class StaticTester
    {
        static void Main(string[] args)
        {
            StaticVar s1 = new StaticVar();
            StaticVar s2 = new StaticVar();
            s1.count();
            s1.count();
            s1.count();
            s2.count();
            s2.count();
            s2.count();         
            Console.WriteLine("s1 的变量 num: {0}", s1.getNum());
            Console.WriteLine("s2 的变量 num: {0}", s2.getNum());
            Console.ReadKey();
        }
    }
}

上述代码运行后会得到以下结果:

s1 的变量 num: 6

s2 的变量 num: 6

为什么s1、s2两个对象,结果会是6,因为

当我们声明一个类成员为静态时,意味着无论有多少个类的对象被创建,只会有一个该静态成员的副本。

关键字 static也可以用来修饰函数(方法),同理,也无需实例化即可调用该函数(方法 )。

cs 复制代码
using System;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            int num = AddClass.Add(2, 3);  //编译通过
            Console.WriteLine(num);
        }
    }

    class AddClass
    {
        public static int Add(int x,int y)
        {
            return x + y;
        }
    }
}
cs 复制代码
using System;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            int num = Add(2, 3);  //编译错误,即使改为Program.Add(2, 3);也无法通过编译
            Console.WriteLine(num);
        }

        public int Add(int x, int y)
        {
            return x + y;
        }
    }
}
using System;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Program self = new Program();
            int num = self.Add(2, 3);  //编译通过
            Console.WriteLine(num);
        }

        public int Add(int x, int y)
        {
            return x + y;
        }
    }
}

上图由Ai给出示例代码,帮助更好分析。

相关推荐
奋发向前wcx5 小时前
y1,y2总复习笔记10 2026.7.24
笔记·哈希算法·散列表
Highcharts.js5 小时前
教程:基于 React + Highcharts 构建一个单页应用程序、按需数据拉取与图表渲染
开发语言·前端·数据结构·react.js·前端框架·highcharts·页面应用
MuMuMu12235 小时前
智慧监测的“火眼金睛”:当AIoT重构环保监管体系
笔记
头发还在的女程序员6 小时前
医院陪诊管理系统怎么选择?——2026 年选型避坑与架构参考
java·开发语言·陪诊系统·陪诊app·医院陪诊陪护
CodeStats7 小时前
【Spring事务】Spring事务注解 @Transactional 完整体系:从 MySQL 隔离级别到 MyBatis 原理详解
java·spring·mybatis·事务·transactional
min(a,b)7 小时前
学习第 4 天:面向对象与异常处理
python·学习·学习方法
一只小菜鸡..7 小时前
南京大学 操作系统 (JYY) 学习笔记:进程地址空间与内存“外挂”魔法
笔记·学习
我命由我123457 小时前
Android 开发问题:为 PDFView 设置一个带有黑色边框的背景 drawable,但边框没有生效
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
tju新生代魔迷7 小时前
Verilog语言学习(一)
学习
一只小菜鸡..8 小时前
南京大学 操作系统 (JYY) 学习笔记:访问操作系统的对象与“一切皆文件”
笔记·学习