ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

10.11.2008, 17:34
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
споры о виртуальных песочницах ни к чему не приведут как и вопрос Вляпываться в песочницу или не вляпываться! Это из разряда вроде по делу а по сути флуд!
|
|
|

04.12.2008, 21:50
|
|
Banned
Регистрация: 22.12.2007
Сообщений: 660
Провел на форуме: 3885269
Репутация:
1158
|
|
Еще хотелось бы добавить, тем кто собирается переходить на C# с С++ важно к прочтению http://msdn.microsoft.com/ru-ru/vcsharp/default.aspx
Это наиболее полная справочная информация, содержащая в себе статьи, видео уроки, справочник C#, описание классов, функций, свойств и.т.д.
-----
А вообще, не советовал бы вам читать, тонну литературы, (лишь только в том случае если вы не знаете ООП) наилучший опыт и знания получают на практике 
|
|
|

04.12.2008, 22:49
|
|
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
Провел на форуме: 1027635
Репутация:
234
|
|
Решил добавить список фич в С# в зависимости от версии:
C# 2.0
- ключевое слово partial позволяет разделять реолизацию класса более чем на один файл:
file1.cs:
PHP код:
public partial class MyClass
{
public void MyMethod1()
{
// Manually written code
}
}
file2.cs:
PHP код:
public partial class MyClass
{
public void MyMethod2()
{
// Automatically generated code
}
}
- Обобщённые, или параметризованные типы (generics). В отличие от шаблонов C++, они поддерживают некоторые дополнительные возможности и работают на уровне виртуальной машины. Вместе с тем, параметрами обобщенного типа не могут быть выражения.
- Новая форма итератора, позволяющая создавать сопрограммы с помощью ключевого слова yield, подобно Python'у.
PHP код:
public static IEnumerable<int> GetEven(IEnumerable<int> numbers)
{
foreach (int i in numbers)
{
if (i % 2 == 0) yield return i;
}
}
этот код вернёт все чётные числа из numbers
- Анонимные методы, обеспечивающие функциональность замыкания.
- Обнуляемые ('nullable') типы-значения (обозначаемые вопросительным знаком, например, int? i = null  , представляющие собой те же самые типы-значения, только могущие принимать также значение null. Такие типы позволяют улучшить взаимодействие с базами данных через язык SQL.
PHP код:
int? i = null;
object o = i;
if (o == null)
Console.WriteLine("Correct behaviour - runtime version from September 2005 or later");
else
Console.WriteLine("Incorrect behaviour - pre-release runtime (from before September 2005)");
C# 3.0
- интегрированный язык запросов LINQ(Language-Integrated Query)
PHP код:
int[] array = { 1, 5, 2, 10, 7 };
// Выбрать квадраты нечётных чисел в массиве отсортировав в убывающем порядке
IEnumerable<int> query = from x in array
where x % 2 == 1
orderby x descending
select x * x;
- Инициализация объекта вместе с его свойствами:
PHP код:
Customer c = new Customer { Name="James" };
- Лямбда-выражения:
PHP код:
listOfFoo.Where(delegate(Foo x) { return x.size > 10; });
// превратится в
listOfFoo.Where(x => x.size > 10);
- Подразумеваемый тип локальной переменной:
PHP код:
var x = "hello";
//вместо
string x = "hello";
- Анонимные типы:
PHP код:
var x = new { Name = "James" };
- Методы-расширения — добавление метода в существующий класс с помощью ключевого слова this при первом параметре статической функции.
PHP код:
public static class StringExtensions
{
public static string Left(this string s, int n)
{
return s.Substring(0, n);
}
}
string s = "foo";
s.Left(3); // то же что и StringExtensions.Left(s, 3);
C# 3.0 будет совместим с C# 2.0 по генерируемому MSIL-коду; улучшения в языке — чисто синтаксические и реализуются на этапе компиляции. Например, многие из интегрированных запросов LINQ можно уже сейчас осуществить, используя безымянные делегаты в сочетании с предикатными методами над контейнерами вроде List.FindAll и List.RemoveAll.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|