Как сделать Бок о бок Компилятор для.NET

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

7
задан TheXenocide 17 September 2008 в 03:30
поделиться

3 ответа

Важно понять, что весь компилятор делает взятие исходный язык (C# в этом случае), проанализируйте его так, компилятор имеет представление, которое имеет смысл к нему и не людей (это - абстрактное синтаксическое дерево), и затем делает наивную генерацию кода на выходной язык (msil, цель для языков, которые работают на времени выполнения.NET).

Теперь, если код script# превращен в блок и взаимодействует с другим кодом.NET, который означает, что этот компилятор должен генерировать msil. script# использует csc.exe для этого, которое является просто стандартом c# компилятор. Теперь для генерации JavaScript это должно взять или c# или msil, проанализировать его и генерировать JavaScript для отправки к браузеру. В документах говорится, что это имеет пользовательский c#-> js компилятор под названием ssc.exe.

Чтобы заставить вещи последовательно взаимодействовать и на стороне клиента и на стороне сервера, это имеет ряд ссылочных блоков, которые записаны в.NET, но также компилируются в JavaScript. Это не конкретный вопрос компилятора, хотя, те ссылочные блоки являются script# временем выполнения. Время выполнения, вероятно, ответственно за большое script# волшебство, которое Вы чувствуете все же.

2
ответ дан 7 December 2019 в 18:46
поделиться

Так скажем, Вы хотите скомпилировать C# в JavaScript. Вы спрашиваете, можно ли использовать в своих интересах существующие компиляторы C#, таким образом, вместо того, чтобы компилировать C# в JavaScript непосредственно Вы на самом деле преобразовываете MSIL, сгенерированный компилятором C# в JavaScript?

Несомненно, можно сделать это. После того как у Вас есть двоичный файл MSIL, можно сделать то, что Вы хотите к нему.

0
ответ дан 7 December 2019 в 18:46
поделиться

Microsoft имеет исследовательский проект под названием Вольта, которая, среди других вещей, компилирует msil в JavaScript.

набор инструментов разработчика для создания многоуровневых веб-приложений с помощью существующих и знакомых инструментов, методов и шаблонов. Декларативное разделение уровня Вольты позволяет разработчикам отложить архитектурные решения о распределении до прошлого ответственного момента. Кроме того, благодаря общей модели программирования через несколько-уровней Вольта включает новое сквозное профилирование и тестирование на более высокие уровни производительности приложения, устойчивости и надежности. Используя декларативное разделение уровня, разработчики могут совершенствовать архитектурные решения на основе этих профильных данных. Это экономит время и стоит связанный с ручным рефакторингом. В действительности Вольта расширяет платформу.NET для дальнейшего включения разработки software+services приложений, с помощью существующих и знакомых инструментов и методов.

Вы проектируете и создаете свое приложение как клиентское приложение.NET, присваивая части приложения, которые работают на уровне сервера, и клиент разделяют на уровни поздно в процессе разработки. Можно быть нацелены на или веб-браузеры или для CLR как клиенты, и Вольта обрабатывает сложности разделения уровня. Компилятор создает перекрестный браузер JavaScript для клиентского уровня, веб-сервисы для уровня сервера, и вся коммуникация, сериализация, синхронизация, безопасность и другой шаблонный код для связывания уровней. В действительности Вольта предлагает опыт максимальных усилий в нескольких средах, не требуя адаптации приложения.

0
ответ дан 7 December 2019 в 18:46
поделиться
Другие вопросы по тегам:

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