3

この問題を探しましたが、解決方法がわかりません (そして見つかりませんでした)。ここで問題を解決する方法を知っている人はいますか?私は EMGU を使用していますが、問題は c# コーディングにあります (私はかなり C# に慣れていません)。out ステートメントをあまり使用していないため、out ステートメントに関係していると思います。

Image<Gray, Byte> first_image;

if (start_at_frame_1 == true)
{
    Perform_custom_routine(imput_frame, out first_image);
}
else
{
     Perform_custom_routine(imput_frame, out second_image);
}

Comparison(first_image);
4

5 に答える 5

8

変数にデフォルト値を指定する必要があります。

Image<Gray, Byte> first_image = null;

second_imageそれ以外の場合、out パラメーターとして渡すと、何も割り当てられない可能性があります。

于 2012-08-20T12:59:13.663 に答える
2

コンパイラは、への呼び出しで割り当てられていない変数を使用しようとしていることを警告していますComparison。の場合、変数start_at_frame_1は設定されません。falsefirst_image

first_image = null初期化またはelseブロックのいずれかで設定することにより、これに対処できます。

于 2012-08-20T13:03:55.670 に答える
2

あなたはそれを行うための3つのオプションがあります

Image<Gray, Byte> first_image = default(Image<Gray, Byte>);

また

Image<Gray, Byte> first_image = null;

また

Image<Gray, Byte> first_image = new Image<Gray, Byte>();

これも忘れずにsecond_image

于 2012-08-20T12:59:26.007 に答える
0

または、Perform_custom_routineからの戻りパラメーターにすることもできます。

Image<Gray, Byte> first_image;  

if (start_at_frame_1 == true)  
{  
    first_image = Perform_custom_routine(imput_frame, out first_image);  
}  
else  
{  
     first_image = Perform_custom_routine(imput_frame, out second_image);  
}  
于 2012-08-20T13:04:27.017 に答える
-1

「out」キーワードを使用する場合は、変数を渡す前に変数に値を指定する必要があります。

「ref」キーワードを使用する場合は、値を返す前に、変数を渡すメソッドで変数に値を与える必要があります。

于 2012-08-20T13:23:38.397 に答える