const和readonly经常被用来修饰类的字段,两者有何异同呢?
一定要赋初值
public class Student { public const int age; }
生成的时候,会报如下错:
正确的应该这样写:
public class Student { public const int age = 18; }
不可以
public class Student { public static const int age = 18; }
生成的时候,会报如下错:
正确的应该这样写:
public class Student { public const int age = 18; }
因为const默认是static。
不可以
public class Student { public const int age = 18; public Student(int a) { age = a + 1; } }
生成的时候,会报如下错:
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 { }
不一定,既可以赋初值,也可以不赋初值。
以下不赋初值的写法正确:
public class Student { public readonly int age; }
以下赋初值的写法也对:
public class Student { public readonly int age = 18; }
可以
以下在构造函数中给readonly类型变量赋值是可以的:
public class Student { public readonly int age = 18; public Student(int a) { age = a; } }
可以的
以下写法正确:
public class Student { public static readonly int age = 18; }
const修饰符:
readonly修饰符:
到此这篇关于C#关键字const和readonly的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。