前言
在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 声明常量的内容,希望以上内容能为大家带来一些帮助或参考价值。如有不到之处,请多多包涵。