Принимает ли оператор присваивания в c # любое другое значение, кроме bool в любом сценарии?

2015 update: подход flexbox

Есть два других ответа, кратко упомянувших flexbox ; однако это было более двух лет назад, и они не приводят никаких примеров. Спецификация для flexbox определенно решена.

Примечание. Хотя спецификация компоновки CSS Flexible Boxes находится на этапе рекомендации кандидата, не все браузеры ее реализовали. Реализация WebKit должна иметь префикс -webkit-; Internet Explorer реализует старую версию спецификации, с префиксом -ms-; В Opera 12.10 реализована последняя версия спецификации, без изменений. См. Таблицу совместимости каждого свойства для актуального состояния совместимости.

(взято из https://developer.mozilla.org/en-US/docs/Web/Guide/ CSS / Flexible_boxes )

Все основные браузеры и IE11 + поддерживают Flexbox. Для IE 10 и старше вы можете использовать прокладку FlexieJS.

Чтобы проверить текущую поддержку, вы также можете увидеть здесь: http://caniuse.com/#feat=flexbox

Рабочий пример

С помощью flexbox вы можете легко переключаться между любыми вашими строками или столбцами, имеющими фиксированные размеры, размеры размера контента или размеры оставшегося пространства. В моем примере я установил заголовок для привязки к его контенту (в соответствии с вопросом OP), я добавил нижний колонтитул, чтобы показать, как добавить область с фиксированной высотой, а затем установить область содержимого для заполнения оставшегося пространства.

html,
body {
  height: 100%;
  margin: 0
}

.box {
  display: flex;
  flex-flow: column;
  height: 100%;
}

.box .row {
  border: 1px dotted grey;
}

.box .row.header {
  flex: 0 1 auto;
  /* The above is shorthand for:
  flex-grow: 0,
  flex-shrink: 1,
  flex-basis: auto
  */
}

.box .row.content {
  flex: 1 1 auto;
}

.box .row.footer {
  flex: 0 1 40px;
}


header

(sized to content)

content (fills remaining space)

В CSS выше свойство flex сокращает гибкость , flex-shrink и flex-basis , чтобы установить гибкость элементов flex. Mozilla имеет хорошее введение в модель гибких ящиков .

1
задан Akarsha Rao 16 January 2019 в 04:51
поделиться

2 ответа

Но я хотел знать, есть ли сценарий, где if принимает любое значение, кроме bool.

Нет, нет и что-то вроде

if-else (C # Reference)

Оператор if определяет, какой оператор выполнять на основе по значению Boolean Expressio n

Следующее работает только потому, что результатом является логическое значение

if (a=Char.IsLower(c))

, которое эквивалентно

]
a=Char.IsLower(c);
if (a)

То же, что следующие a и b становятся результатом Char.IsLower(c)

bool a = false;
bool b = false; 
a = b = Char.IsLower(c)

... Результат должен быть равен bool (конец истории) [1123 ]

Предостережение (если хотите так его называть) допускает обнуление и отмененные операторы . Поднятые операторы - это операторы, которые работают над обнуляемыми типами, «поднимая» операторы, которые уже существуют в ненулевой форме, однако они все равно должны приравниваться к логическому выражению.

?int bob = null

if(bob > 3) { ... }

Дополнительные ресурсы

Из C # specs

12.4.8 Поднятые операторы

  • Для операторов равенства == !=

    • существует поднятая форма оператора, если типы операндов являются ненулевыми типами значений и если тип результата - bool. Поднятая форма создается путем добавления одного? модификатор для каждого типа операнда. Поднятый оператор считает два нулевых значения равными, а нулевое значение неравным любому ненулевому значению. Если оба операнда не равны NULL, поднятый оператор разворачивает операнды и применяет базовый оператор для получения результата bool.
  • Для реляционных операторов < > <= >=

    • существует поднятая форма оператора, если типы операндов оба являются ненулевыми типами значений и если результат тип бул. Поднятая форма создается путем добавления одного? модификатор для каждого типа операнда. Поднятый оператор выдает значение false, если один или оба операнда имеют значение null. В противном случае поднятый оператор разворачивает операнды и применяет базовый оператор для получения результата bool.
0
ответ дан Michael Randall 16 January 2019 в 04:51
поделиться

Я иногда использовал такое выражение: -

string a = null;

    if((a = GetValue()) != null){
    DoSomething();
    }

Это хороший синтаксис для назначения других значений, отличных от нуля, и проверки его на булево выражение. Хотя имейте в виду, что крайняя скобка всегда будет запрашивать логическое выражение.

0
ответ дан taimur alam 16 January 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: