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可以修饰引用类型变量吗?

  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修饰符:

  readonly修饰符:

  到此这篇关于C#关键字const和readonly的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  您可能感兴趣的文章: