创建对象时可以为const变量赋值吗?

时间:2019-03-26 10:03:07

标签: c#

我正在为WebRequestTool创建一个客户端,其中包含一个令牌,该令牌在每个Object的整个生命周期中都使用,但是对于类的每个实体都是唯一的。由于我不希望在创建对象后更改该值,因此我希望它是常量。

我已经尝试过使用内部SetMethod,它是从类似

的构造函数中调用的
internal void setToken(string token)
{
    this.TOKEN = token; 
}

我也尝试只在构造函数中分配它。那也行不通。

public class Client
{
    const TOKEN; 

    public client(string token)
    {
      this.TOKEN = token;
    }
}

在声明常量时,除了常量编码之外,真的没有别的分配常量的方法吗?如果有什么?

2 个答案:

答案 0 :(得分:2)

来自documentation

  

一个const字段只能在该字段的声明处初始化

您可能想改用readonly

  

可以在声明或构造函数中初始化只读字段。因此,根据所使用的构造函数,只读字段可以具有不同的值

另一个不错的资源:Difference between readonly and const keyword in C#

答案 1 :(得分:1)

您可以将其声明为私有只读

public class Client
{
   private readonly string _token;

   public Client(string token)
   {
       _token = token;
   }
}

只读字段一旦设置就无法修改,并且可以在构造函数中设置。