C#中的const和readonly关键字详解
作者:Darren 时间:2023-02-21 17:44:22
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;
}
用readonly修饰的变量是运行时变量
可以把运行时变量赋值给readonly修饰的变量
readonly修饰的变量在声明时,既可以赋初值,也可以不赋初值
readonly修饰的变量可以在前面加static修饰符
来源:https://www.cnblogs.com/darrenji/p/3835461.html
标签:C#,const,readonly,关键字
0
投稿
猜你喜欢
关于c#中枚举类型支持显示中文的扩展说明
2023-02-02 22:35:02
Android使用ContentResolver搜索手机通讯录的方法
2021-12-28 08:33:16
Java实现二分查找的变种
2023-11-07 11:26:28
采用C#实现软件自动更新的方法
2021-12-30 19:13:38
基于<aop:aspect>与<aop:advisor>的区别
2023-01-22 21:53:35
Android程序开发中单选按钮(RadioGroup)的使用详解
2023-09-18 03:43:39
ReadWriteLock接口及其实现ReentrantReadWriteLock方法
2023-11-24 01:46:52
一文搞懂Spring中的注解与反射
2023-11-11 11:38:18
Android6.0 Launcher2应用解析
2021-10-29 19:19:43
详解C#中的System.Timers.Timer定时器的使用和定时自动清理内存应用
2022-11-07 14:09:54
简介Winform中创建用户控件
2021-10-14 04:39:37
Java设计模式之抽象工厂模式实例详解
2023-11-29 04:04:57
android虚拟键盘弹出遮挡登陆按钮问题的解决方法
2022-03-06 15:54:54
Java 判断线程池所有任务是否执行完毕的操作
2021-10-03 09:43:55
Android中资源文件用法简单示例
2023-09-24 22:29:04
浅谈JMeter engine启动原理
2022-02-22 03:06:47
Maven+SSM框架实现简单的增删改查
2023-11-16 17:14:38
基于@RestControllerAdvice与@ControllerAdvice的区别说明
2022-06-24 21:00:36
Swagger注解-@ApiModel和@ApiModelProperty的用法
2023-02-05 23:57:48
C#中const用法详解
2021-08-12 15:30:29