VB.NetからC#への次の演算子に相当するものはどれですか?
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を返します。VB.NETのUBound()
は、長さがゼロの配列に対して-1を返します。 。Mid("asdf",2,2)
は"asdf".SubString(1,2)
に対応します。IIf
は常にboth引数を評価し、?
は必要な引数のみを評価するため、?
はIIf
とまったく同じではありません。評価の副作用がある場合、これは問題になる可能性があります〜shudder!Len()
、UCase()
、LCase()
、Right()
、RTrim()
、およびTrim()
は、Nothing
(c#ではNull
)の引数を長さゼロの文字列と同等として扱います。もちろん、Nothing
で文字列メソッドを実行すると、例外がスローされます。Nothing
を従来のVB Mid()
およびReplace()
関数に渡すこともできます。例外をスローする代わりに、これらは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;
これらの関数はすべて、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
(条件演算子)リンク
これらのほとんどは、変更された文字列を返す文字列オブジェクトのインスタンスメソッドです。
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();
まず、それらのほとんどはNOT演算子です。これらは関数であり、これらの関数は互換性の理由からVB.Netにのみ含まれています。つまり、VB.netでもこれらを使用するべきではなく、代わりに新しいAPIで提供される同等のものを使用する必要があります。
arrayVar.Length
_Is Nothing
_を使用し、C#では_== null
_を使用しますConvert.ToChar()
または_(char)someVar
_stringVar.Length
_ VBも使用stringVar.ToUpper()
VB toostringVar.ToLower()
VB toostringVar.Substring(0, n)
VBでも使用するstringVar.Substring(stringVar.Length - n)
VB toostringVar.TrimEnd()
VBも使用する)stringVar.TrimStart()
VBでもこれを使用stringVar.Trim()
VB toostringVar.Substring(n, m)
VB toostringVar.Replace()
VB toostringVar.Split()
VBも使用String.Join()
VBでも使用するMessageBox.Show()
(condition) ? truepart : falsepart
_-「?」のため、いくつかの違いがあることに注意してください関数ではなく演算子ですこのウィキペディアのページ でこれらの関数の多くの変換を見つけることができます。
Mid()
のようなこれらのいくつかは、Microsoft.VisualBasic名前空間の.NET Frameworkでまだ利用可能で、C#コードから参照できると信じています。
もう1つ...
VB-IsDBNull(値)
C#-yourdatarow.IsNull( "columnName")
これにもう1つ追加すると、IndexOf() string内の文字列を検索する関数になります。
以下の例...
string MainString = "String Manipulation";
string SearchString = "pul";
int FirstChr = MainString.IndexOf(SearchString);
//SHOWS START POSITION OF STRING
MessageBox.Show("Found at : " + FirstChr );
MSDNを見ると、ほとんどの場合、両方の言語のサンプルコードがあることがわかります。
上記の答えに加えて。 Len()-> x.Lengthの置き換えには注意してください。 VB Len()はnullを渡すことができますが、c#では例外が発生します。場合によっては、String.IsNullrEmpty()を使用した方がよい場合があります(状況が許す場合)
スペース関数は、他の全員のリストにありません。
Space(16) -> new String(" ", 16)