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的更多相关文章

  1. C# 关键字const与readonly的区别

    尽管你写了很多年的C#的代码,但是可能当别人问到你const与readonly的区别时候,还是会小小的愣一会吧~ 笔者也是在看欧立奇版的<.Net 程序员面试宝典>的时候,才发现自己长久以 ...

  2. C#关键字 const与readonly

    ====const==== const关键字来声明某个常量字段或常量局部变量.常量字段和常量局部变量不是变量而且不能修改.常量可以为数字.布尔值.字符串或null引用. 常数声明的类型指定声明引入的成 ...

  3. const 与 readonly知多少

    原文地址: http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html 尽管你写了很多年的C#的代码,但是可能当别人问到你cons ...

  4. [转]const 与 readonly知多少

    引自:http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html 尽管你写了很多年的C#的代码,但是可能当别人问到你const与r ...

  5. C#基础知识七之const和readonly关键字

    前言 不知道大家对const和readonly关键字两者的区别了解多少,如果你也不是很清楚的话,那就一起来探讨吧!探讨之前我们先来了解静态常量和动态常量. 静态常量 所谓静态常量就是在编译期间会对变量 ...

  6. C#基础知识系列八(const和readonly关键字)

    前言 不知道大家对const和readonly这两个关键字的区别有什么了解,原来自己之前还真不清楚它们到底是怎么回事,那么如果你也不是很清楚的话,可以一起来探讨一下.在了解这两个关键字的时候我们先来了 ...

  7. c# const与readonly 关键字的比较

    C#中,const 与readonly是两个比较有用的关键字.const 与 readonly 定义的数据成员在初始化都不能再改变. 比如定义了 public class MathUtitlity   ...

  8. 如何使用C#关键字const,readonly,static

    如果有一个值不太会变化,我们经常使用const和readonly,这2者有何不同呢?有时候,我们也会在readonly之前加上关键字static,这又意味着什么呢? const ● const默认是静 ...

  9. const和readonly关键字

    不知道大家对const和readonly这两个关键字的区别有什么了解,原来自己之前还真不清楚它们到底是怎么回事,那么如果你也不是很清楚的话,可以一起来探讨一下.在了解这两个关键字的时候我们先来了解一下 ...

随机推荐

  1. Struts 2 - Hello World Example

    As you learnt from the Struts 2 architecture, when you click on a hyperlink or submit an HTML form i ...

  2. Spark(十四)SparkStreaming的官方文档

    一.SparkCore.SparkSQL和SparkStreaming的类似之处 二.SparkStreaming的运行流程 2.1 图解说明 2.2 文字解说 1.我们在集群中的其中一台机器上提交我 ...

  3. 百度Webuploader 大文件分片上传(.net接收)

    前阵子要做个大文件上传的功能,找来找去发现Webuploader还不错,关于她的介绍我就不再赘述. 动手前,在园子里找到了一篇不错的分片上传的帖子,参考之后,踏出了第一步.此文记录我这次实践的点滴,仅 ...

  4. USACO 6.2 Calf Flac

    Calf Flac It is said that if you give an infinite number of cows an infinite number of heavy-duty la ...

  5. 计算Python代码运行时间长度方法

    在代码中有时要计算某部分代码运行时间,便于分析. import time start = time.clock() run_function() end = time.clock() print st ...

  6. JavaScript中正则的使用(1)

    通过例子学习正则中的常见语法(1) $num javascript var a = 'javascript'; var b = a.replace(/(java)(script)/gi, '$2-$1 ...

  7. 问题:SpringBoot访问不到Controller

    SpringBoot正常启动,其它配置都正常,以下是控制台打印: 解决方法: 将controller与application配置文件同层,是访问时无法扫描到相应的controller,故无法映射到相应 ...

  8. Hadoop整理三(Hadoop分布式计算框架MapReduce)

    一.概念 MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算.概念"Map(映射)"和"Reduce(归约)",是它们的主要思想.它极大 ...

  9. Noip模拟题 Matrix [递推,组合数]

    Matrix 时间限制: 1 Sec  内存限制: 512 MB 题目描述 小 z 的女朋友送给小 z 一个 n × n 的矩阵.但是矩阵实在太大了,小 z 的女朋友拿不动,只能带给他两个长度为 n ...

  10. 深入理解Git - Git底层对象

    前篇: 深入理解Git - 一切皆commit 如何从稍微底层一点的角度,从底层实现理解一切皆commit ? 配合希沃白板课件食用,效果更佳: [希沃白板5]课件分享 : <Git 进阶 - ...