Чего мы ждем от C# 4.0

Чего хотят программисты: Опциональные параметры в функциях и методах; Сделать опциональным ключевое слово «var», все равно будем отталкиваться от названия переменной; Вывести «var» за пределы функций/методов; Проваливающийся switch (пример).

 
const int val = 0;
switch(val)
{
case 0:
    Console.WriteLine(0);
case 1:
    Console.WriteLine(1);
case 2:
    Console.WriteLine(2);
    break;
}

//Должен нам вывести 0, 1, 2.
 





 

  • 5. Использовать в switch не «константные варианты».

     
    Type IntType = typeof (Int32);

    switch (IntType)
    {
       case typeof(Int32):
         DoSmth();
         break;
    }
     

     
  • 6.   List<var> SomeList = new List<string>();

     
  • 7. [NotNull] атрибут для типов данных.

     
  • 8. Интегрировать частично возможности Spec#

     
  • 9. Mixing как в Ruby

     
  • 10. Мета-программирование на стадии компиляции.



Что не хватает мне:

 
  • Тут я написал по Framework, а не по языку, как заметили ниже в комментариях.
    Просто вдруг нас прочитают евангелисты от Microsoft и это в самой платформе поправят/добавят.

    1. Добавить логику внутри методов получения всех файлов и папок внутри папки, т.к. к части папок/файлов пользователь доступ не имеет, и возникают ошибки (тратится время на try/catch), либо добавить метод проверки.

     
    public FileInfo[] SearchAllMp3()
        {
          DirectoryInfo directoryInfo = new DirectoryInfo(@«C:»);
          FileInfo[] fileInfos = directoryInfo.GetFiles(«*.mp3», SearchOption.AllDirectories);

          return fileInfos;
      }
     


    Если так написать у 100% пользователей Vista и у части других будет ошибка, ввиду того, что «винда» защищает свои папки.

    Соответственно, приходится писать рекурсивный алгоритм с проверкой на доступ, но тут «затык», ибо на проверку доступа мы будем тратить ресурсы при каждой новой папке, а если поставим просто в вызове:

     
    try { //получаем файлы из директории }
    catch { // ну и фиг бы с защищенными папками}


    то потратим ресурсы на обработку исключения ну раза 4-5.

    Ну, это случай получения всех файлов и папок, а иногда действительно нужно проверить права пользователя на папку, и это довольно не просто, особенно когда права на папку принадлежат группе, а «юзер» в нее входит.

    И тут будут огороды, начиная от LDAP заканчивая WMI проверками, а ведь могло быть и так:

     
    public void WriteFile(DirectoryInfo directoryInfo, string FilePath, string Text)
      {
        if(directoryInfo.WeCanView)
         {
            using (StreamWriter sw = new StreamWriter(FilePath))
            {
               sw.Write(Text);
           }
         }
    }
     


    Вместо проверок вручную через ACL (начало примерно такое: directoryInfo.GetAccessControl(AccessControlSections.Owner)), которая займет до 20 строк.

     
  • 2. PNG сжатие, оно есть но не работает.

     
  • 3. Убрать «прикол», когда нужно каждый раз сохранять JPG с качеством 75%,
    ибо если 100%, то эффекта нет, а размер файла растет.

     
  • 4. В WinForms (в WPF не пробовал) возможность работать объекту на форме (контролу) в другом потоке.

     
  • 5. Это относится к Visual Studio, но напишу: Дизайнер WCF конфигурации. Дайте! — хабрачеловек показал что оно оказывается есть, а я и не углядел, спасибо * mbakirov


===============================================================


Что предположительно будет изменено/добавлено:

 
1.   Улучшена поддержка IronPython, IronRuby
      (будет проще использовать «их» классы)

Будет введена поддержка области dynamic:

static void Main(string[] args)
{
  dynamic
  {
    object MyNewDynamicObject = LookUpAndGetDynamicObject();
    MyNewDynamicObject.CallSomeMethod();              // вызовем метод 
    MyNewDynamicObject.GetSomeString = «value»;    // зададим поле
    MyNewDynamicObject [5] = 25;                            // зададим данные в коллекцию
  }
}

2.   Добавят часть из функциональных языков

3.   Добавят новые возможности или облегчат существующие для
     одновременного доступа и распараллеливания операций.

4.   Пополнят арсенал C# средствами из динамических языков программирования.
 


Посмотреть видео с Design Team C# 4.0
Обещают раскрыть часть или все нововведения на PDC 2008


Автор: http://zabr.habrahabr.ru/



Опубликовал admin
27 Сен, Суббота 2008г.



Программирование для чайников.