C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■95379 / )  Re[1]: 値を返さないコードパス
□投稿者/ 魔界の仮面弁士 (2787回)-(2020/07/27(Mon) 10:05:02)
2020/07/27(Mon) 10:08:22 編集(投稿者)

No95378 (バンクー さん) に返信
> エラー CS0161 'Form1.ExecuteCommunicate()': 値を返さないコード パスがあります。

今回作成されている「private int ExecuteCommunicate()」メソッドは、
int を戻り値とするようになっていますよね。それに対して、
ret ≠ 0 の際には「cTmctl.GetLastError(id)」が return されますが、
ret = 0 の際には、return が一度も呼び出されていません。なのでエラーになっています。

if ブロックの後に else を用意するなどして、ret == 0 だった場合の return 処理を記述しましょう。


> メッセージ IDE0051 プライベート メンバー 'Form1.ExecuteCommunicate' は使用されていません。
こちらは警告ですね。
作成された private メソッドが、どこからも呼ばれていないことを訝しんでいるようです。

> メッセージ IDE0059 値の 'ret' への不必要な代入
ret に最初に代入された値が、一度も利用されることなく上書きされているので、
最初の代入が不要であると警告されています。

int ret = 0;
ret = cTmctl.Initialize(TMCTL.TM_CTL_USB, "1", ref id);
ではなく、
int ret = cTmctl.Initialize(TMCTL.TM_CTL_USB, "1", ref id);
と書きましょう。
変数宣言は最初にまとめて書くのではなく、使用する箇所の直前に書くようにします。


> メッセージ IDE0059 値の 'buff' への不必要な代入
> メッセージ IDE0059 値の 'encode' への不必要な代入
> メッセージ IDE0059 値の 'list' への不必要な代入
これらは、

DEVICELIST[] list = new DEVICELIST[10];
StringBuilder encode = new StringBuilder(100);
StringBuilder buff = new StringBuilder(256);

のことを指していますが、これら 3 つの変数は、
その後一切使われていないようです。削除して良いのでは。
返信 編集キー/


管理者用

- Child Tree -