C产品在市场上有哪些独特优势?
- 内容介绍
- 文章标签
- 相关推荐
本文共计774个文字,预计阅读时间需要4分钟。
const和readonly通常用来修饰类的字段,两者有如下异同:
- 相同点: - 都用于限制字段的访问级别。 - 都可以防止字段在实例化后修改其值。
- 不同点: - const修饰的字段必须在声明时初始化,且初始化后不可修改。 - readonly修饰的字段可以在声明时或构造函数中初始化,但一旦赋值后不可修改。
例如,const 1 和声明const类型变量时,变量必须赋初值。
对于以下代码:javapublic class Student { public const int age;}生成的错误是:Cannot use 'const' modifier on field 'Student.age'这是因为const不能用于字段声明,只能用于变量声明。正确的写法应该是:javapublic class Student { public final int age=1;}
const和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
1、声明readonly类型变量一定要赋初值吗?
不一定,既可以赋初值,也可以不赋初值。
以下不赋初值的写法正确:
public class Student { public readonly int age; }
以下赋初值的写法也对:
public class Student { public readonly int age = 18; }
2、运行时变量可以赋值给readonly类型变量吗?
可以
以下在构造函数中给readonly类型变量赋值是可以的:
public class Student { public readonly int age = 18; public Student(int a) { age = a; } }
3、声明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修饰符
到此这篇关于C#关键字const和readonly的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。
本文共计774个文字,预计阅读时间需要4分钟。
const和readonly通常用来修饰类的字段,两者有如下异同:
- 相同点: - 都用于限制字段的访问级别。 - 都可以防止字段在实例化后修改其值。
- 不同点: - const修饰的字段必须在声明时初始化,且初始化后不可修改。 - readonly修饰的字段可以在声明时或构造函数中初始化,但一旦赋值后不可修改。
例如,const 1 和声明const类型变量时,变量必须赋初值。
对于以下代码:javapublic class Student { public const int age;}生成的错误是:Cannot use 'const' modifier on field 'Student.age'这是因为const不能用于字段声明,只能用于变量声明。正确的写法应该是:javapublic class Student { public final int age=1;}
const和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
1、声明readonly类型变量一定要赋初值吗?
不一定,既可以赋初值,也可以不赋初值。
以下不赋初值的写法正确:
public class Student { public readonly int age; }
以下赋初值的写法也对:
public class Student { public readonly int age = 18; }
2、运行时变量可以赋值给readonly类型变量吗?
可以
以下在构造函数中给readonly类型变量赋值是可以的:
public class Student { public readonly int age = 18; public Student(int a) { age = a; } }
3、声明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修饰符
到此这篇关于C#关键字const和readonly的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。

