软件编程
位置:首页>> 软件编程>> C#编程>> C#中的const和readonly关键字详解

C#中的const和readonly关键字详解

作者:Darren  发布时间:2023-02-21 17:44:22 

标签:C#,const,readonly,关键字

const和readonly经常被用来修饰类的字段,两者有何异同呢?

const

1、声明const类型变量一定要赋初值吗?

一定要赋初值

public class Student
{
   public const int age;
}

生成的时候,会报如下错:

C#中的const和readonly关键字详解

正确的应该这样写:

public class Student
{
   public const int age = 18;
}

2、声明const类型变量可以用static修饰吗?

不可以

public class Student
{
   public static const int age = 18;
}

生成的时候,会报如下错:

C#中的const和readonly关键字详解

正确的应该这样写:

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;
       }
   }

生成的时候,会报如下错:

C#中的const和readonly关键字详解

const类型变量是编译期变量,无法把运行时变量赋值给编译期变量。

4、const可以修饰引用类型变量吗?

可以,但只能给引用类型变量赋null值。

public class Student
   {
       public const Teacher teacher = new Teacher();
   }

public class Teacher
   {        
   }

生成的时候,会报如下错:

C#中的const和readonly关键字详解

正确的应该这样写:

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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com