2016-06-29 21 views
0

私の現在のコードは次のとおりです。文字列が同じではないのはなぜですか?

Dim currentversion As String = File.ReadAllText("C:\lol\update\currentversion.txt") 
Dim newversion As String = File.ReadAllText("C:\lol\update\new.txt") 

If currentversion Is newversion Then 
    MessageBox.Show("VERSION IS THE SAME") 
End If 
If currentversion Is Not newversion Then 
    MessageBox.Show("VERSION IS NOT THE SAME") 
End If 

なぜ文字列が同じではありませんか?どうしましたか? 両方のテキストファイルが同じメガリンクで、「https://mega.nz/#!i8NgdfgdfgvufFf638vqGt7sA_yGdrefdgeVrnf_E3434」(リンクは現実ではありません)のようです。 あなたの助けを求めるThx!

Hannir

UPDATE:

理由を1つのファイルが空白行を得たということでした。

Dim currentversion 
Dim newversion 

別々の変数、メモリ内の別のインスタンスを、別の参照:私はちょうど彼らが別のオブジェクトだからGreetz、 Hannir

+0

文字列の等価性と非等価性に '='と '<>'を使用するのが普通です。 'Is 'を使いたい理由がありますか?また、['Option Strict On'](https://msdn.microsoft.com/en-us/library/zcd4xwzs.aspx)を使用する必要があります。 –

+0

同じ結果がありましたが、私はすでに試しました。しかし、ウルの迅速な答えのためのthx :)オプション厳密に?これは何ですか?それはどのように使用しますか? – hannir

+1

あなたの便宜のために、前回のコメントで、「Option Strict On」というテキストを文書にリンクしました。 2つのファイルのファイルサイズを調べると、それらは異なっていますか?例えば、そのうちの1つに改行文字が含まれています。 –

答えて

3

currentversion = currentversion.Trim() 

を使用して、それを修正しました。そしてthe Is operatorは、値ではなくの参照を比較します。その向こう

If currentversion.Equals(newversion) Then 
    '... 
Else 
    '... 
End If 

を:オブジェクトが比較されている上、彼らはそれを実装する場合によっては

If currentversion = newversion Then 
    '... 
Else 
    '... 
End If 

それとも.Equals():あなたが値を比較したい場合は、探しているオペレータに等しいです。文字列と等しくない可能性があります。結局のところ、それらは異なるファイルから読み込まれています...

+2

偉大な答えですが、.Equalsの後ろにあるStringComparison列挙子を理解してください。https://msdn.microsoft.com/en-us/library /system.string.equals(v=vs.110).aspx –

+0

同じ結果:/両方のリンクが同じファイル内にある方が良いと思いますか? 1つのテキストファイルで2つの異なる行を比較することはできますか? – hannir

+1

@hannir:コードをデバッグするとき、それらの変数の実際の値は何ですか? – David

関連する問題