文章目录
- 静态成员(`static`)
- 1、静态成员的特点:
- 2、为什么可以直接点出来使用?
- 3、不同的静态成员介绍
- 3.1. 静态字段
- 3.2. 静态方法
- 3.3. 静态属性
- 3.4. 静态构造函数
- 3.5. 静态类
- 4、静态成员的优缺点
- 优点:
- 缺点:
- 5、静态成员的使用场景
- 6、总结
- 专栏推荐
- 完结
静态成员(static
)
用static
修饰的成员变量、方法、属性等,称为静态成员。
1、静态成员的特点:
直接用类名点出使用
类名.静态成员名
2、为什么可以直接点出来使用?
程序中是不能无中生有的。我们要使用的对象,变量,函数都是要在内存中分配内存空间的。之所以要实例化对像,目的就是分配内存空间,在程序中产生一个抽象的对象。
静态成员的特点:
- 程序开始运行时就会分配内存空间。所以我们就能直接使用。
- 静态成员和程序同生共死。只要使用了它,直到程序结束时内存空间才会被释放。
- 一个静态成员就会有自己唯一的一个
内存小房间
,这让静态成员就有了唯一性,在任何地方使用都是用的小房间里的内容,改变了它也是改变小房间里的内容。
3、不同的静态成员介绍
3.1. 静态字段
静态字段是类级别的变量,在所有类的实例之间共享。
public class MyClass
{
// 静态字段
public static int staticField = 0;
public void Increment()
{
staticField++; // 可以在实例方法中访问静态字段
}
}
public class Program
{
public static void Main()
{
MyClass.staticField = 10; // 通过类名访问静态字段
Console.WriteLine(MyClass.staticField); // 输出 10
MyClass obj1 = new MyClass();
obj1.Increment(); // 静态字段的值会被共享
Console.WriteLine(MyClass.staticField); // 输出 11
}
}
3.2. 静态方法
静态方法是属于类的,而不是实例。你可以通过类名调用静态方法。
public class MathHelper
{
// 静态方法
public static int Add(int a, int b)
{
return a + b;
}
}
public class Program
{
public static void Main()
{
int result = MathHelper.Add(5, 3); // 通过类名调用静态方法
Console.WriteLine(result); // 输出 8
}
}
3.3. 静态属性
静态属性与静态字段类似,但它们提供了更好的封装,允许你在设置或获取值时添加逻辑。
public class Counter
{
private static int count = 0;
// 静态属性
public static int Count
{
get { return count; }
set { count = value; }
}
public static void Increment()
{
count++;
}
}
public class Program
{
public static void Main()
{
Counter.Count = 5; // 通过类名设置静态属性
Console.WriteLine(Counter.Count); // 输出 5
Counter.Increment(); // 通过静态方法修改静态字段
Console.WriteLine(Counter.Count); // 输出 6
}
}
3.4. 静态构造函数
- 静态构造函数在类的第一次访问时自动调用。只会自动调用一次。
- 静态构造函数不接受任何参数,并且不能显式调用。
- 它通常用于初始化静态字段或执行一次性初始化任务。
- 不能使用访问修饰符
public class MyClass
{
// 静态字段
public static int staticField;
// 静态构造函数
static MyClass()
{
staticField = 10; // 初始化静态字段
Console.WriteLine("静态构造函数被调用");
}
}
public class Program
{
public static void Main()
{
// 静态构造函数会在第一次访问类的静态成员时被调用
Console.WriteLine(MyClass.staticField); // 输出 10,且输出 "静态构造函数被调用"
}
}
3.5. 静态类
静态类是一种特殊类型的类,所有成员都必须是静态的。静态类不能实例化
,也不能包含实例成员。
比如我们一直用的Console
就是一个静态类.
public static class Utility
{
public static void PrintMessage(string message)
{
Console.WriteLine(message);
}
}
public class Program
{
public static void Main()
{
Utility.PrintMessage("Hello, World!"); // 通过静态类调用静态方法
}
}
4、静态成员的优缺点
优点:
- 节省内存:由于静态成员是所有实例共享的,它们只会占用一次内存。
- 全局访问:静态成员可以在整个程序中被访问,适合做全局变量或工具函数。
缺点:
- 线程安全问题:静态成员是共享的,因此如果多个线程同时访问静态成员,可能会引发线程安全问题。需要小心同步。
- 无法实例化:静态类不能创建实例,因此无法进行继承或实现接口。
5、静态成员的使用场景
- 单例模式:静态成员通常用来实现单例模式,确保一个类只有一个实例。
- 全局常量或配置:静态字段或属性可以用来存储全局常量或配置数据。
- 工具类:静态方法非常适合用作工具类,提供通用的功能,如数学运算、字符串处理等。
6、总结
- 静态成员属于类本身,而不是类的实例。
- 静态字段和静态属性在所有实例之间共享。
- 静态方法和静态构造函数用于类级别的操作。
- 静态成员常用于工具类、全局配置、单例模式等场景。
- 特点:直接用类名点出来使用(全局性)
- 生命周期:和程序同生共死。程序运行后就会一直存在内存中,直到程序结束后才会释放,因此静态成员具有唯一性
- 注意:
- 静态函数中不能直接使用非静态成员
- 非静态函数中可以直接使用静态成员
专栏推荐
地址 |
---|
【从零开始入门unity游戏开发之——C#篇】 |
【从零开始入门unity游戏开发之——unity篇】 |
【制作100个Unity游戏】 |
【推荐100个unity插件】 |
【实现100个unity特效】 |
【unity框架开发】 |
完结
赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注
,你的每一次支持
都是我不断创作的最大动力。当然如果你发现了文章中存在错误
或者有更好的解决方法
,也欢迎评论私信告诉我哦!
好了,我是向宇
,https://xiangyu.blog.csdn.net
一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~