Подтвердить что ты не робот

Функции VB-С#

Каковы эквиваленты следующих операторов от VB.Net до С#?

  • UBound()
  • LBound()
  • IsNothing()
  • Chr()
  • Len()
  • UCase()
  • LCase()
  • Left()
  • Right()
  • RTrim()
  • LTrim()
  • уравновешивание()
  • Средние()
  • Заменить()
  • Разделить()
  • Join()
  • MsgBox()
  • IIF()
4b9b3361

Ответ 1

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 для массивов нулевой длины.
  • Строковые функции VB используют один индекс, в то время как метод .NET использует индекс на основе нуля. То есть Mid("asdf",2,2) соответствует "asdf".SubString(1,2).
  • ? не является точным эквивалентом IIf, потому что IIf всегда оценивает оба аргумента, а ? оценивает только тот, который ему нужен. Это может иметь значение, если есть побочные эффекты оценки ~ содрогаться!
  • Многие классические функции VB String, включая Len(), UCase(), LCase(), Right(), RTrim() и Trim(), будут обрабатывать аргумент Nothing (Null в С# ) как эквивалент строки нулевой длины. Выполнение строковых методов на Nothing, конечно же, вызовет исключение.
  • Вы также можете передать Nothing в классические функции VB Mid() и Replace(). Вместо того, чтобы бросать исключение, они возвращают Nothing.

Ответ 2

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;

Ответ 3

Большинство из них - это методы экземпляра для строкового объекта, которые возвращают измененную строку.

MsgBox vs. MessageBox.Show(..)
IIF vs. (expression?returnValueIfTrue:returnValueElse)

Ответ 4

IIf(test, trueval, falseval)(test ? trueval : falseval);

IsNothing(obj)(obj == null);

UCase(str)str.ToUpper();

LCase(str)str.ToLower();

Ответ 5

Прежде всего, большинство из них НЕ являются операторами. Они являются функциями, и функции включены только в VB.Net по соображениям совместимости. Это означает, что вы также не должны использовать их в VB.net, а вместо этого используйте эквиваленты, предоставляемые новым API.

  • UBound()arrayVar.Length
  • LBound() — устаревшая нижняя граница всегда равна 0 в обычном массиве .Net
  • IsNothing() — устарели. Используйте Is Nothing в VB.Net и == null в С#
  • Chr()Convert.ToChar() или (char)someVar
  • Len()stringVar.Length используйте это также в VB
  • UCase()stringVar.ToUpper() использовать это также в VB
  • LCase()stringVar.ToLower() использовать это также в VB
  • Влево()stringVar.Substring(0, n) использовать это также в VB
  • Right()stringVar.Substring(stringVar.Length - n) использовать это также в VB
  • RTrim()stringVar.TrimEnd() используйте это в VB тоже
  • LTrim()stringVar.TrimStart() использовать это также в VB
  • Trim()stringVar.Trim() использовать это также в VB
  • Середина()stringVar.Substring(n, m) использовать это также в VB
  • Заменить()stringVar.Replace() использовать это в VB тоже
  • Разделить()stringVar.Split() использовать это также в VB
  • Присоединиться()String.Join() использовать это также в VB
  • MsgBox()MessageBox.Show()
  • IIF()(condition) ? truepart : falsepart - обратите внимание, что есть некоторые отличия, потому что "?" является оператором, а не функцией

Ответ 6

Все эти функции являются методами-членами класса Microsoft.VisualBasic.Information в сборке Microsoft.VisualBasic, поэтому вы можете использовать их напрямую. Однако большинство из них имеют эквиваленты С# или не относящиеся к языку эквиваленты в основных классах .NET:

  • UBound(): Array.GetUpperBound
  • LBound(): Array.GetLowerBound
  • IsNothing(): == null
  • Chr(): (char)intValue (cast)
  • Len(): String.Length
  • UCase(): String.ToUpper
  • LCase(): String.ToLower
  • Left(), Right() и Mid(): String.Substring (с разными аргументами)
  • RTrim(): String.TrimEnd
  • LTrim(): String.TrimStart
  • Trim(): String.Trim
  • Заменить(): String.Replace
  • Split(): String.Split
  • Присоединиться(): String.Join
  • MsgBox(): MessageBox.Show
  • IIF(): condition ? valueIfTrue : valueIfFalse (условный оператор)

Ссылки

Ответ 8

Я считаю, что некоторые из них, такие как Mid(), по-прежнему доступны в .NET Framework в пространстве имен Microsoft.VisualBasic, который вы все еще можете ссылаться на код С#.

Ответ 9

Еще один...

VB - IsDBNull (значение)

С# - yourdatarow.IsNull( "columnName" )

Ответ 10

Если вы посмотрите на MSDN, вы увидите, что в большинстве случаев есть пример кода для обоих языков.

Ответ 11

  • UBound() → если x - массив строки [], например: x.GetUpperBound();
  • LBound() → если x - массив строки [], например: x.GetLowerBound();
  • IsNothing() → if (x == null)
  • Chr() → char x = (char) 65;
  • Len() → x.Length();
  • UCase() → Предположим, что x - это строка: x.ToUpper();
  • LCase() → Предположим, что x является строкой: x.ToLower();
  • Left() → Предположим, что x - это строка: x.Substring(0, 10);//первые 10 символов
  • Right() → Предположим, что x - это строка: x.Substring(x.Length - 10);//последние 10 символов
  • RTrim() → x.TrimEnd();
  • LTrim() → x.TrimStart();
  • Trim() → x.Trim();
  • Середина() → Предположим, что x - это строка: x.Substring()
  • Заменить() → предположить, что x - это строка: x.Replace();
  • Split() → Предположим, что x - это строка: x.Split();
  • Join() → String.Join();
  • MsgBox() → MessageBox.Show();
  • IIF() → тернарный оператор (x == true? true-value: false-value);

Ответ 12

Еще одно дополнение к этому может быть Функция IndexOf() для поиска строки в строке

Пример ниже...

string MainString = "String Manipulation"; 
string SearchString = "pul"; 
int FirstChr = MainString.IndexOf(SearchString); 
//SHOWS START POSITION OF STRING 
MessageBox.Show("Found at : " + FirstChr );

Ответ 13

В дополнение к ответам выше. Будьте осторожны при замене Len() → x.Length. VB Len() позволяет вам передавать null, но в С# вы получите исключение. Иногда было бы лучше использовать String.IsNullrEmpty() (если позволяет ситуация)

Ответ 14

Пространственная функция отсутствует в списке всех остальных:

Space(16) -> new String(" ", 16)