C#细节之const&readonly
const是常量,readonly是只读,“博客园er”都知道:)
那么他们的区别是什么那?个人总结如下:
一、赋值
1)const修饰的变量在定义时必须赋初值,其他位置不容许改变变量值;
2)readonly修饰的变量可以在定义时赋值也可以在构造函数中赋值,其他位置不容许改变变量值。
二、调用
1)const修饰的变量需要用类名来调用如同static成员一样。
2)readonly修饰的变量需要用对象来调用。
三、代码
例:
public class ConstReadOnly
{
//public const string FirstName; //Error:const 定义变量时要初始化
public const string LastName = "Landpy";
public readonly string Age = “0”;
public ConstReadOnly()
{
Age = "27";
}
public void Deal()
{
//Age = "123";//Error:ReadOnly只能在构造函数或定义时赋值
//LastName = "Peter";//Error:Const只能在定义时赋值
string Tmp = String.Empty;
Tmp = ConstReadOnly.LastName;
//Tmp = ConstReadOnly.Age;//Error:readonly修饰的变量只能用对象调用
ConstReadOnly constReadOnly = new ConstReadOnly();
//Tmp = constReadOnly.LastName;//Error:const修饰的变量只能用类名调用
Tmp = constReadOnly.Age;
}
}
那么他们的区别是什么那?个人总结如下:
一、赋值
1)const修饰的变量在定义时必须赋初值,其他位置不容许改变变量值;
2)readonly修饰的变量可以在定义时赋值也可以在构造函数中赋值,其他位置不容许改变变量值。
二、调用
1)const修饰的变量需要用类名来调用如同static成员一样。
2)readonly修饰的变量需要用对象来调用。
三、代码
例:
public class ConstReadOnly
{
//public const string FirstName; //Error:const 定义变量时要初始化
public const string LastName = "Landpy";
public readonly string Age = “0”;
public ConstReadOnly()
{
Age = "27";
}
public void Deal()
{
//Age = "123";//Error:ReadOnly只能在构造函数或定义时赋值
//LastName = "Peter";//Error:Const只能在定义时赋值
string Tmp = String.Empty;
Tmp = ConstReadOnly.LastName;
//Tmp = ConstReadOnly.Age;//Error:readonly修饰的变量只能用对象调用
ConstReadOnly constReadOnly = new ConstReadOnly();
//Tmp = constReadOnly.LastName;//Error:const修饰的变量只能用类名调用
Tmp = constReadOnly.Age;
}
}