C#-静态

静态之字段与属性

1.static 关键字

static 关键字,用于修饰类,字段,属性,方法,构造方法等。被 static 修饰的类称之为“静态类”;
被 static 修饰的成员称之为“静态成员”,被修饰过的成员分别称为:静态字段,静态属性,静态方法,静态构造方法。

2.静态字段

1.概念
被 static 关键字修饰的字段,叫做“静态字段”。
静态字段不属于任何对象,只属于类,必须要用 类名.静态字段名进行访问,反过来通过 对象名.静态字段名 的方式是访问不到静态字段的。
2.注意事项
静态字段是可以重新赋值的,类名.静态字段名 = 新的值;
静态字段存储的数据在内存中只有一份;
实例(对象)字段在内存中会有 N 份,有多少对象就会有多少实例字段;

3.静态属性

1.概念
被 static 关键字修饰的属性,叫做“静态属性”。
静态属性用于对静态字段进行封装,并保证静态字段值的合法性;静态属性使用 类名.静态属性名 进行访问;
2.注意事项
静态属性不能用于封装非静态字段,因为静态的类成员是先于非静态的类成员存在的。在还没有对象之前,静态类成员就已经存在了。

4.静态普通方法

1.概念
被 static 修饰的方法,叫做静态方法。
直接使用 类名.静态方法名 进行访问。
2.注意事项
控制台程序的 Program 入口类中的 Main 函数就是一个静态方法;在静态方法中不能调用非静态方法。

5.静态构造方法

1.概念
静态构造方法的作用是用于初始化静态成员。
一个类只能有一个静态构造方法,该静态方法没有任何访问修饰符,也没有参数。可以定义在静态类中,也可以定义在非静态类中。
2.注意事项
静态构造方法会在程序创建第一个实例,或者引用任何静态成员之前,完成类中静态成员的初始化。

6.静态类

1.概念
当类中的成员全部是静态成员的时候,可以把这个类声明为静态类。声明静态来需要在 class 关键字前加静态关键字 static。
2.注意事项
静态类中不能存在非静态(实例)成员;
静态类不能实例化对象。

单例设计模式

1.何为单例?
设计一个类的时候,需要保证整个程序在运行期间只存在一个实例对象。解决这个问题,我们就需要用到“单例(模式)”。
2.注意事项
单例设计模式是用于非静态类中的,在静态类中写单例无意义。
3.单例代码步骤
<1>声明一个静态且私有的这么一个当前类类型的字段;

private static ClassName instance;

<2>创建私有无参构造方法,保证外部无法实例化这个类;

private ClassName() { }

<3>创建一个静态方法,用于创建此类的唯一对象。

public static ClassName Instance()
{
    if (instance == null)
    {
        instance = new ClassName();
    }
    return instance;
}

//实例化
ClassName Cnm = ClassName.Instance();

使用例

单例模式编写常用工具类Utils
功能1:生成随机数
功能2:提供打印数组的方法

   class Utils
    {
        private static Utils instance = null;
        public static Utils Instance
        {
            get
            {
                if(instance == null)
                {
                    instance = new Utils();
                }
                return instance;
            }
        }

        private Random random = new Random();

        public int RandonNum(int a,int b)//生成随机数
        {
            return random.Next(a,b);
        }
        public void Print(int[] a)
        {
            for(int i = 0; i < a.Length; i++)
            {
                Console.Write(a[i]+" ");
            }
        }
    }

posted on   Shazam_sjtu  阅读(165)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示