千家信息网

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

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"C#静态变量和非静态变量的区别"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#基础
千家信息网最后更新 2026年11月01日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安全错误 数据库的锁怎样保障安全 喔噻互联网科技有限公司 百单网互联网科技有限公司怎么样 互联网科技工作委员会 科技信息互联网 互联网科技作文 南京欣网互联网科技 美国互联网黑科技 科技赋能互联网健康 互联网科技产品 承德科技产业互联网发展 南山科技园互联网公司有哪些 重庆互联网医院沙龙医盟信息科技 互联网科技大奖都有哪些公司 中科明德北京互联网科技 工业互联网山东科技大学 互联网安防科技感 易企秀互联网科技是做什么的 保山互联网科技靠谱吗 第三届互联网大会安防黑科技 恒生科技互联网指数十大成分股 百单网互联网科技有限公司怎么样 互联网科技工作委员会 科技赋能下的互联网金融 奇酷互联网络科技 人人互联网科技是培训 深圳卡尔迅互联网科技有限公司怎么样 互联网之后的科技是什么 互联网经济与金融科技 上海科技产业互联网平台 互联网营销推广黑科技
0