C#基础概念学习总结

本文介绍C#基础概念学习总结,包括介绍静态变量和非静态变量的区别和const 和 static re
首页 新闻资讯 行业资讯 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();  }
  • 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.

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.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

客户端代码:

复制

using System;  using System.Collections.Generic;  using System.Text;  using Example02Lib;   namespace Example02 {   class Program {   static void Main(string[] args)   {   //修改Example02中Class1的strConst初始值后,只编译Example02Lib项目  //然后到资源管理器里把新编译的 Example02Lib.dll拷贝Example02.exe所在的目录,
执行Example02.exe   //切不可在IDE里直接调试运行因为这会重新编译整个解决方案!!   //可以看到strConst的输出没有改变,而strStaticReadonly的输出已经改变/  /表明Const变量是在编译期初始化并嵌入到客户端程序,而StaticReadonly是在运行时初始化的  Console.WriteLine("strConst : {0}", Class1.strConst);  Console.WriteLine("strStaticReadonly : {0}", Class1.strStaticReadonly);   Console.ReadLine();  } 
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

  • 12.

  • 13.

  • 14.

  • 15.

  • 16.

  • 17.

  • 18.

  • 19.

  • 20.

  • 21.

  • 22.

修改后的示例:

测试类:

复制

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.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

以上介绍两点C#基础概念

【编辑推荐】

  1. C#反射方法学习总结

  2. 浅谈C#测量cpu性能

  3. C#远程计算机的一些理论知识

  4. 浅析C# Static修饰

  5. C#转换农历的简单方法

18    2009-08-13 10:52:03    C#基础概念