Как вы возвращаете «не Uint» в C #?

2

У меня есть код, написанный в VB, который читается следующим образом:

Return (Not (crc32Result))

Я пытаюсь преобразовать его в С#, и это то, что у меня есть:

return (!(crc32Result));

Однако я получаю ошибку компилятора:

Сообщение об ошибке компилятора: CS0023: Operator '!' не может применяться к операнду типа 'uint'

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

Спасибо!

Теги:
operators
code-conversion

3 ответа

15
Лучший ответ

Похоже на то, что вы пытаетесь сделать, это обратить вспять бит crc32result. Если это так, вам нужен оператор тильды ~.

return (~crc32Result);

Ссылка этот вопрос.

  • 2
    Быстрое объяснение было бы полезно ... в VB.NET не может использоваться как побитовый оператор. В этом случае он выполняет отрицание (переворачивание или обращение битов). Ответ дает C # эквивалентно.
  • 0
    Спасибо, Джастин. Это полезно
3

Попробуйте следующее:

return crc32Result == 0;

Или немного лучше понять, что я делаю:

return !(crc32Result != 0);

Что делает второй пример, это преобразовать его в логическое значение директором "0 - false, отличное от нуля - true". Поэтому, если он не равен нулю, он вернет true. И затем я использую '!' оператора для выполнения операции "нет". Код Visual Basic, который вы дали, по-видимому, делает неявную часть (как и C/С++), но С# и Java не будут.

Но это так, если и ТОЛЬКО, если вы ищете логический тип возврата из этой функции. Если вы делаете бит-мутную инверсию, вам необходимо следующее:

return (~crc32Result);

В этом случае оператор '~' выполняет преобразование в другой бит-шаблон.

3

В С#, bang (!) используется для переброса булевой переменной. Вы пытаетесь обработать uInt выше как логическое или выполнить другое изменение (возможно, изменение всех двоичных цифр)?

Я бы предложил один из них - это решение, которое вы ищете:

return (!(bool)crc32Result);  // treating as bool (0 = false, anything else is true)

return (~crc32Result); //bitwise flipping for all

Ещё вопросы

Сообщество Overcoder
Наверх
Меню