Каковы эквиваленты следующих операторов от VB.Net до C#?VB to C# Функции
- UBound()
- LBound()
- IsNothing()
- Chr()
- Len()
- UCase()
- LCase()
- Влево()
- Right()
- RTrim()
- LTrim()
- уравновешивание()
- Mid()
- Заменить()
- Split()
- Join()
- MsgBox()
- IIF()
Каковы эквиваленты следующих операторов от VB.Net до C#?VB to C# Функции
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 для нуль- длина массивов.Mid("asdf",2,2)
соответствует "asdf".SubString(1,2)
.?
не является точным эквивалентом IIf
IIf
, потому что всегда оценивает как аргументы, и ?
оценивает только один он нуждается. Это может иметь значение, если есть побочные эффекты оценки ~ содрогнуться!Len()
, UCase()
, LCase()
, Right()
, RTrim()
и Trim()
, будут относиться аргумент Nothing
(Null
в C#) как эквивалент строки нулевой длины. Выполнение строковых методов на Nothing
, конечно, вызовет исключение.Nothing
классическим функциям VB Mid()
и Replace()
. Вместо того, чтобы бросать исключение, они возвратят Nothing
.Это CW, поэтому не стесняйтесь исправить/изменить/добавить –
Позаботьтесь, и дважды проверьте, что вы не топали на чужие права – ChrisF
Я подозреваю, что вы отменили UBound и LBound, но я не знаю VB. –
Большинство из них представляют собой методы экземпляра строкового объекта, которые возвращают измененную строку.
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();
Вы найдете преобразования для многих из этих функций на this wikipedia page.
Если вы посмотрите вы видите на MSDN большую часть времени, что есть пример кода для обоих языков.
Я считаю, как Mid()
Некоторые из них по-прежнему доступны в .NET Framework в пространстве имен Microsoft.VisualBasic вы можете еще какие ссылки из C# код.
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;
"array" .Length на самом деле UBound + 1 ... –
Прежде всего, большинство из тех, кто не являются операторами. Они являются функциями, и функции включены только в VB.Net по соображениям совместимости. Это означает, что вы также не должны использовать их в VB.net, а вместо этого используйте эквиваленты, предоставляемые новым API.
arrayVar.Length
Is Nothing
в VB.Чистая и == null
в C#Convert.ToChar()
или (char)someVar
stringVar.Length
использовать это в VB слишком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
- "?", Обратите внимание, что есть некоторые различия, потому что является оператором, а не функцияarrayVar.Length на самом деле UBound + 1 ... –
@Thomas: это зависит от того, как вы устанавливаете Option Base в старом vb. –
Нижняя граница для массивов, возвращаемых COM-вызовами, может быть не 0. – Govert
Все эти функции являются методами члены Microsoft.VisualBasic.Information
класса, в Microsoft.VisualBasic
сборки, так что вы можете использовать их непосредственно. Тем не менее, большинство из них имеют C# эквиваленты, или не язык конкретных эквивалентов в ядро классов .NET рамочные:
Array.GetUpperBound
Array.GetLowerBound
== null
(char)intValue
(литой)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
(условный оператор)Ссылки
Еще один ...
VB - IsDBNull (значение)
C# - yourdatarow.IsNull («ColumnName»)
Еще одно дополнение к этому может быть 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, но в C# вы получите исключение. Иногда лучше было бы использовать String.IsNullrEmpty() (Если ситуация позволяет)
Функция пространства отсутствует все остальной список:
Space(16) -> new String(" ", 16)
Это действительно пережитки VB6 в любом случае - в VB.NET вы должны использовать методы объектов String или Array, например String.TrimLeft, String.ToUpper и Array.GetUpperBound. И, конечно, MessageBox.Show – MartW
Просто для информации, они не являются действительно операторами VB.NET, есть библиотека совместимости, включенная в VB.NET (которую вы могли бы использовать на C#, если хотите, просто добавьте ссылку и использование), которые несут эти функции из VB.OLD - так что если вы хотите быть действительно педантичным ... – Murph
Просто маленький нит-выбор: все это функции. ** Ни один ** из них не является оператором. –