当前位置: 编程技术>.net/c#/asp.net
C#只读字段和常量的区别 静态构造函数的例子
来源: 互联网 发布时间:2014-08-30
本文导语: 代码如下: 代码示例: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { /// /// 作者:it小金 www. /// 功能:c#只读字段和常量的区别,以及静态...
代码如下:
代码示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
///
/// 作者:it小金 www.
/// 功能:c#只读字段和常量的区别,以及静态构造函数的使用
///
class Program
{
static void Main(string[] args)
{
Console.WriteLine(test.a);
Console.WriteLine(test.b);
Console.Read();
}
}
public class test
{
public static readonly int b;//只读字段可以使用static关键字,只读字段可以不进行初始化赋值,只读字段只能在构造函数或变量初始化时进行赋值
public const int a=1;//常量不可以使用static关键字,常量必须在定义的时候进行初始化进行赋值
static test()//静态构造函数,类实例化之前调用执行,且只执行一次
{
b = 2;//因为是只读字段,所以只能在构造函数中进行初始化,且改只读字段为static类型,所以需在静态构造函数中进行赋值
}
void aa()
{
//a = 1;错误
//b=1;错误
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
///
/// 作者:it小金 www.
/// 功能:c#只读字段和常量的区别,以及静态构造函数的使用
///
class Program
{
static void Main(string[] args)
{
Console.WriteLine(test.a);
Console.WriteLine(test.b);
Console.Read();
}
}
public class test
{
public static readonly int b;//只读字段可以使用static关键字,只读字段可以不进行初始化赋值,只读字段只能在构造函数或变量初始化时进行赋值
public const int a=1;//常量不可以使用static关键字,常量必须在定义的时候进行初始化进行赋值
static test()//静态构造函数,类实例化之前调用执行,且只执行一次
{
b = 2;//因为是只读字段,所以只能在构造函数中进行初始化,且改只读字段为static类型,所以需在静态构造函数中进行赋值
}
void aa()
{
//a = 1;错误
//b=1;错误
}
}
}
有关C#中的只读字段
常量的概念是一个包含不能修改的值的变量,常量是C#与大多数编程语言共有的,但是常量不必满足所有的要求。有时需要一些变量,其值不应改变,但在运行之前是未知的,C#为这种情形提供了另一个类型的变量:readonly字段。
readonly关键字比const灵活得多,允许把一个字段设置为常量,但可以执行一些运算,以确定它的初始值。其规则是:可以在构造函数中给readonly字段赋值,但不能在其他地方赋值。readonly字段还可以是一个实例字段,而不是静态字段,类的每个实例可以有不同的值,与const字段不同,如果要把readonly字段设置为静态,就必须显式声明。
注意:
不需要把readonly字段定义为private,因为根据定义,它们不能在外部修改(此规则同样适用于常量)。
在构造函数中不必为readonly字段赋值,如果没有赋值,它的值就是其数据类型的默认值,或者在声明时给它初始化的值。
这适用于静态和实例readonly字段。