C#中用const和readonly声明常量及用法

前言

在C#编程语言中,常量是一种特殊的变量。常量被赋值后,其值在程序执行期间就不能对其进行修改。常量也是我们编写程序时经常会使用。在C#语言中,可使用const、readonly 来声明,下面将介绍其用法和区别。

用法

1、const 关键字

使用 const 来声明一个常量字段或常量局部变量,且是在编译时进行解析。必须满足下面的一些规则:

a、必须在声明时初始化;

b、值在编译时必须是可确定的;

下面是声明常量字段示例:

namespace Fountain.WinConsole.ConstantDemo
{
    public class Calendar
    {
        /// <summary>
        /// 一年的月数 声明是常量字段
        /// </summary>
        public const int MONTHS = 12;
        /// <summary>
        /// 一周天数 声明是常量字段
        /// </summary>
        public const int WEEK_DAYS = 7;
    }
}
//使用常量字段
using System;
namespace Fountain.WinConsole.ConstantDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 输出结果
            Console.WriteLine(string.Format("一年共{0}个月", Calendar.MONTHS));
            // 
            Console.ReadLine();
        }
    }
}

下面是声明局部*常量*变量的示例:

using System;
namespace Fountain.WinConsole.ConstantDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 声明常量局部变量
            const int days = 365;
            // 输出结果
            Console.WriteLine(string.Format("一年有{0}天", days));
            //
            Console.ReadLine();
        }
    }
}

2、readonly 关键字

使用 readonly 也可以声明一个常量字段,但它只能在类级别声明,而不能在方法体中声明。对变量的初始化也只能在声明时或构造函数方法内进行。使用时:类实例.常量字段。我们也可以通过static关键字的方式类声明一个静态常量字段(此方式初始化只能在声明时*)。使用时即可以此格式:类.静态常量字段*。

下面是定义类的常量字段示例:

namespace Fountain.WinConsole.ConstantDemo
{
    public class Calendar
    {
        /// <summary>
        /// 一年的周数
        /// </summary>
        public readonly int YEAR_WEEKS;
        /// <summary>
        /// 类的构造方法
        /// </summary>        
        public Calendar() 
        {
            // 对常量字段赋值
            this.YEAR_WEEKS = 54;
        }
    }
}
// 调用
using System;
namespace Fountain.WinConsole.ConstantDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Calendar calendar=new Calendar();
            // 在此赋值则会有异常
            // calendar.YEAR_WEEKS = 100;
            Console.WriteLine(string.Format("一年共{0}周", calendar.YEAR_WEEKS));
            //
            Console.ReadLine();
        }
    }
}

下面是声明类的静态常量字段示例:

namespace Fountain.WinConsole.ConstantDemo
{
    public class Calendar
    {
        /// <summary>
        /// 一年的周数
        /// </summary>
        public readonly static int YEAR_WEEKS=54;
        /// <summary>
        /// 类的构造方法
        /// </summary>
        public Calendar() 
        {
            // 在此赋值报异常
            //this.YEAR_WEEKS = 54;
        }
    }
}
// 调用 
using System;
namespace Fountain.WinConsole.ConstantDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //输出结果
            Console.WriteLine(string.Format("一年共{0}周", Calendar.YEAR_WEEKS));
            // 
            Console.ReadLine();
        }
    }
}

3、二者区别

const 与 readonly 的区别大概有以下三点:

a、const 只能在声明时初始化;readonly 可在声明时或构造函数内。

扫描二维码关注公众号,回复: 17420897 查看本文章

b、const 是编译时常量;readonly 是运行时常量。

c、const 是静态;readonly 不是静态的,但可使用static声明为静态。

小结

以上是使用 const 与 readonly 声明常量的内容,希望以上内容能为大家带来一些帮助或参考价值。如有不到之处,请多多包涵。

猜你喜欢

转载自blog.csdn.net/Funniyuan/article/details/143245394