alibek писал(а):MyUdt1 str="hello" это объявление и инициализация переменной с типом MyUdt1 или вызов процедуры MyUdt1 с передачей boolean-аргумента?
Тут, видимо, последует совет заключать аргумент в скобки.
jangle писал(а):Конструкции языка давно устарели.
Мне синтаксис бейсика нравится своей лучшей читаемостью. Мне нравится, что каждая языковая конструкция закрывается своим ключевым словом -
Loop,
End If,
Next и т. д. При чтении длинного цикла
For, когда, видя конец конструкции, мы уже не видим начало, мы понимаем, что это именно
For, то же самое касается принудительного выхода их цикла -
Exit Do,
Exit For.
Если у нас цикл
Do...Loop содержит внутри цикл
For, то мы можем выйти ИЗ ЛЮБОГО цикла, написав
Exit Do либо
Exit For, не городя костыли для этого.
Select Case в VB на голову превосходит сишный
switch.
Будь моя воля, я бы, скорее, сделал обязательным написание имени переменной после
Next, как вариант - пусть IDE автоматически подставляет. В vb.net уже сделали
Exit While и заменили
Wend на
End While, добавили возможность использования в
Select Case объектных выражений, если для данного объектного типа определить соответствующие операторы (равенство-неравенство, больше-меньше и т. п.), это мне нравится, изменения в синтаксисе бейсика должны быть такими.
Мне нравится, что задание переменной либо функции явно отличается, так код лучше читается, да, это его немного удлиняет, но при современной тенденции давать имена типа
TwipPerPixelX,
SetSamplerState или
QueryPerformanceCounter я не вижу в этом проблемы, тем более, что на vb код всё равно выходит короче, мы когда-то на Gamedev.ru это обсуждали, я привёл пример:
- Код: Выделить всё
Private Function TestLitera(ByVal s As String) As String
Select Case LCase$(s)
Case "ы", "а", "у", "о", "э", "и", "я", "ю", "ё", "е"
TestLitera = "Гласная буква"
Case "ь", "ъ"
TestLitera = "Твёрдый\мягкий знак"
Case "б" To "щ"
TestLitera = "Согласная буква"
Case "0" To "9"
TestLitera = "Цифра"
Case "a" To "z"
TestLitera = "Латинская буква"
Case Else
TestLitera = "Символ"
End Select
End Function
- Код: Выделить всё
private string TestLitera(string s)
{
string sL = s.ToLower();
if ((sL == "ы") || (sL == "а") || (sL == "у") || (sL == "о") || (sL == "э") || (sL == "и") || (sL == "я") || (sL == "ю") || (sL == "ё") || (sL == "е"))
return "Гласная буква";
else if ((sL == "ь") || (sL == "ъ"))
return "Твёрдый\\мягкий знак";
else if (sL.CompareTo("б") >= 0 && sL.CompareTo("щ") <= 0)
return "Согласная буква";
else if (sL.CompareTo("0") >= 0 && sL.CompareTo("9") <= 0)
return "Цифра";
else if (sL.CompareTo("a") >= 0 && sL.CompareTo("z") <= 0)
return "Латинская буква";
else
return "Символ";
}
Из "не VB-шных" нововведений, на которые я бы согласился - замена
As на
:, а
: на
;, как в Паскале, просто так логичнее, более соответствует человеческому языку.