2012-02-04 17 views
2

ではありません。参照先のVB6 DLLで作業しています。問題は、メソッド/関数呼び出しの結果が同じではないことです。コード例下記検証が失敗した場合C#/ VB.Netの問題:VB.Netは文字列配列を塗りつぶしますが、C#は

まずVB.Net

Dim Validations() As String 
myErr = myEntry.ValidateLine(Validations) 

、文字列配列の検証は、エラーの説明文字列が充填されています。私はC#で同じことを達成しようとしました:

private string[] valArray = null; 
sdkError = sdkEntry.ValidateLine(valArray); 

誰もが、私はC#文字列配列を埋めるために得ることができない理由のアイデアを持っていますか?

また、VB内の関数は、おそらくそれはこれとは何かを持っている、

ValidateLine(REFのSystem.Array ValErrors)...のSystem.ArrayにREFと呼ばれているのですか?

+0

には、ArrayListと試みたことがありますか? –

答えて

0

VBが空の配列を作成すると、C#はnull配列を作成します。私は、VBのDLLにはnull以外の値が必要だと思います。

はこれにあなたのC#を交換してみてください:

private string[] valArray = new string[]{}; 
+0

DLLはまだ配列を移植することはできません。 (また、 '= new string [0]'はよりシンプルになり、単に '= {};')。 –

+0

私はこれを試しましたが、結果はありません。 – F43G4N

+0

Jon Skeetの答えがそれを修正しました。 – F43G4N

2

私の推測では、VBは、暗黙的に参照することによって、あなたの変数を渡しているということです。あなたは、C#で同じことをやってみてください:

sdkError = sdkEntry.ValidateLine(ref valArray); 

(それはあなたがVB DLL、心を起動しているかすぐには明らかではありません。)

+0

と同じnull配列リファレンスを作成しています。ありがとうございました。私の愚かなこと... – F43G4N

関連する問題