2009-11-12 27 views
35

¿Cuál es el equivalente de los siguientes operadores de VB.Net a C#?Funciones de VB a C#

  • UBound()
  • LBound()
  • IsNothing()
  • Chr()
  • Len()
  • UCase()
  • LCase()
  • Izquierda()
  • derecha()
  • RTrim()
  • LTrim()
  • Trim()
  • Mid()
  • Reemplazar()
  • de Split()
  • de Ingreso()
  • MsgBox()
  • IIF()
+6

Esos son realmente remanentes de VB6 de todos modos - en VB.NET debería usar métodos de los objetos String o Array, por ejemplo, String.TrimLeft, String.ToUpper y Array.GetUpperBound. Y, por supuesto, MessageBox.Show – MartW

+4

Solo como información, no son realmente operadores "VB.NET", hay una biblioteca de compatibilidad incluida en VB.NET (que puede elegir usar en C# si lo desea, solo agregue la referencia y el uso) que llevan esas funciones desde VB.OLD, así que si uno quiere ser realmente pedante ... – Murph

+3

Solo una pequeña selección: estas son todas las funciones. ** Ninguno ** de ellos es un operador. –

Respuesta

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") 

Notas

  • yourArray.GetUpperBound(0) vs yourArray.Length: si la matriz es de longitud cero, GetUpperBound volverá -1, mientras que la longitud volverá 0. UBound() en VB.NET devolverá -1 para cero matrices de longitud.
  • Las funciones de cadena VB usan un índice basado en una, mientras que el método .NET usa un índice basado en cero. Es decir. Mid("asdf",2,2) corresponde a "asdf".SubString(1,2).
  • ? no es el equivalente exacto de IIfIIf porque siempre se evalúa ambos argumentos, y ? sólo evalúa la que necesita. Esto podría importar si hay efectos secundarios de la evaluación ~ estremecimiento!
  • las muchas funciones VB clásico de la cadena, incluyendo Len(), UCase(), LCase(), Right(), RTrim(), y Trim(), Will tratar un argumento de Nothing (Null en C#) como equivalente a una cadena de longitud cero. La ejecución de métodos de cadena en Nothing arrojará, por supuesto, una excepción.
  • También puede pasar Nothing a las funciones clásicas VB Mid() y Replace(). En lugar de lanzar una excepción, estos devolverán Nothing.
+0

Es CW, así que siéntase libre de corregir/modificar/agregar –

+1

Tenga cuidado, y vuelva a comprobar que no ha pisoteado las ediciones de otra persona – ChrisF

+0

Sospecho que invirtió UBound y LBound, pero no sé VB. –

2

La mayoría de estos serían métodos de instancia en el objeto de cadena que devuelve la cadena modificada.

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

If you look on MSDN you see that most of the time there are sample code for both languages.

1

I believe some of these like Mid() are still available in the .NET Framework in the Microsoft.VisualBasic namespace which you can still reference from C# code.

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 es en realidad UBound + 1 ... –

2

First of all, most of those are NOT operators. They are functions, and the functions are only included in VB.Net for compatibility reasons. That means you shouldn't use them in VB.net either, and instead use the equivalents provided by the new API.

  • UBound()arrayVar.Length
  • LBound() — obsolete, lower bound is always 0 in a normal .Net array
  • IsNothing() — obsolete. Use Is Nothing in VB.Net y == null en C#
  • Chr()Convert.ToChar() o (char)someVar
  • Len()stringVar.Length uso esta en VB demasiado
  • Ucase()stringVar.ToUpper() uso esta en VB demasiado
  • LCase()stringVar.ToLower() utiliza esto también en VB
  • izquierda()stringVar.Substring(0, n) uso esta en VB demasiado
  • derecha()stringVar.Substring(stringVar.Length - n) uso esta en VB demasiado
  • RTrim()stringVar.TrimEnd() uso esta en VB demasiado
  • LTrim ()stringVar.TrimStart() usar esto en VB también
  • Trim()stringVar.Trim() uso esto en VB demasiado
  • Mid()stringVar.Substring(n, m) uso esto en VB demasiado
  • Reemplazar()stringVar.Replace() uso esto en VB demasiado
  • split()stringVar.Split() utilizar esto en VB también
  • Unirme a()String.Join() utilizar esto en VB demasiado
  • MsgBox()MessageBox.Show()
  • IIF()(condition) ? truepart : falsepart - "?" En cuenta que hay algunas diferencias, porque es un operador y no una función
+1

arrayVar.Length en realidad es UBound + 1 ... –

+0

@Thomas: depende de cómo establezca Option Base en el vb anterior. –

+0

El límite inferior para las matrices devueltas por las llamadas COM podría no ser 0. – Govert

0
  • UBound() -> si x es una matriz de string [] por ejemplo: x.GetUpperBound();
  • LBound() -> si x es una matriz de cadena [] por ejemplo: x.GetLowerBound();
  • IsNothing() -> if (x == nulo)
  • Chr() -> char x = (char) 65;
  • Len() -> x.Length();
  • UCase() -> supongamos que x es una cadena: x.ToUpper();
  • LCase() -> asumir x es una cadena: x.ToLower();
  • Izquierda() -> supongamos que x es una cadena: x.Substring (0, 10); // primeros 10 caracteres
  • Derecha() -> supongamos que x es una cadena: x.Substring (x.Longitud - 10); // los últimos 10 caracteres
  • RTrim() -> x.TrimEnd();
  • LTrim() -> x.TrimStart();
  • Recortar() -> x.Trim();
  • Mid() -> supongamos que x es una cadena: x.Substring()
  • Reemplazar() -> asumir x es una cadena: x.Replace();
  • Dividir() -> asumir x es una cadena: x.Split();
  • Unir() -> String.Join();
  • MsgBox() -> MessageBox.Show();
  • IIF() -> operador ternario (x == true? True-value: false-value);
2

Todas estas funciones son métodos miembros de la clase Microsoft.VisualBasic.Information, en la asamblea Microsoft.VisualBasic, por lo que se pueden utilizar directamente. Sin embargo, la mayoría de ellos tienen de C# equivalentes, o sus equivalentes no específicos de idioma en las clases del núcleo del framework .NET:

  • UBound(): Array.GetUpperBound
  • LBound(): Array.GetLowerBound
  • IsNothing(): == null
  • Chr(): (char)intValue (molde)
  • Len(): String.Length
  • Ucase(): String.ToUpper
  • LCase(): String.ToLower
  • izquierda() y derecha() y Mid(): String.Substring (con diferentes argumentos)
  • RTrim(): String.TrimEnd
  • LTrim(): String.TrimStart
  • Trim() : String.Trim
  • replace(): String.Replace
  • de Split(): String.Split
  • Join(): String.Join
  • MsgBox(): MessageBox.Show
  • IIF(): condition ? valueIfTrue : valueIfFalse (operador condicional)

Enlaces

1

Otro ...

VB - IsDBNull (valor)

C# - yourdatarow.IsNull ("columnName")

0

Uno más Además de esto podría ser IndexOf() función para Buscar cadena en cadena

Un ejemplo de abajo ...

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

Además de las respuestas encima. Tenga cuidado al reemplazar Len() -> x.Length. VB Len() le permite pasar nulo, pero en C# obtendrá una excepción. veces sería mejor utilizar String.IsNullrEmpty() (Si la situación lo permite)

0

La función de espacio no se encuentra en la lista de todos los demás:

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