Чем точно “управляют” код?

У меня была аналогичная проблема - независимо от того, что я сделал, я не мог заставить tabsize придерживаться на 2, даже если он находится в моих пользовательских настройках, - в итоге это связано с расширением EditorConfig . Он ищет файл .editorconfig в вашем текущем рабочем каталоге и, если он не находит его (или тот, который он находит, не указывает root=true), он будет продолжать искать родительские каталоги, пока не найдет его.

Оказывается, у меня есть .editorconfig в родительском каталоге каталога, в который я помещаю все мои новые проекты кода, и он указал tabSize 4. Удаление этого файла исправило мою проблему.

54
задан Pmpr 20 May 2016 в 22:35
поделиться

14 ответов

При компиляции кода C# в .exe он компилируется в байт-код Общего промежуточного языка (CIL). Каждый раз, когда Вы выполняете исполняемый файл CIL, он выполняется на виртуальной машине Общеязыковой среды выполнения (CLR) Microsofts. Так не, не возможно включать скручивание жгутов VM Ваш исполняемый файл.NET. Необходимо было установить время выполнения.NET на любых клиентских машинах, куда программа будет работать.

Для ответа на второй вопрос.NET является платформой, в которой это - ряд библиотек, компиляторов и VM, который не является конкретным языком. Таким образом, можно кодировать на платформе.NET в C#, VB, C++ и любых других языках, которые имеют компилятор.NET.

https://bitbucket.org/brianritchie/wiki/wiki/.NET%20Languages

вышеупомянутая страница имеет список языков, которые имеют версии.NET, а также ссылки на их страницы.

36
ответ дан lnediger 7 November 2019 в 08:03
поделиться

Лично, я думаю, что слово "платформа" является чем-то вроде неправильного употребления.

.NET является "платформой", состоя из среды выполнения (виртуальная машина CLR) и ряд библиотек. Это точно походит на Java или Perl или Python (ни один из которых никогда не упоминается как "платформы").

В большинстве случаев, слово "платформа" используется для проектов как Spring или Struts или QT, которые находятся сверху платформы (т.е., не обеспечивая собственной среды выполнения) как библиотека.

, Но в отличие от "библиотеки", платформа стремится переопределить фундаментальные операции базовой платформы. (Внедрение зависимости Spring игнорирует звонящую конструктора логику обычного кода Java. Реализация сигналов-и-слотов QT игнорирует обычный код C++.)

я знаю, что я просто - педантичный ублюдок, но мне.NET не является платформой. Это - платформа.

0
ответ дан benjismith 7 November 2019 в 08:03
поделиться

Это может относиться к любому коду, выполненному виртуальной машиной, а не непосредственно ЦП.

я думаю, что это включает вещи как сборка "мусора", и массив ограничивает проверку.

0
ответ дан 7 November 2019 в 08:03
поделиться

. СЕТЬ является платформой. Это может использоваться со многих языков (VB.NET, C#, IronPython, шиканье, и т.д.)

.NET всегда выполняется, как интерпретируется, и не Вы не можете включать 'VM' в .exe. Любому пользователю, желающему выполнять Ваше приложение.NET, нужно было установить платформу.

0
ответ дан GEOCHET 7 November 2019 в 08:03
поделиться

Я могу ответить на вопрос платформы..NET является платформой, C#, VB.NET, и т.д. являются языками. В основном.NET обеспечивает общую платформу библиотек для вызова (Вся Система.... dlls), который может назвать любой язык с помощью.NET. Все языки.NET компилируются в MSIL (промежуточный язык Microsoft, более известный как просто IL), который может тогда быть выполнен на любом ПК с соответствующей установленной платформой.NET.

1
ответ дан Glenn Slaven 7 November 2019 в 08:03
поделиться

. СЕТЬ является платформой. Общеязыковая среда выполнения (CLR) выполняет промежуточный язык Microsoft (MSIL) код, который сгенерирован, когда решение компилируется (т.е. это не компилирует в машинный код). Вы не можете содержать API в exe, и при этом Вы не хотели бы к тому, поскольку это является довольно большим. Главное преимущество здесь является управлением памятью (среди некоторых других преимуществ безопасности и возможно других, о которых я не знаю.)

1
ответ дан Ed S. 7 November 2019 в 08:03
поделиться

В том же духе, действительно ли.NET является языком или платформой, и что точно "платформа" означает здесь? < <

.NET является текущей платформой программного обеспечения предприятия Microsoft. Это состоит из:

• единственный универсальный интерфейс для доступа к функциональности Windows:

o The .NET Framework Class Library (FCL).
o The FCL provides a rich set of high-level functionality for developers.

• единственный универсальный язык и время выполнения для выполнения приложений.NET:

o Common Language Runtime (CLR) executes Common Intermediate Language (CIL).
o The CLR is God: it runs, controls, and polices everything.

• выбор нескольких языков для разработки приложений.NET:

o Every development language is compiled to CIL, which is run by the CLR.
o C# and VB are the two main development languages.
2
ответ дан RoadWarrior 7 November 2019 в 08:03
поделиться

Термин справился , обычно применяется только к.NET, потому что Microsoft использует термин. Microsoft обычно не использует термин "виртуальная машина" в отношении среды управляемого выполнения.NET.

"байт-код".NET (IL) несколько отличается от Байт-кода Java, в котором это было явно разработано, чтобы быть скомпилированным в собственный код до выполнения в управляемой среде, тогда как Java был разработан, чтобы быть интерпретированным, но понятие платформенно независимого кода подобно.

"Платформа.NET" является в основном огромным набором библиотек, обеспеченных Microsoft, содержа тысячи классов, которые могут использоваться для разработки приложений.

А, скомпилированный, C# .exe содержит платформенно независимый код, который может быть выполнен в любой совместимой с.NET среде, включая Моно. Однако время выполнения обычно распределяется отдельно из приложений, которые используют его.

3
ответ дан Kristopher Johnson 7 November 2019 в 08:03
поделиться

Управляемый означает, что код не компилируется в собственный код, и таким образом работает под покровительством виртуальной машины. Java компилирует в промежуточный формат, названный байт-кодом, который Java знает VM, как интерпретировать и выполниться. Все языки.NET делают подобную вещь, компилируя в IL (промежуточный язык), который интерпретирует время выполнения.NET. Это немного сбивает с толку, потому что.NET IL имеет .dll и .exe окончания файла.

3
ответ дан jodonnell 7 November 2019 в 08:03
поделиться

Под.NET и Visual C++ а именно, у Вас может быть и Неуправляемый и Управляемый код. Термины относятся к способу, которым память выделяется и 'управляется'.

Неуправляемый код был бы материалом C++, к которому Вы привыкли. Динамическое выделение памяти и явное освобождение от памяти. Время выполнения.NET не управляет памятью для Вас, следовательно 'неуправляемый'.

Управляемым кодом, с другой стороны, управляет время выполнения. Вы выделяете память при необходимости (путем объявления переменных, не пространства памяти), и сборщик "мусора" во время выполнения определяет, когда это больше не необходимо и очищает все это. Сборщик "мусора" также переместит память для повышения эффективности. Время выполнения 'управляет' всем этим для Вас.

, Поскольку я упомянул выше, возможно записать код, которым и управляют и неуправляем.

Неуправляемый:

class Bar : public Foo {
    private:
            int fubar;
    public:
            Bar(int i) : fubar(i) {}
            int * getFubar() { return * fubar; }
}

Управляемый:

public ref class Bar :  public Foo
    private:
            int fubar;
    public:
            Bar(int i) : fubar(i) {}
            int ^ getFubar() { return ^ fubar; }
}

Уведомление касательно? Это в значительной степени определяет Управляемый класс. Это становится очень сбивающим с толку при смешивании двух видов кода как бы то ни было. Например, Вы хотите сохранить ссылочный указатель, (^) управляемый эквивалент указателя, к управлению Полем изображения в Вашем неуправляемом классе. Так как сборщик "мусора" может переместить память, в следующий раз, когда Вы пытаетесь разыменовать поле изображения, которым это не может быть найдено. Время выполнения не говорит Ваш неуправляемый код о, это - изменения памяти.

Поэтому необходимо придавить управляемый объект в памяти, чтобы позволить неуправляемому коду отслеживать его. Тогда там распаковывает и все виды других причуд, которые позволяют Вам смешивать два. Сложность кода огромна!

Официально, управляемый/неуправляемый мог бы свестись к способу, которым код выполняется на стопке.NET. Однако, если Вы происходите из среды C++, я надеюсь, что это будет немного более относиться к Вам.

6
ответ дан Graeme Perrow 7 November 2019 в 08:03
поделиться

Это, прежде всего, используется для описания.NET, потому что это - термин Microsoft, принял решение дифференцировать.NET от C/C++ и других более старых языков. Microsoft выбрала его, потому что это не был термин, который обычно связывался с Java, потому что они не хотели подчеркивать общие черты между C#/.NET и Java (в противоположность вызову его, что-то как 'виртуальная машина кодирует', который заставит его звучать как намного больше Java как). В основном использование "управляемого кода" продает управляемый, а не технически управляемый, терминология.

9
ответ дан Chris Upchurch 7 November 2019 в 08:03
поделиться

Я не думаю, что Вы являетесь одними в том, чтобы быть перепутанным тем, каков.Net. Уже существуют другие ответы, которым нужно касаться Вас, но я выведу этот лакомый кусочек информации для других.

Для наблюдения, что.Net "действительно" просто, переходят к c:\Windows\Microsoft.Net\Framework

Туда, Вы будете видеть папки, которые являются specfic к версии (версиям), которую Вы установили. Войдите в v2.0.xxxxx папку, если Вам установили ее, например.

В той папке платформа. Вы будете в основном видеть набор .exe файлов и .dll файлов. Все файлы DLL, которые запускаются с System.*.dll, являются по существу.Net платформой.

.exe файлы, которые Вы будете видеть в той папке, являются утилитами для разработчиков, а также компиляторов. Вы упомянули C#. Найдите файл csc.exe. Это - Ваш компилятор C#.

Здание программа действительно проста. Бросьте следующий код в hello.cs файл.

using System;
class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("hello world");
        }
    }

Тогда на типе командной строки> csc hello.cs

, Который генерирует Вас .exe файл. Выполните его, и это выложит 'привет мир', очевидно.

строка, которая говорит Консоль. WriteLine () звонит в Платформу. Консоль является объектом, который живет в Системном пространстве имен, и WriteLine () является статическим методом.

Это - демонтированный код для той Консоли. WriteLine () метод:

[HostProtection(SecurityAction.LinkDemand, UI=true)]
public static void WriteLine(string value)
{
    Out.WriteLine(value);
}

, Когда люди говорят вещи как, "Я должен использовать PHP или.Net?", или "Должен я использовать Python или.Net", Вы начинаете видеть, как это - неправильная вещь обсудить. Они, очевидно, сравнивают язык с Платформой. C# является языком, и это - только один из многих языков, которые могут использоваться для записи кода сверху.Net платформы. Тот же самый метод Консоли. WriteLine () может быть вызван от C#, VB.Net, Паскаля, C++, Ruby, Python, F# и любого другого языка, который был сделан работать сверху.Net платформы.

я надеюсь, что это помогает.

-Keith

11
ответ дан Keith Elder 7 November 2019 в 08:03
поделиться

Главным образом его обращение к тому, что все Ваши выделения памяти "организованы" для Вас. При использовании управляемого кода, Вы не должны волноваться об освобождении Ваших объектов, когда Вы сделаны с ними. Просто разрешение им выйти из объема будет означать, что VM в конечном счете распознает, что больше нет никаких ссылок на них и Соберут "мусор" их возвращающий память системе.

Неуправляемый код, с другой стороны, просто "протечет", если Вы явно не освободите свои указатели перед отбрасыванием ссылок.

10
ответ дан Vagnerr 7 November 2019 в 08:03
поделиться

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

Или помещенный иначе, который был бы Вы предпочитать использовать:

a) Неуправляемый код, который может сделать неконтролируемые вещи к системе.

b) Собственный скомпилированный код, который быстр, тверд и является близко к ОС.

, Конечно, они - на самом деле то же самое.

3
ответ дан David L Morris 7 November 2019 в 08:03
поделиться