CS0029: невозможно неявное преобразование типа int в bool - PullRequest
0 голосов
/ 13 мая 2019

Вот фрагмент кода в C # при выполнении, он выдает мне ошибку

ОШИБКА: «Не удается неявно преобразовать тип« int »в« bool »»

Я не могу понять, что я объявил массив как переменную boolean, и в моем коде нет другой переменной int, и не имеет значения, какие аргументы моей функции верны?

private static bool[,] array = new bool[41, 8];

public void SetArrayElement(int row, int col)
{
    array[row, col] = 1;
}

Ответы [ 3 ]

3 голосов
/ 13 мая 2019

Преобразование из int в bool может привести к потере информации.1 - это целочисленный литерал в C #.Вы можете использовать true вместо.

array[row, col] = true;
3 голосов
/ 13 мая 2019

В отличие от C , C # имеет специальный тип bool и не приводит к явному 1 true:

  bool myValue = 1; // <- Compile Time Error (C#)

Даже если возможно явное приведение, это не очень хорошая идея:

  bool myValue = (bool)1; // It compiles, but not a good style  

В вашем случае вы можете просто присвоить true

  //DONE: static : we don't want "this" here
  public static void SetArrayElement(int row, int col)
  {
     //DONE: validate public method's values
     if (row < array.GetLowerBound(0) || row > array.GetUpperBound(0))
         throw new ArgumentOutOfRangeException(nameof(row));
     else if (col < array.GetLowerBound(1) || col > array.GetUpperBound(1))
         throw new ArgumentOutOfRangeException(nameof(col)); 

     array[row, col] = true; // true, instead of 1
  }
3 голосов
/ 13 мая 2019

Вы объявили массив как bool, поэтому вы не можете присвоить ему integer. Вместо этого вы можете использовать true или false.

private static bool[,] array = new bool[41, 8]; 

public void SetArrayElement(int row, int col)
{
   array[row, col] = true; // assign either true or false.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...