VB到C#函数

从VB.Net到C#的下列运算符是什么?

  • UBound函数()
  • LBOUND()
  • 没什么()
  • CHR()
  • LEN()
  • 用Ucase()
  • LCASE()
  • 剩下()
  • 对()
  • RTRIM()
  • LTRIM()
  • 修剪()
  • 中()
  • 更换()
  • 分裂()
  • join()
  • MSGBOX()
  • IIF()
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,而长度将返回0.在VB.NET中的UBound()将返回-1为零长度数组。
  • VBstring函数使用一个基于索引,而.NET方法使用基于零的索引。 即Mid("asdf",2,2)对应于"asdf".SubString(1,2)
  • ? 不是IIf的确切等价物,因为IIf总是评估两个参数,而? 只评估它所需要的一个。 如果评价有副作用,那么这可能很重要
  • 许多经典的VBstring函数,包括Len()UCase()LCase()Right()RTrim()Trim() ,都会将Nothing的参数(C#中的Null )长度string。 在Nothing上运行string方法当然会引发exception。
  • 您也可以将Nothing传递给经典的VB Mid()Replace()函数。 这些将不会抛出exception,而是返回Nothing
 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; 

其中大部分将是返回修改string的string对象上的实例方法。

 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();

首先,大多数不是运营商。 它们是函数,为了兼容性的原因,函数只包含在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中也使用它
  • Left()stringVar.Substring(0, n)在VB中也使用它
  • Right()stringVar.Substring(stringVar.Length - n)在VB中也使用它
  • RTrim()stringVar.TrimEnd()在VB中也使用它
  • LTrim()stringVar.TrimStart()在VB中也使用它
  • Trim()stringVar.Trim()在VB中也使用它
  • Mid()stringVar.Substring(n, m)也在VB中使用它
  • Replace()stringVar.Replace()在VB中也使用它
  • Split()stringVar.Split()也在VB中使用
  • Join()String.Join()在VB中也使用它
  • MsgBox()MessageBox.Show()
  • IIF()(condition) ? truepart : falsepart (condition) ? truepart : falsepart – 注意有一些区别,因为“?” 是一个操作员,而不是一个function

所有这些函数都是Microsoft.VisualBasic.Information类中Microsoft.VisualBasic程序集的成员方法,因此您可以直接使用它们。 但是,它们中的大多数都具有C#等价物,或者在核心.NET框架类中具有与语言无关的等价物:

  • UBound(): Array.GetUpperBound
  • LBound(): Array.GetLowerBound
  • IsNothing(): == null
  • Chr():( (char)intValue(char)intValue
  • Len(): String.Length
  • UCase(): String.ToUpper
  • LCase(): String.ToLower
  • Left(),Right()和Mid(): String.Substring (使用不同的参数)
  • RTrim(): String.TrimEnd
  • LTrim(): String.TrimStart
  • 修剪(): String.Trim
  • Replace(): String.Replace
  • Split(): String.Split
  • join(): String.Join
  • MsgBox(): MessageBox.Show
  • IIF(): condition ? valueIfTrue : valueIfFalse condition ? valueIfTrue : valueIfFalse (条件运算符)

链接

  • arrays成员
  • string成员
  • MessageBox.Show
  • 条件运算符

你会在这个维基百科页面上find许多这些function的转换。

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

另一个…

VB – IsDBNull(值)

C# – yourdatarow.IsNull(“columnName”)

如果你看看MSDN,你会发现大部分时间都有两种语言的示例代码。

  • UBound() – >如果x是一个string[]的数组,例如:x.GetUpperBound();
  • LBound() – >如果x是一个string[]的数组,例如:x.GetLowerBound();
  • IsNothing() – > if(x == null)
  • Chr() – > char x =(char)65;
  • Len() – > x.Length();
  • UCase() – >假定x是一个string:x.ToUpper();
  • LCase() – >假定x是一个string:x.ToLower();
  • Left() – >假设x是一个string:xSubstring(0,10); //前10个字符
  • Right() – >假设x是一个string:x.Substring(x.Length – 10); //最后10个字符
  • RTrim() – > x.TrimEnd();
  • LTrim() – > x.TrimStart();
  • Trim() – > x.Trim();
  • Mid() – >假定x是一个string:x.Substring()
  • Replace() – >假定x是一个string:x.Replace();
  • Split() – >假定x是一个string:x.Split();
  • Join() – > String.Join();
  • MsgBox() – > MessageBox.Show();
  • IIF() – >三元运算符(x == true?true-value:false-value);

除此之外,还可以使用IndexOf()函数在string中查找string

下面是一个例子

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

除了上面的答案。 注意replaceLen() – > x.Length。 VB的Len()允许你传递null,但在C#中,你会得到一个exception。 有时候最好使用String.IsNullrEmpty()(如果情况允许的话)

其他人的列表中缺less空间函数:

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