2015-02-23 2 views
4

Я только начинаю изучать C# и его связь с .NET. Если я хочу воспользоваться последними языковыми соглашениями на языке C#, но хотел бы настроить таргетинг, скажем, платформу .NET 2.0, могу ли я это сделать? Или использование последнего C# означает, что мне нужно использовать последнюю версию .NET?Являются ли версии C# и .NET зависимыми друг от друга?

+0

@JustinHarvey, значит ли это, вы не можете целевой C# 6.0 код на .NET 4.5 CLR? Любые ссылки на это требование? Насколько я понимаю, большинство преимуществ C# 6 получены с использованием методов компилятора. – haim770

+0

Я ожидаю, что ситуация для C# 6 будет похожа на C# 5: вы можете скомпилировать C# 5 для запуска на CLR 2.0: многие языковые функции, новые для C# 5, такие как inferrence, были улучшены компилятором. Некоторые другие функции, такие как использование динамики или асинхронизации, требуют новых CLR библиотек, которые недоступны в новейшей версии. – realbart

+0

Для тех из вас, кто задается вопросом, обычно мне не нужно ориентироваться на что-то вроде 2.0, но мой проект - это инструмент, который можно использовать в более ранних системах, таких как XP, поэтому он должен иметь самую широкую аудиторию профилей .NET. – tralston

ответ

4

C# как язык не зависит от .NET Framework.

Например: методы расширения - это функция, выпущенная с C# 3.0, которая поставляется вместе с .Net 2.0. Методы расширения зависит от ExtensionAttribute, который живет в «mscorlib.dll», который был добавлен в .Net 3.5. Но вы можете использовать методы расширения в .Net 2.0, учитывая, что вы предоставляете свой собственный ExtensionAttribute в своей библиотеке. Это не должно быть в mscorlib. См. this question for more info.

Как известно, является новым в C# 5.0, который был выпущен с .Net 4.5, но we can use async-await in .Net 4.0 itself.

Sameway, большинство зависимостей языковых функций могут быть определены в вашей собственной сборке, чтобы заставить ее работать. Поэтому он не нуждается в конкретной версии .Net framework.

+2

Если вы посмотрите на .NET framework как комбинацию «CLR + Managed libraries», проще объяснить, почему новые функции (такие как async/await) выходят с новыми версиями фреймворка. –

+0

Значит ли это, что любая новая функция может быть перенесена обратно в .NET 2.0, предполагая, что ссылки на соответствующие библиотеки? Я предполагаю, что версия Visual Studio имеет значение в некоторых случаях, когда она распознает новые языковые соглашения (например, значения по умолчанию для авто-свойства). – tralston

+0

@tralston Да. Почти ничего не может быть сделано с .Net 2.0, если для этих функций не требуется поддержка CLR. Новая визуальная поддержка студии требуется для понимания новых ключевых слов и функций, но вы можете работать без визуальной студии (только с компилятором командной строки), если у вас есть терпение :) –

0

вы можете использовать возможности визуальных изданий самого последней студии (2013, 2015), но код должен быть в соответствии с спецификациями 2.0, чтобы обеспечить компиляцию в .NET 2.0 (старые версии)

0

Да, C# и .Net версию зависят. Согласно моему пониманию, C# - это язык программирования, который работает с использованием технологии .Net.

Обучение C# означает изучение базового синтаксиса, который почти одинаковый во всех версиях .Net. Итак, для изучения C#, не имеет значения, какую версию .Net вы должны настроить. Различные версии .Net добавляют некоторые новые функции или функциональные возможности. В любом случае лучше понять последнюю версию .Net, которая поможет вам в проектах.

+2

Вы можете с радостью писать приложения на C#, не используя .net вообще – Sayse

+0

Да ... правда ... Но изучая его лучше знать основы .net na? –

0

Вы можете использовать функции C# из более ранних версий с более поздними версиями .Net, например, вы можете использовать любую функцию C# 2.0 с .Net 3.5, это не работает в обратном направлении, поэтому вы не можете использовать .Net 3.5 с компилятором C# 2.0.

Для получения более подробной информации см: https://msdn.microsoft.com/en-us/library/ff602939(v=vs.110).aspx

0

C# 6.0 доступен в .NET 5.0. Это зависит от CLR. C# 4, 4.5 и 4.5.1 используют версию CLR 4.

Смежные вопросы