七问C#关键字const和readonly
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
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修饰符
七问C#关键字const和readonly的更多相关文章
- C# 关键字const与readonly的区别
尽管你写了很多年的C#的代码,但是可能当别人问到你const与readonly的区别时候,还是会小小的愣一会吧~ 笔者也是在看欧立奇版的<.Net 程序员面试宝典>的时候,才发现自己长久以 ...
- C#关键字 const与readonly
====const==== const关键字来声明某个常量字段或常量局部变量.常量字段和常量局部变量不是变量而且不能修改.常量可以为数字.布尔值.字符串或null引用. 常数声明的类型指定声明引入的成 ...
- const 与 readonly知多少
原文地址: http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html 尽管你写了很多年的C#的代码,但是可能当别人问到你cons ...
- [转]const 与 readonly知多少
引自:http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html 尽管你写了很多年的C#的代码,但是可能当别人问到你const与r ...
- C#基础知识七之const和readonly关键字
前言 不知道大家对const和readonly关键字两者的区别了解多少,如果你也不是很清楚的话,那就一起来探讨吧!探讨之前我们先来了解静态常量和动态常量. 静态常量 所谓静态常量就是在编译期间会对变量 ...
- C#基础知识系列八(const和readonly关键字)
前言 不知道大家对const和readonly这两个关键字的区别有什么了解,原来自己之前还真不清楚它们到底是怎么回事,那么如果你也不是很清楚的话,可以一起来探讨一下.在了解这两个关键字的时候我们先来了 ...
- c# const与readonly 关键字的比较
C#中,const 与readonly是两个比较有用的关键字.const 与 readonly 定义的数据成员在初始化都不能再改变. 比如定义了 public class MathUtitlity ...
- 如何使用C#关键字const,readonly,static
如果有一个值不太会变化,我们经常使用const和readonly,这2者有何不同呢?有时候,我们也会在readonly之前加上关键字static,这又意味着什么呢? const ● const默认是静 ...
- const和readonly关键字
不知道大家对const和readonly这两个关键字的区别有什么了解,原来自己之前还真不清楚它们到底是怎么回事,那么如果你也不是很清楚的话,可以一起来探讨一下.在了解这两个关键字的时候我们先来了解一下 ...
随机推荐
- jersey HTTP Status 400 - Bad Request
原因是jersey 内置的转换器,只能做简单的类型转换如: 首先客户端提交上来的一定是String; String ----> String/Long/Boolean 这些基本的 可以转换,但是 ...
- SQLSERVER中的人民币数字转大写的函数实现
CREATE FUNCTION [dbo].[f_num_chn] (@num numeric(14,5))RETURNS varchar(100) WITH ENCRYPTIONASBEGIN-- ...
- Knockout.Js官网学习Demo(使用VS2012或者VS2013均可打开)
https://pan.baidu.com/s/1gf9JZ8n#list/path=%2F
- Pg188-3 构造方法
package org.hanqi.array; public class Father { private String name; private int age; public String g ...
- Two Seals codeforces 837c
Two Seals 一个矩形a*b,若干子矩形,子矩形中选2个,不重叠能覆盖最大 思路: 枚举: 代码: #include <cstdio> #include <cstring> ...
- 【LOJ】#2070. 「SDOI2016」平凡的骰子
题解 用了一堆迷之复杂的结论结果迷之好写的计算几何???? 好吧,要写立体几何了 如果有名词不懂自己搜吧 首先我们求重心,我们可以求带权重心,也就是x坐标的话是所有分割的小四面体的x坐标 * 四面体体 ...
- USACO 4.4 Frame Up
Frame Up Consider the following five picture frames shown on an 9 x 8 array: ........ ........ ..... ...
- LoadRunner WebTours无法显示页面
- HTML5 Canvas游戏开发(四)lufylegend开源库件(下)
一.文本 LTextField对象是lufylegend库件中专门用于显示文本信息的一个对象. 1.文本属性 创建的文本框对象不会自动加入可视化对象列表中.只有手动调用addChild()方法才能使它 ...
- oracle配置ODBC
摘自:http://www.cnblogs.com/shelvenn/p/3799849.html 我使用的Windows 10,64位的操作系统. 1.下载驱动包 base包:instantclie ...