VB到C#函数

时间:2009-11-12 15:12:13

标签: c# vb.net operators vb.net-to-c#

这相当于以下运算符从VB.Net到C#?

  • UBound函数()
  • LBOUND()
  • IsNothing()
  • CHR()
  • LEN()
  • UCase()
  • LCASE()
  • 左()
  • 右键()
  • RTRIM()
  • LTRIM()
  • 修剪()
  • 中()
  • 替换()
  • 分裂()
  • 加入()
  • MsgBox()
  • IIF()

14 个答案:

答案 0 :(得分:75)

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) vs yourArray.Length:如果数组为零长度,GetUpperBound将返回-1,而Length将返回0. {4}在VB.NET中将返回-1为零长度阵列。
  • VB字符串函数使用一个基于索引,而.NET方法使用基于零的索引。即UBound()对应Mid("asdf",2,2)
  • "asdf".SubString(1,2)?不完全等效,因为IIf始终评估两个参数,IIf仅评估所需的参数。如果评估有副作用,这可能很重要〜不寒而栗!
  • 许多经典VB字符串函数,包括?Len()UCase()LCase()Right()RTrim(),将会对待Trim()(c#中的Nothing)的参数等同于零长度字符串。当然,在Null上运行字符串方法会抛出异常。
  • 您还可以将Nothing传递给经典的VB NothingMid()函数。这些将返回Replace()
  • ,而不是抛出异常

答案 1 :(得分: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;

答案 2 :(得分:3)

所有这些函数都是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
  • 左(),右()和中():String.Substring(使用不同的参数)
  • RTrim():String.TrimEnd
  • LTrim():String.TrimStart
  • 修剪():String.Trim
  • 替换():String.Replace
  • 拆分():String.Split
  • 加入():String.Join
  • MsgBox():MessageBox.Show
  • IIF():condition ? valueIfTrue : valueIfFalse(条件运算符)

<强>链接

答案 3 :(得分:2)

其中大部分都是字符串对象上返回修改后的字符串的实例方法。

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

答案 4 :(得分:2)

IIf(test, trueval, falseval)&gt;&gt; (test ? trueval : falseval);

IsNothing(obj)&gt;&gt; (obj == null);

UCase(str)&gt;&gt; str.ToUpper();

LCase(str)&gt;&gt; str.ToLower();

答案 5 :(得分:2)

首先,大多数都不是运营商。它们是函数,并且出于兼容性原因,函数仅包含在VB.Net中。这意味着你不应该在VB.net中使用它们,而是使用新API提供的等价物。

  • UBound() - arrayVar.Length
  • LBound() - 过时,下限在正常的.Net数组中总是 0
  • IsNothing() - 已过时。在VB.Net中使用Is Nothing,在C#
  • 中使用== null
  • Chr() - Convert.ToChar()(char)someVar
  • Len() - stringVar.Length也在VB中使用
  • UCase() - stringVar.ToUpper()也在VB中使用
  • LCase() - stringVar.ToLower()也在VB中使用
  • 左() - stringVar.Substring(0, n)也在VB中使用
  • 右() - 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中也使用此功能
  • 拆分() - stringVar.Split()也可以在VB中使用
  • 加入() - String.Join()也在VB中使用
  • MsgBox() - MessageBox.Show()
  • IIF() - (condition) ? truepart : falsepart - 请注意,存在一些差异,因为“?”是一个操作员而不是一个功能

答案 6 :(得分:1)

您可以在this wikipedia page上找到许多这些功能的转换。

答案 7 :(得分:1)

我相信其中一些像Mid()仍然可以在Microsoft.VisualBasic命名空间的.NET Framework中使用,您仍然可以从C#代码中引用它。

答案 8 :(得分:1)

另一个......

VB - IsDBNull(值)

C# - yourdatarow.IsNull(“columnName”)

答案 9 :(得分:0)

如果您查看MSDN,您会发现大多数时候都有两种语言的示例代码。

答案 10 :(得分:0)

  • UBound() - &gt;如果x是一个string []数组,例如:x.GetUpperBound();
  • LBound() - &gt;如果x是string []的数组,例如:x.GetLowerBound();
  • IsNothing() - &gt; if(x == null)
  • Chr() - &gt; char x =(char)65;
  • Len() - &gt; x.Length();
  • UCase() - &gt;假设x是一个字符串:x.ToUpper();
  • LCase() - &gt;假设x是一个字符串:x.ToLower();
  • 左() - &gt;假设x是一个字符串:x.Substring(0,10); //前10个字符
  • 右() - &gt;假设x是一个字符串:x.Substring(x.Length - 10); //最后10个字符
  • RTrim() - &gt; x.TrimEnd();
  • LTrim() - &gt; x.TrimStart();
  • 修剪() - &gt; x.Trim();
  • Mid() - &gt;假设x是一个字符串:x.Substring()
  • 替换() - &gt;假设x是一个字符串:x.Replace();
  • 分裂() - &gt;假设x是一个字符串:x.Split();
  • 加入() - &gt;的string.join();
  • MsgBox() - &gt; MessageBox.Show();
  • IIF() - &gt;三元运算符(x == true?true-value:false-value);

答案 11 :(得分:0)

另外还有一个可以 IndexOf()的函数来查找字符串中的字符串

以下示例......

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

答案 12 :(得分:0)

除了上面的答案。 小心替换Len() - &gt; x.Length。 VB Len()允许你传递null,但在c#中你会得到一个异常。 有时最好使用String.IsNullrEmpty()(如果情况允许)

答案 13 :(得分:0)

其他人的名单中缺少空间功能:

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