Функции VB в C # - PullRequest
       77

Функции VB в C #

37 голосов
/ 12 ноября 2009

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

  • UBound ()
  • LBound ()
  • IsNothing ()
  • Chr ()
  • Len ()
  • UCase ()
  • LCase ()
  • Left ()
  • правый ()
  • RTrim ()
  • LTrim ()
  • Обрезка ()
  • Mid ()
  • Заменить ()
  • Разделить ()
  • Join ()
  • MsgBox ()
  • IIF ()

Ответы [ 14 ]

75 голосов
/ 12 ноября 2009
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) против 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 в c # ) как эквивалент строки нулевой длины. Выполнение строковых методов в Nothing, конечно, вызовет исключение.
  • Вы также можете передать Nothing классическим функциям VB Mid() и Replace(). Вместо того, чтобы генерировать исключение, они вернут Nothing.
3 голосов
/ 12 ноября 2009

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

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

Ссылки

3 голосов
/ 12 ноября 2009
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;
2 голосов
/ 12 ноября 2009

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

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

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

IsNothing(obj) >> (obj == null);

UCase(str) >> str.ToUpper();

LCase(str) >> str.ToLower();

2 голосов
/ 12 ноября 2009

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

MsgBox vs. MessageBox.Show(..)
IIF vs. (expression?returnValueIfTrue:returnValueElse)
1 голос
/ 12 ноября 2009

Еще один ...

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

C # - yourdatarow.IsNull ("columnName")

1 голос
/ 12 ноября 2009

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

1 голос
/ 12 ноября 2009

Вы найдете преобразование для многих из этих функций на этой странице википедии .

0 голосов
/ 19 ноября 2015

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

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

...