C#const常量详细介绍

C#语言有很多值得学习的地方,这里我们主要介绍C# const常量,包括介绍readonly和const所修饰的变量等方面。

我们提供的服务有:做网站、成都网站设计、微信公众号开发、网站优化、网站认证、抚州ssl等。为近1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的抚州网站制作公司

一般情况下,如果你需要声明的常量是普遍公认的并作为单个使用,例如圆周率,黄金分割比例等。你可以考虑使用C# const常量,如:public const double PI = 3.1415926;。如果你需要声明常量,不过这个常量会随着实际的运行情况而决定,那么,readonly常量将会是一个不错的选择,例如上面***个例子的订单号Order.ID。

另外,如果要表示对象内部的默认值的话,而这类值通常是常量性质的,那么也可以考虑const。更多时候我们对源代码进行重构时(使用Replace Magic Number with Symbolic Constant),要去除魔数(Magic Number)的影响都会借助于const的这种特性。

对于readonly和const所修饰的变量究竟是属于类级别的还是实例对象级别的问题,我们先看看如下代码:

 
 
 
  1. using System;
  2. namespace ConstantLab
  3. {
  4. class Program
  5. {
  6. static void Main(string[] args)
  7. {
  8. Constant c = new Constant(3);
  9. Console.WriteLine("ConstInt = " + Constant.ConstInt.ToString());
  10. Console.WriteLine("ReadonlyInt = " + c.ReadonlyInt.ToString());
  11. Console.WriteLine("InstantReadonlyInt = " + c.InstantReadonlyInt.ToString());
  12. Console.WriteLine("StaticReadonlyInt = " + Constant.StaticReadonlyInt.ToString());
  13. Console.WriteLine("Press any key to continue");
  14. Console.ReadLine();
  15. }
  16. }
  17. class Constant
  18. {
  19. public Constant(int instantReadonlyInt)
  20. {
  21. InstantReadonlyInt = instantReadonlyInt;
  22. }
  23. public const int ConstInt = 0;
  24. public readonly int ReadonlyInt = 1;
  25. public readonly int InstantReadonlyInt;
  26. public static readonly int StaticReadonlyInt = 4;
  27. }
  28. }

使用Visual C#在 Main()里面使用IntelliSence插入Constant的相关field的时候,发现ReadonlyInt和 InstantReadonlyInt需要指定Constant的实例对象;而ConstInt和StaticReadonlyInt却要指定 Constant class(参见上面代码)。可见,用const或者static readonly修饰的常量是属于类级别的;而readonly修饰的,无论是直接通过赋值来初始化或者在实例构造函数里初始化,都属于实例对象级别。

一般情况下,如果你需要表达一组相关的编译时确定常量,你可以考虑使用枚举类型(enum),而不是把多个C# const常量直接嵌入到class中作为field,不过这两种方式没有绝对的孰优孰劣之分。

 
 
 
  1. using System;
  2. enum CustomerKind
  3. {
  4. SuperVip,
  5. Vip,
  6. Normal
  7. }
  8. class Customer
  9. {
  10. public Customer(string name, CustomerKind kind)
  11. {
  12. m_Name = name;
  13. m_Kind = kind;
  14. }
  15. private string m_Name;
  16. public string Name
  17. {
  18. get { return m_Name; }
  19. }
  20. private CustomerKind m_Kind;
  21. public CustomerKind Kind
  22. {
  23. get { return m_Kind; }
  24. }
  25. public override string ToString()
  26. {
  27. return "Name: " + m_Name + "[" + m_Kind.ToString() + "]";
  28. }
  29. }

本文名称:C#const常量详细介绍
文章路径:http://www.shufengxianlan.com/qtweb/news16/542316.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联