七问C#关键字const和readonly

王朝学院·作者佚名  2016-05-17
窄屏简体版  字體: 小  |  中  |  大  |  超大  

七问C#关键字const和readonlyconst和readonly经常被用来修饰类的字段,两者有何异同呢?

const

1、声明const类型变量一定要赋初值吗?

--一定要赋初值

public class Student { public const int age; }

生成的时候,会报如下错:

正确的应该这样写:public class Student { public const int age = 18; }

2、声明const类型变量可以用static修饰吗?

--不可以

public class Student { public static const int age = 18; }

生成的时候,会报如下错:

正确的应该这样写:public class Student { public const int age = 18; }

因为const默认是static。

3、运行时变量可以赋值给const类型变量吗?

--不可以

public class Student { public const int age = 18; public Student(int a) { age = a + 1; } }

生成的时候,会报如下错:

const类型变量是编译期变量,无法把运行时变量赋值给编译期变量。

4、const可以修饰引用类型变量吗?

--可以,但只能给引用类型变量赋null值。

public class Student { public const Teacher teacher = new Teacher(); } public class Teacher { }

生成的时候,会报如下错:

正确的应该这样写:

public class Student { public const Teacher teacher = null; } public class Teacher { }

readonly

5、声明readonly类型变量一定要赋初值吗?

--不一定,既可以赋初值,也可以不赋初值。

以下不赋初值的写法正确:

public class Student { public readonly int age; }

以下赋初值的写法也对:public class Student { public readonly int age = 18; }

6、运行时变量可以赋值给readonly类型变量吗?

--可以

以下在构造函数中给readonly类型变量赋值是可以的:public class Student { public readonly int age = 18; public Student(int a) { age = a; } }

7、声明readonly类型变量可以用static修饰吗?

--可以的

以下写法正确:public class Student { public static readonly int age = 18; }

总结

const修饰符:● 用const修饰的变量是编译期变量● 不能把运行时变量赋值给const修饰的变量● const修饰的变量在声明时要赋初值● const修饰的变量不能在前面加static修饰● cosnt也可以修饰引用类型变量,但一定要给引用类型变量赋null初值

readonly修饰符: ● 用readonly修饰的变量是运行时变量● 可以把运行时变量赋值给readonly修饰的变量● readonly修饰的变量在声明时,既可以赋初值,也可以不赋初值● readonly修饰的变量可以在前面加static修饰符

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航