这相当于以下运算符从VB.Net到C#?
答案 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为零长度阵列。UBound()
对应Mid("asdf",2,2)
。"asdf".SubString(1,2)
与?
不完全等效,因为IIf
始终评估两个参数,IIf
仅评估所需的参数。如果评估有副作用,这可能很重要〜不寒而栗! ?
,Len()
,UCase()
,LCase()
,Right()
和RTrim()
,将会对待Trim()
(c#中的Nothing
)的参数等同于零长度字符串。当然,在Null
上运行字符串方法会抛出异常。Nothing
传递给经典的VB Nothing
和Mid()
函数。这些将返回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框架类中的非语言特定等价物:
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
(条件运算符)<强>链接强>
答案 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提供的等价物。
arrayVar.Length
Is Nothing
,在C#== null
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
- 请注意,存在一些差异,因为“?”是一个操作员而不是一个功能答案 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)
答案 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)