Чего мы ждем от 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
Случайно пропустил и не добавил «пре-заключение», оно после зеленой линии идет.