Каковы эквиваленты следующих операторов от VB.Net до С#?
- UBound()
- LBound()
- IsNothing()
- Chr()
- Len()
- UCase()
- LCase()
- Left()
- Right()
- RTrim()
- LTrim()
- уравновешивание()
- Средние()
- Заменить()
- Разделить()
- Join()
- MsgBox()
- IIF()
Каковы эквиваленты следующих операторов от VB.Net до С#?
VB C#
UBound() = yourArray.GetUpperBound(0) or yourArray.Length for one-dimesional arrays
LBound() = yourArray.GetLowerBound(0)
IsNothing() = Object.ReferenceEquals(obj,null)
Chr() = Convert.ToChar()
Len() = "string".Length
UCase() = "string".ToUpper()
LCase() = "string".ToLower()
Left() = "string".Substring(0, length)
Right() = "string".Substring("string".Length - desiredLength)
RTrim() = "string".TrimEnd()
LTrim() = "string".TrimStart()
Trim() = "string".Trim()
Mid() = "string".Substring(start, length)
Replace() = "string".Replace()
Split() = "string".Split()
Join() = String.Join()
MsgBox() = MessageBox.Show()
IIF() = (boolean_condition ? "true" : "false")
Примечания
yourArray.GetUpperBound(0)
vs yourArray.Length
: если массив имеет нулевую длину, GetUpperBound вернет -1, а Length вернет 0. UBound()
в VB.NET вернет -1 для массивов нулевой длины.Mid("asdf",2,2)
соответствует "asdf".SubString(1,2)
.?
не является точным эквивалентом IIf
, потому что IIf
всегда оценивает оба аргумента, а ?
оценивает только тот, который ему нужен. Это может иметь значение, если есть побочные эффекты оценки ~ содрогаться!Len()
, UCase()
, LCase()
, Right()
, RTrim()
и Trim()
, будут обрабатывать аргумент Nothing
(Null
в С# ) как эквивалент строки нулевой длины. Выполнение строковых методов на Nothing
, конечно же, вызовет исключение.Nothing
в классические функции VB Mid()
и Replace()
. Вместо того, чтобы бросать исключение, они возвращают Nothing
.UBound() "array".Length
LBound()
IsNothing(): "object" == null
Chr() (char)"N"
Len() "string".Length
UCase() "string".ToUpper()
LCase() "string".ToLower()
Left() "string".Substring(from, to)
Right() "string".Substring(from, to)
RTrim() "string".TrimEnd()
LTrim() "string".TrimStart()
Trim() "string".Trim()
Mid() "string".Substring(from, to)
Replace() "string".Replace()
Split() "string".Split()
Join() String.Join()
MsgBox() MessageBox.Show()
IIF() validate ? iftrue : iffalse;
Большинство из них - это методы экземпляра для строкового объекта, которые возвращают измененную строку.
MsgBox vs. MessageBox.Show(..)
IIF vs. (expression?returnValueIfTrue:returnValueElse)
IIf(test, trueval, falseval)
→ (test ? trueval : falseval);
IsNothing(obj)
→ (obj == null);
UCase(str)
→ str.ToUpper();
LCase(str)
→ str.ToLower();
Прежде всего, большинство из них НЕ являются операторами. Они являются функциями, и функции включены только в VB.Net по соображениям совместимости. Это означает, что вы также не должны использовать их в VB.net, а вместо этого используйте эквиваленты, предоставляемые новым API.
arrayVar.Length
Is Nothing
в VB.Net и == null
в С#Convert.ToChar()
или (char)someVar
stringVar.Length
используйте это также в VBstringVar.ToUpper()
использовать это также в VBstringVar.ToLower()
использовать это также в VBstringVar.Substring(0, n)
использовать это также в VBstringVar.Substring(stringVar.Length - n)
использовать это также в VBstringVar.TrimEnd()
используйте это в VB тожеstringVar.TrimStart()
использовать это также в VBstringVar.Trim()
использовать это также в VBstringVar.Substring(n, m)
использовать это также в VBstringVar.Replace()
использовать это в VB тожеstringVar.Split()
использовать это также в VBString.Join()
использовать это также в VBMessageBox.Show()
(condition) ? truepart : falsepart
- обратите внимание, что есть некоторые отличия, потому что "?" является оператором, а не функциейВсе эти функции являются методами-членами класса Microsoft.VisualBasic.Information
в сборке Microsoft.VisualBasic
, поэтому вы можете использовать их напрямую. Однако большинство из них имеют эквиваленты С# или не относящиеся к языку эквиваленты в основных классах .NET:
Array.GetUpperBound
Array.GetLowerBound
== null
(char)intValue
(cast)String.Length
String.ToUpper
String.ToLower
String.Substring
(с разными аргументами)String.TrimEnd
String.TrimStart
String.Trim
String.Replace
String.Split
String.Join
MessageBox.Show
condition ? valueIfTrue : valueIfFalse
(условный оператор)Ссылки
Вы найдете преобразование для многих из этих функций на этой странице wikipedia.
Я считаю, что некоторые из них, такие как Mid()
, по-прежнему доступны в .NET Framework в пространстве имен Microsoft.VisualBasic, который вы все еще можете ссылаться на код С#.
Еще один...
VB - IsDBNull (значение)
С# - yourdatarow.IsNull( "columnName" )
Если вы посмотрите на MSDN, вы увидите, что в большинстве случаев есть пример кода для обоих языков.
Еще одно дополнение к этому может быть Функция IndexOf() для поиска строки в строке
Пример ниже...
string MainString = "String Manipulation";
string SearchString = "pul";
int FirstChr = MainString.IndexOf(SearchString);
//SHOWS START POSITION OF STRING
MessageBox.Show("Found at : " + FirstChr );
В дополнение к ответам выше. Будьте осторожны при замене Len() → x.Length. VB Len() позволяет вам передавать null, но в С# вы получите исключение. Иногда было бы лучше использовать String.IsNullrEmpty() (если позволяет ситуация)
Пространственная функция отсутствует в списке всех остальных:
Space(16) -> new String(" ", 16)