Pull to refresh

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

Reading time4 min
Views1.3K

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



Чего хотят программисты:

  • 1. Опциональные параметры в функциях и методах.

  • 2. Сделать опциональным ключевое слово «var»,
    все равно будем отталкиваться от названия переменной.

  • 3. Вывести «var» за пределы функций/методов.

  • 4. Проваливающийся 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

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


P.S

Возможно я не всю информацию смог найти о том чего хотят программисты,
напишите если не нашли свой «вариант» было бы очень интересно.

P.P.S

Название топика было изменено с
«Что нас ждет в C# 4.0» на «Чего мы ждем от C# 4.0»,
т.к пока довольно мало можно написать о том, что действительно грядет :)

P.P.S

Случайно пропустил и не добавил «пре-заключение», оно после зеленой линии идет.
Tags:
Hubs:
Total votes 58: ↑42.5 and ↓15.5+27
Comments86

Articles