Вопрос

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

  • UBound()
  • LBound()
  • ИсНичего()
  • Хр()
  • Лен()
  • UCase()
  • ЛКейс()
  • Левый()
  • Верно()
  • РТрим()
  • ЛТрим()
  • Подрезать()
  • Середина()
  • Заменять()
  • Расколоть()
  • Присоединиться()
  • Сообщение()
  • ИИФ()
Это было полезно?

Решение

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

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

  • UBound() : Array.GetUpperBound
  • LBound() : Array.GetLowerBound
  • ЕстьНичего() : == null
  • Хр(): (char)intValue (бросать)
  • Лен(): String.Length
  • UCase() : String.ToUpper
  • ЛКейс() : String.ToLower
  • Left(), Right() и Mid() : String.Substring (с разными аргументами)
  • РТрим() : String.TrimEnd
  • ЛТрим(): String.TrimStart
  • Подрезать() : String.Trim
  • Заменять() : String.Replace
  • Расколоть() : String.Split
  • Присоединиться() : String.Join
  • Сообщение(): MessageBox.Show
  • ИИФ(): condition ? valueIfTrue : valueIfFalse (условный оператор)

Ссылки

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

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.

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

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

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

Другой...

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

С# — yourdatarow.IsNull("имя_столбца")

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

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

Еще одним дополнением к этому может быть Индекс чего-либо() функция поиска строки внутри строки

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

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, но в C# вы получите исключение.Иногда лучше использовать String.IsNullrEmpty() (если позволяет ситуация)

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top