2009-11-12 3 views
35

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

  • UBound()
  • LBound()
  • IsNothing()
  • Chr()
  • Len()
  • UCase()
  • LCase()
  • Влево()
  • Right()
  • RTrim()
  • LTrim()
  • уравновешивание()
  • Mid()
  • Заменить()
  • Split()
  • Join()
  • MsgBox()
  • IIF()
+6

Это действительно пережитки VB6 в любом случае - в VB.NET вы должны использовать методы объектов String или Array, например String.TrimLeft, String.ToUpper и Array.GetUpperBound. И, конечно, MessageBox.Show – MartW

+4

Просто для информации, они не являются действительно операторами VB.NET, есть библиотека совместимости, включенная в VB.NET (которую вы могли бы использовать на C#, если хотите, просто добавьте ссылку и использование), которые несут эти функции из VB.OLD - так что если вы хотите быть действительно педантичным ... – Murph

+3

Просто маленький нит-выбор: все это функции. ** Ни один ** из них не является оператором. –

ответ

66
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).
  • ? не является точным эквивалентом IIfIIf, потому что всегда оценивает как аргументы, и ? оценивает только один он нуждается. Это может иметь значение, если есть побочные эффекты оценки ~ содрогнуться!
  • многие классические струнные функции В. Б., в том числе Len(), UCase(), LCase(), Right(), RTrim() и Trim(), будут относиться аргумент Nothing (Null в C#) как эквивалент строки нулевой длины. Выполнение строковых методов на Nothing, конечно, вызовет исключение.
  • Вы также можете передать Nothing классическим функциям VB Mid() и Replace(). Вместо того, чтобы бросать исключение, они возвратят Nothing.
+0

Это CW, поэтому не стесняйтесь исправить/изменить/добавить –

+1

Позаботьтесь, и дважды проверьте, что вы не топали на чужие права – ChrisF

+0

Я подозреваю, что вы отменили UBound и LBound, но я не знаю VB. –

2

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

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

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

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

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

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

0

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

1

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

3
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; 
+0

"array" .Length на самом деле UBound + 1 ... –

2

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

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

arrayVar.Length на самом деле UBound + 1 ... –

+0

@Thomas: это зависит от того, как вы устанавливаете Option Base в старом vb. –

+0

Нижняя граница для массивов, возвращаемых COM-вызовами, может быть не 0. – Govert

0
  • UBound() -> если х представляет собой массив из строки [], например: 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();
  • Влево() -> Предположим, что x - это строка: x.Substring (0, 10); // первые 10 символов
  • Right() -> Предположим, что x является строкой: x.Substring (x.Длина - 10); // последние 10 символов
  • RTrim() -> x.TrimEnd();
  • LTrim() -> x.TrimStart();
  • Обрезка() -> 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);
2

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

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

Ссылки

1

Еще один ...

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

C# - yourdatarow.IsNull («ColumnName»)

0

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

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

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

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

0

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

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