Симон Моурир дал этот пример :
object o = null;
DateTime d = (DateTime)o; // NullReferenceException
, где unboxing преобразование (литье) из object
(или из одного из классов System.ValueType
или System.Enum
или из типа интерфейса) - тип значения (кроме Nullable<>
) сам по себе дает NullReferenceException
.
В другом направлении конверсия бокса из a Nullable<>
, которая имеет HasValue
, равную false
, на ссылочный тип, может дать ссылку null
, которая затем может привести к NullReferenceException
. Классический пример:
DateTime? d = null;
var s = d.ToString(); // OK, no exception (no boxing), returns ""
var t = d.GetType(); // Bang! d is boxed, NullReferenceException
Иногда бокс происходит по-другому. Например, с помощью этого не общего метода расширения:
public static void MyExtension(this object x)
{
x.ToString();
}
следующий код будет проблематичным:
DateTime? d = null;
d.MyExtension(); // Leads to boxing, NullReferenceException occurs inside the body of the called method, not here.
Эти случаи возникают из-за специальных правил, используемых во время выполнения при боксе Nullable<>
экземпляров.
Используя
span.avoidwrap { display:inline-block; }
и обертывая текст, который я хочу сохранить вместе в
<span class="avoidwrap"> Text </span>
, он сначала будет обертываться в предпочтительных блоках, а затем в меньших фрагментах по мере необходимости .
Новый ответ теперь у нас есть HTML5:
HTML5 представляет тэг <wbr>
. [Это означает, что Word Break Opportunity.)
Добавление <wbr>
сообщает браузеру о разрыве там, где есть еще что-либо, поэтому легко разбить слова после запятых:
Honey Nut Cheerios,<wbr> Wheat Chex,<wbr> Grape-Nuts,<wbr> Rice Krispies,<wbr> Some random cereal with a very long name,<wbr> Honey Bunches of Oats,<wbr> Wheaties,<wbr> Special K,<wbr> Froot Loops,<wbr> Apple Jacks
Он поддерживает мои все основные браузеры, кроме IE.
Используйте <div>
вместо <span>
или укажите класс для SPAN и дайте ему атрибут display: block.
Легким ответом является использование символа пробела нулевой ширины ​
Используется для создания разрывов внутри слов в определенных точках .
Точно ли напротив неразрывного пространства
(ну, собственно, слово-столяр ⁠
) ( word-joiner - это версия безразмерной версии space )
(есть и другие не нарушающие коды, такие как неразрывный дефис ‑
) (здесь приведен обширный ответ на разные «варианты» nbsp)
Если вы хотите использовать только HTML-решение (без CSS / JS), вы могли бы использовать комбинацию пространства нулевой ширины и неиспользуемого пространства , однако это было бы действительно messy , а для записи удобочитаемой версии требуется небольшое усилие.
ctrl + c, ctrl + v помогает
пример:
Honey Nut Cheerios,<!---->​<!--
-->Wheat Chex,<!---->​<!--
-->Grape‑Nuts,<!---->​<!--
-->Rice Krispies,<!---->​<!--
-->Some random cereal with a very long name,<!---->​<!--
-->Honey Bunches of Oats,<!---->​<!--
-->Wheaties,<!---->​<!--
-->Special K,<!---->​<!--
-->Froot Loops,<!---->​<!--
-->Apple Jacks
нечитабельно? это тот же HTML без тегов комментариев:
Honey Nut Cheerios,​Wheat Chex,​Grape‑Nuts,​Rice Krispies,​Some random cereal with a very long name,​Honey Bunches of Oats,​Wheaties,​Special K,​Froot Loops,​Apple Jacks
Однако, поскольку рендеринг HTML html не полностью стандартизирован, его полезно для такого использования, поскольку это решение использует не CSS / JS
Кроме того, если вы используете это в сочетании с любым из решений на основе <span>
, у вас будет полный контроль алгоритма разрыва
(редакционная заметка:)
Единственная проблема, с которой я мог столкнуться, - это если вы хотите динамически менять точки предпочтительного ломания. Это потребует постоянной JS-манипуляции каждого из пропорциональных размеров пролета и необходимости обрабатывать эти HTML-объекты в тексте.
Вы можете просто отрегулировать настройки полей в CSS (в этом случае правая сторона).
text {
margin-right: 20%;
}
С вашей надписью выше используйте span { white-space:nowrap }
. Это так хорошо, как вы можете ожидать.
Для этого есть HTML-элемент: (теперь стандартизованный) элемент <wbr>
.
Я бы посоветовал вам использовать это. Он может не работать везде , но это лучшее, что вы можете сделать, не пройдя обручи.
Очень удобное RWD-решение из Dan Mall , которое я предпочитаю. Я собираюсь добавить его здесь, потому что некоторые другие вопросы, касающиеся ответных разрывов строк, отмечены как дубликаты этого. В вашем случае у вас будет:
<span>Honey Nut Cheerios, <br class="rwd-break">Wheat Chex, etc.</span>
И одна строка CSS в вашем медиа-запросе:
@media screen and (min-width: 768px) {
.rwd-break { display: none; }
}