千家信息网

C#静态变量和非静态变量的区别

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本篇内容介绍了"C#静态变量和非静态变量的区别"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#基础
千家信息网最后更新 2025年11月08日C#静态变量和非静态变量的区别

本篇内容介绍了"C#静态变量和非静态变量的区别"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

C#基础概念之一,静态变量和非静态变量的区别?

静态变量:
静态变量使用 static 修饰符进行声明,在所属类被装载时创建,通过类进行访问,所属类的所有实例的同一静态变量都是同一个值

非静态变量:
不带有 static 修饰符声明的变量称做非静态变量,在类被实例化时创建,通过对象进行访问,同一个类的不同实例的同一非静态变量可以是不同的值

示例:

using System;  using System.Collections.Generic;  using System.Text;   namespace Example01 {   class Program {   class Class1 {   public static String staticStr = "Class";public String notstaticStr = "Obj";  }   static void Main(string[] args)   {   //静态变量通过类进行访问,该类所有实例的同一静态变量都是同一个值  Console.WriteLine("Class1's staticStr: {0}", Class1.staticStr);   Class1 tmpObj1 = new Class1();  tmpObj1.notstaticStr = "tmpObj1";  Class1 tmpObj2 = new Class1();  tmpObj2.notstaticStr = "tmpObj2";   //非静态变量通过对象进行访问,不同对象的同一非静态变量可以有不同的值  Console.WriteLine("tmpObj1's notstaticStr: {0}", tmpObj1.notstaticStr);  Console.WriteLine("tmpObj2's notstaticStr: {0}", tmpObj2.notstaticStr);   Console.ReadLine();  }

C#基础概念之二,const 和 static readonly 区别?

const
用 const 修饰符声明的成员叫常量,是在编译期初始化并嵌入到客户端程序

static readonly
用 static readonly 修饰符声明的成员依然是变量,只不过具有和常量类似的使用方法:通过类进行访问、初始化后不可以修改。但与常量不同的是这种变量是在运行期初始化

示例:

测试类:

using System;  using System.Collections.Generic;  using System.Text;   namespace Example02Lib {  public class Class1 {   public const String strConst = "Const";public static readonly String strStaticReadonly = "StaticReadonly";  public const String strConst = "Const Changed";  public static readonly String strStaticReadonly = "StaticReadonly Changed";  }

客户端代码:

  1. using System;

  2. using System.Collections.Generic;

  3. using System.Text;

  4. using Example02Lib;

  5. namespace Example02 {

  6. class Program {

  7. static void Main(string[] args)

  8. {

  9. //修改Example02中Class1的strConst初始值后,只编译Example02Lib项目

  10. //然后到资源管理器里把新编译的 Example02Lib.dll拷贝Example02.exe所在的目录,
    执行Example02.exe

  11. //切不可在IDE里直接调试运行因为这会重新编译整个解决方案!!

  12. //可以看到strConst的输出没有改变,而strStaticReadonly的输出已经改变/

  13. /表明Const变量是在编译期初始化并嵌入到客户端程序,而StaticReadonly是在运行时初始化的

  14. Console.WriteLine("strConst : {0}", Class1.strConst);

  15. Console.WriteLine("strStaticReadonly : {0}", Class1.strStaticReadonly);

  16. Console.ReadLine();

  17. }

修改后的示例:

测试类:

using System;  using System.Collections.Generic;  using System.Text;   namespace Example02Lib {   public class Class1 {   //public const String strConst = "Const";  //public static readonly String strStaticReadonly = "StaticReadonly";  public const String strConst = "Const Changed";  public static readonly String strStaticReadonly = "StaticReadonly Changed";  }

"C#静态变量和非静态变量的区别"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

变量 静态 不同 编译 C# 实例 是在 客户 客户端 对象 常量 示例 输出 内容 基础 成员 所属 更多 概念 知识 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全问题召开了紧急会议 北京的二次软件开发公司 科技互联网项目排行榜 黑魂3女号 捏脸数据库 重庆服务器防火墙好不好 海贼王360服务器在哪里 数据库技术基础 视频 购买软件服务器和源代码给我们吗 服务器的公会讲解 我的世界加入不了服务器该怎么办 高校网络安全教案设计 网络安全管理应急制度 mysql服务器已离线 在数据库中找文献怎么引用 数据库完成开户业务代码 数据库更新余额不重复 深岩银河服务器名字 网络安全理论考试 数据库怎么给表加锁 数据库管理系统主要组成 modbustcp客户端和服务器端区别 南京投资分布式存储服务器 计算机网络技术英语怎么说 无锡盒包网络技术有限公司 代理服务器上网会卡吗 笔记本很多游戏无法连接服务器 网络安全宣传周湖南各地在行动 db2数据库跟踪死锁事件 英雄联盟 连接版本服务器 冰峰网络安全ppt
0