2009-11-12 18 views
35

Quels sont les opérateurs suivants de VB.Net à C#?Fonctions VB à C#

  • UBound()
  • LBound()
  • IsNothing()
  • Chr()
  • Len()
  • UCase()
  • LCase()
  • Gauche()
  • droit()
  • RTrim()
  • LTrim()
  • trim()
  • Mid()
  • Remplacer()
  • de Split()
  • join()
  • MsgBox()
  • IIF()
+6

Ce sont vraiment survivances de VB6 de toute façon - en VB.NET vous devez utiliser les méthodes des objets String ou Array, par exemple String.TrimLeft, String.ToUpper et Array.GetUpperBound. Et bien sûr MessageBox.Show – MartW

+4

Juste pour information, ils ne sont pas vraiment des opérateurs "VB.NET", il y a une bibliothèque de compatibilité incluse dans VB.NET (que vous pourriez choisir d'utiliser en C# si vous le vouliez, ajoutez simplement la référence et l'utilisation) qui portent ces fonctions sur VB.OLD - donc si l'on voulait être vraiment pédant ... – Murph

+3

Juste un petit nit-pick: ce sont toutes des fonctions. ** Aucun ** d'entre eux est un opérateur. –

Répondre

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

Remarques

  • yourArray.GetUpperBound(0) vs yourArray.Length: si le tableau est de longueur nulle, GetUpperBound retourne -1, tandis que Length retourne 0. UBound() dans VB.NET retournera -1 pour zéro tableaux de longueur.
  • Les fonctions de chaîne VB utilisent un index basé sur un seul, tandis que la méthode .NET utilise un index basé sur zéro. C'est à dire. Mid("asdf",2,2) correspond à "asdf".SubString(1,2).
  • ? est pas l'équivalent exact de IIf parce IIf Evalue toujours les deux arguments et ? évalue que celui dont il a besoin. Cela pourrait avoir de l'importance s'il y a des effets secondaires de l'évaluation ~ shudder!
  • Les nombreuses fonctions de chaîne VB classique, y compris Len(), UCase(), LCase(), Right(), RTrim() et Trim(), traitera un argument de Nothing (Null en C#) comme étant équivalente à une chaîne de longueur nulle. Exécuter des méthodes de chaîne sur Nothing va, bien sûr, lancer une exception.
  • Vous pouvez également transmettre Nothing aux fonctions classiques VB Mid() et Replace(). Au lieu de lancer une exception, ils renverront Nothing.
+0

C'est CW donc n'hésitez pas à corriger/modifier/ajouter –

+1

Faites attention, et vérifiez que vous n'avez pas piétiné les modifications de quelqu'un d'autre – ChrisF

+0

Je suppose que vous avez inversé UBound et LBound, mais je ne connais pas VB. –

2

La plupart d'entre elles seraient des méthodes d'instance sur l'objet chaîne renvoyant la chaîne modifiée.

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

Si vous regardez vous voyez sur MSDN La plupart du temps Qu'il y ait des exemples de code pour les deux langues.

1

Je crois comme Mid() Certains d'entre eux sont encore disponibles dans le .NET Framework dans l'espace de noms Microsoft.VisualBasic vous pouvez toujours référence qui à partir du code 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 est réellement UBound + 1 ... –

2

tout d'abord, la plupart des personnes ne sont PAS les opérateurs. Ils sont des fonctions, et les fonctions ne sont incluses dans VB.Net pour des raisons de compatibilité. Cela signifie que vous ne devriez pas les utiliser dans VB.net Soit, et les équivalents, utilisez plutôt la nouvelle API fournie par.

  • UBound()arrayVar.Length
  • LBound() — obsolète, limite inférieure est toujours 0 dans la matrice normale Net
  • IsNothing() — obsolète. Utilisez Is Nothing dans VB.Net et == null en C#
  • Chr()Convert.ToChar() ou (char)someVar
  • Len()stringVar.Length utiliser dans VB trop
  • UCase()stringVar.ToUpper() utiliser dans VB trop
  • LCase()stringVar.ToLower() l'utiliser aussi dans VB
  • gauche()stringVar.Substring(0, n) utiliser dans VB trop
  • droit()stringVar.Substring(stringVar.Length - n) utiliser dans VB trop
  • RTrim()stringVar.TrimEnd() utiliser dans VB trop
  • LTrim (stringVar.TrimStart() aussi dans VB
  • trim()stringVar.Trim() utiliser dans VB trop
  • Mid()stringVar.Substring(n, m) utiliser dans VB trop
  • Remplacer()stringVar.Replace() utiliser dans VB trop
  • de Split()stringVar.Split() utiliser aussi dans VB
  • Join()String.Join() utiliser dans VB trop
  • MsgBox()MessageBox.Show()
  • IIF()(condition) ? truepart : falsepart - "?" Noter qu'il ya des différences, parce que est un opérateur et non pas une fonction
+1

arrayVar.Length est en fait UBound + 1 ... –

+0

@Thomas: cela dépend de la façon dont vous définissez Option Base dans vb ancien. –

+0

La limite inférieure pour les tableaux retournés par les appels COM peut ne pas être 0. – Govert

0
  • UBound() -> si x est un tableau de string [] par exemple: x.GetUpperBound(); LBound() -> si x est un tableau de chaînes [] par exemple: x.GetLowerBound();
  • IsNothing() -> if (x == nul)
  • Chr() -> char x = (char) 65;
  • Len() -> x.Length();
  • UCase() -> supposons que x est une chaîne: x.ToUpper(); LCase() -> supposer que x est une chaîne: x.ToLower();
  • Left() -> supposons que x est une chaîne: x.Substring (0, 10); // 10 premiers caractères
  • Right() -> supposons que x est une chaîne: x.Substring (x.Longueur - 10); // 10 derniers caractères
  • RTrim() -> x.TrimEnd();
  • LTrim() -> x.TrimStart();
  • Trim() -> x.Trim();
  • Mid() -> supposons que x est une chaîne: x.Substring()
  • Replace() -> supposons que x est une chaîne: x.Replace(); Split() -> supposer que x est une chaîne: x.Split();
  • Join() -> String.Join();
  • MsgBox() -> MessageBox.Show();
  • IIF() -> opérateur ternaire (x == true? True-value: false-value);
2

Toutes ces fonctions sont des méthodes membres de la classe Microsoft.VisualBasic.Information, dans l'assemblage Microsoft.VisualBasic, de sorte que vous pouvez les utiliser directement. Cependant, la plupart d'entre eux ont C# équivalents, ou équivalents spécifiques non linguistiques dans le noyau des classes .NET Framework:

  • UBound(): Array.GetUpperBound
  • LBound(): Array.GetLowerBound
  • IsNothing(): == null
  • Chr(): (char)intValue (cast)
  • Len(): String.Length
  • UCase(): String.ToUpper
  • LCase(): String.ToLower
  • Gauche(), droit() et Mid(): String.Substring (avec des arguments différents)
  • RTrim(): String.TrimEnd
  • LTrim(): String.TrimStart
  • trim() : String.Trim
  • Remplacer(): String.Replace
  • de Split(): String.Split
  • Join(): String.Join
  • MsgBox(): MessageBox.Show
  • IIF(): condition ? valueIfTrue : valueIfFalse (opérateur conditionnel)

Liens

1

... Un autre

VB - IsDBNull (valeur)

C# - yourdatarow.IsNull ("columnName")

0

Encore plus de cela pourrait être IndexOf() Fonction trouver une chaîne dans la chaîne

Un exemple ci-dessous ...

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

En plus des réponses au dessus. Attention à remplacer Len() -> x.Length. VB Len() vous permet de passer null, mais dans C# vous obtiendrez une exception. Parfois, il serait préférable d'utiliser String.IsNullrEmpty() (Si la situation le permet)

0

La fonction de l'espace est absent de la liste de tout le monde:

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