2013-10-22 9 views
6

StringメソッドIndexOfAnyを使用して、指定された文字列に文字が存在するかどうかを確認したいと考えています。VB.NET文字配列に "c"を追加するとどうなりますか?

私が見つけた例IndexOfAnyメソッドを使用すると、VB.NETを使用しているときに文字配列の各文字の後に "c"が含まれています。しかし、VB.NETで単純な文字配列の例を見ると、各文字の後にそのような "c"は表示されません。 "c"は何をするのですか?それはオプションですか?

Dim s1 As String = "Darth is not my father." 
' Find the first index of either "x" or "n" 
Dim i1 As Integer = s1.IndexOfAny(New Char() {"x"c, "n"c}) 

答えて

8

これは、System.Char型のリテラルの接尾辞です。したがって

Dim foo As Char = "x"c 

(Option StrictがOnまたはOffに設定されている場合)コンパイルされます。 cがなければ、文字列として解釈されます。 VB.NETのリテラルサフィックスの詳細については、MSDNのページ「Constant and Literal Data Types」を参照してください。

+0

それでは、どのように来る、これは動作します(または、それが何をやっています)。 Dim myArray()Char = New Char(){"s"、 "a"、 "m"} – n00b

+0

@ n00b [Option Strict]があるため(http://stackoverflow.com/questions/2454552/whats-an) -option-strict-and-explicit)をオフに設定します。 Onに設定するとコンパイルされません。 option strictがオフの場合、VB.NETコンパイラは自動的に機能するように「修正」しようとします。ほとんどのVB.NET開発者はOption StrictをOnに設定しています。そのため、例ではこのように使用しています。 – vcsjones

2

実際には答えが見つかりました。私は答えを受け取ったが、これをさらに明確にするために追加しているのを見る。 Char型は数値型であり、文字列型ではありません。文字列 "x"と "n"は、Charsではありません。このステートメントはChar型の配列を初期化するため、 では文字列リテラルを追加することはできません。 'c'は、 を1文字の文字列ではなく、Charとして扱うことをコンパイラに示します。

http://bytes.com/topic/visual-basic-net/answers/438712-character-array-question

+1

いいえ、Charは数値型ではありません。それは暗黙のうちに番号に変換できるだけで、それはアヒルのように突っ込む。それはアヒルではありません。 Stringとは異なり、値型です。 Visual Basicでは文字リテラルを直接書く方法はなく、C#のように一重引用符に似たものはないため、「c」が必要です。 –

+1

ハンスは正しいです。コンピュータのすべてが数字なので、Typeはビットの並びをどのように解釈するかを指定します。 – dbasnett

関連する問題