Другим сценарием является то, что вы нанесли нулевой объект в тип значения . Например, код ниже:
object o = null;
DateTime d = (DateTime)o;
Он выкинет NullReferenceException
в роли. В приведенном выше примере это кажется совершенно очевидным, но это может произойти в более «поздних связующих» сложных сценариях, где нулевой объект был возвращен из некоторого кода, которого вы не являетесь, и приведение, например, генерируется некоторой автоматической системой.
Одним из примеров этого является этот простой фрагмент привязки ASP.NET с элементом управления календарем:
" />
Здесь SelectedDate
на самом деле является свойством - типа DateTime
- типа Calendar
Web Control, и привязка может отлично вернуть что-то null. Неявный генератор ASP.NET создаст кусок кода, который будет эквивалентен приведенному выше методу. И это поднимет NullReferenceException
, что довольно сложно определить, потому что он лежит в сгенерированном ASP.NET коде, который компилирует отлично ...
StackOverflow использует библиотеку Prettify .
Я очень доволен SHJS . Он поддерживает множество языков и кажется довольно быстрым и точным.
Вот пример, где я использую его в моем блоге . Я использую свой собственный CSS-файл, который имитирует выделение синтаксиса Coda . Напишите мне, если вы хотите его использовать.
Недавно я разработал одну радугу.
Основная цель проекта заключалась в том, чтобы сделать основную библиотеку очень маленькой и сделать ее очень простой для разработчиков.
См. http://rainbowco.de .
rdf:type
используется как элемент и когда он является атрибутом).
– Roger_S
9 June 2012 в 02:19
Если вы используете jQuery, есть Chilli:
http://code.google.com/p/jquery-chili-js/
Все, что вам нужно сделать, это включить jquery-chili.js и recipes.js и сделать выделение с помощью
$("code").chili();
Он должен сам определить язык.
Как насчет Призма Ли Вероу.
Из ее сообщения в блоге в июне (2012):
blockquote>
- Это крошечный. Ядро составляет всего 1,5 КБ, gzipped.
- Это невероятно расширяемо. Не только легко добавить новые языки (это данные с каждым ярлыком синтаксиса в наши дни), но и расширить существующие.
- Он поддерживает параллелизм через Web Workers, для повышения производительности в определенных случаях.
- Это не заставляет вас использовать какую-либо разметку, специфичную для Призма, даже не имя класса Prism, только стандартную разметку, которую вы должны использовать в любом случае. Итак, вы можете просто попробовать его на некоторое время, удалить его, если вам это не нравится, и не оставлять следов.
jQuery.Syntax - чрезвычайно быстрый и легкий синтаксический синтаксис.
Он был разработан специально для заполнения пробела - то есть: быстрый, чистый, синтаксический анализатор синтаксиса на стороне клиента.
Синтаксис jQuery Highlighter - новый, основанный на Prettify Google - действительно очень популярный простой синтаксис синтаксиса javascript.
Он поддерживает такие вещи как блоки code
и pre
, способные использовать такие имена классов, как language-javascript
, чтобы указать, что мы хотим выделить, а также wordwrap. Вы можете копировать и вставлять код, выбирая его обычно вместо того, чтобы открывать необработанное представление, как и многие другие. Его можно дополнительно настроить с помощью атрибута данных HTML5 data-sh
или путем указания параметров при инициализации. Большой стабильный выбор, который регулярно обновляется.
В этой статье в разделе «Ресурсы веб-ресурсов» приведен список вариантов выделения кода, некоторые из которых используют Javascript. Он был опубликован 4 мая 2009 года.
Я не спорю, но просто подумал, что стоит упомянуть, что если вы используете платформу CMS или блога, то по понятным причинам лучше использовать бэкэнд-маркер. Посмотрите на Geshi ( http://qbnz.com/highlighter/ ), если вам интересно. На самом деле вы можете настроить свой сервер для анализа содержимого HTML с помощью бэкэнд-технологии - поэтому нет необходимости в подсветке JS. (Единственная функциональность, которую они добавляют, это возможность печати / копирования [с помощью swf].)
Если вы ищете подсветку синтаксиса в редакторе в браузере, попробуйте CodeMirror .