C#-静态与非静态的区别
静态和非静态的区别
1、在非静态类中,既可以有实例成员,也可以有静态成员。如下代码:
class Person { private static string _name; private char _gender; public void M1() { Console.WriteLine("//我是非静态方法"); } public static void M2() { Console.WriteLine(" //我是一个静态方法"); } }
2、在调用实例成员的时候,需要使用对象名.实例成员;在调用静态成员的时候,需要使用类名.静态成员名。如下代码:
static void Main(string[] args) { //调用实例成员 Person P = new Person();//实例化 P.M1();//实例方法 Person.M2();//静态方法 Console.WriteLine(); Console.ReadKey(); }
总结:
1)静态成员必须使用类名去调用,而实例成员使用对象名调用。如下代码:
Person P = new Person();//实例化 P.M1();//实例方法 Person.M2();//静态方法
2)静态函数中,只能访问静态成员,不允许访问实例成员。如下代码:
class Person { private static string _name; private char _gender; public static void M2() { _name = "jingtai"; _gender = 'f';//此行报错,不能引用非静态字段 Console.WriteLine(" 我是一个静态方法"); } }
3)实例函数中,既可以使用静态成员,也可以使用实例成员。如下代码:
class Person { private static string _name; private char _gender; public void M1() { _name = "feijingtai"; _gender = 'm'; Console.WriteLine("我是非静态方法"); } }
4)静态类中只允许有静态成员,不允许出现实例成员。否则会报错,如下代码:
static class Person { private static string _name; //注释掉的部分代码会报错(不能在静态类中声明实例成员) //private char _gender; //public void M1() //{ //Console.WriteLine("我是非静态方法"); //} public static void M2() { Console.WriteLine(" 我是一个静态方法"); } }
使用:
1)、如果你想要你的类当做一个"工具类"去使用,这个时候可以考虑将类写成静态的。(工具类的意思就是,像工具一样经常需要用到的类,比如:console类,经常需要用来在控制台输入输出)
2)、静态类在整个项目中,谁都可以调用静态类,所以静态类在整个项目中是资源共享。
拓展内容:
内存五大块中的三大块:堆, 栈, 静态存储区域
只有在程序全部结束之后,静态类才会释放资源。通过(GC Garbage Collection垃圾回收器)释放资源
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义