#c# #arrays #variables #xna #constants
#c# #массивы #переменные #xna #константы
Вопрос:
В данный момент я создаю небольшую игру в XNA.
И я хочу основывать размер массива на разрешении моего экрана.
Я сделал это так:
public const int intBoardheight = (GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height -150) / 10 ;
public const int intBoardwidth = (GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width - 200) / 10;
public bool[,] GameBoard = new bool[intBoardheight,intBoardwidth];
public bool[,] GameBoardUpdate = new bool[intBoardheight, intBoardwidth];
public int[,] GameBoardInt = new int[intBoardheight, intBoardwidth];
Но это выдает мне ошибку «Выражение, присваиваемое ‘Game_Of_Life_2.Game1.intBoardheight’, должно быть постоянным».
Итак, как мне создать константу на основе переменной?
Заранее спасибо!
Саймон.
РЕДАКТИРОВАТЬ: Спасибо, ребята! Сработало очень хорошо!
Комментарии:
1.Константа — это то, что никогда не меняется. Не то, что никогда не меняется в течение срока службы программы. Никогда, как в «ни в какой момент времени, в прошлом, настоящем или будущем, это значение никогда не будет отличаться от того, что оно говорит прямо здесь». Pi — это константа. 1 — это константа.
CurrentDisplayMode.Height
не является константой.2. Хм, это переменная, если вы основываете ее на переменной.
Ответ №1:
Вы не можете. Сделать это public static readonly int
Комментарии:
1. Я голосую за это, я думаю, что статический доступ только для чтения лучше выражает идею «константы», чем просто доступ только для чтения (который может быть изменен каждым экземпляром класса в его конструкторе).
Ответ №2:
Вы не можете создать константу, но вы можете сделать ее доступной только для чтения
public readonly int intBoardheight = ...
readonly
Переменная может быть назначена только при объявлении или в конструкторе. После этого изменить невозможно.
Ответ №3:
поскольку это переменная, основанная на текущем разрешении при запуске вашего приложения, вы не можете сделать это константой времени компиляции, но вы можете сделать это readonly
.