Можно ли присвоить значение константной переменной при создании объекта?

Обновить

April 2019

Просмотры

32 раз

1

Я создаю клиент для WebRequestTool, который содержит токен, который используется на протяжении всего жизненного цикла каждого объекта, но является уникальным для каждого объекта класса. Так как я не хочу, чтобы значение переменно после создания объекта, я хотел бы, чтобы это было Constant.

Я уже пробовал использовать внутренний SetMethod, который вызывается из конструктора, как:

internal void setToken(string token)
{
    this.TOKEN = token; 
}

Я также попытался просто назначая его внутри конструктора. Это тоже не работает.

public class Client
{
    const TOKEN; 

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

Есть ли действительно никакой другой способ присвоения постоянной, чем жестко прописывать его при объявлении его? И если есть то, что это?

2 ответы

1

You can insted declare it private readonly

public class Client
{
   private readonly string _token;

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

Readonly fields can't be modified once they are set and can be set in the constructor.

2

From documentation:

A const field can only be initialized at the declaration of the field

You might want to use readonly instead:

A readonly field can be initialized either at the declaration or in a constructor. Therefore, readonly fields can have different values depending on the constructor used

Another nice resource: Difference between readonly and const keyword in C#

Связанные вопросы