◆ 関数の返り値を代入してるところではその後使ってなくても警告でない

VisualStudio には未使用変数をチェックしてくれる機能があります
修正を繰り返してると使わなくなったのに消し忘れることはあるので 教えてくれるのは便利な機能です
catch (Exception ex)
{
}

で ex に黄緑の線が引かれて 使用されてませんとメッセージが出てるのを見たことあるんじゃないでしょうか


一見便利なのですが 実はこの機能使えない時があります

例えばこんなコード
var val = new Sample().get();

こういう関数を呼び出した返り値の場合は未使用でも警告してくれません
var val = 3;

のような単純な値の場合は警告してくれます

固定の値入れるよりなにかの関数の返り値になってるほうが多いと思うので 意外に使えない機能です

関数を呼び出してる時点でどこかに影響を与えている可能性があるので その文自体は無意味じゃないから警告は出ない? とか考えましたが返り値をわざわざ受け取ってるならどこかに使わないと意味が無くて使わないなら受け取らないこともできるのでそういう理由ではなさそうです

返り値を代入していても警告出してくれるように設定の変更をしたかったのですが VisualStudio の設定は項目ひとつひとつにチェックボックスがあるんじゃなくて警告レベルっていう数値を変更できるだけのようで デフォルトがすでに MAX の値でした


バグのような気もしなくはないですが この機能を頼りにはしないほうがよさそうです

気づいた理由は 値を受け取ったはいいけど使う部分を後で書こうとしていたまま放置していたのを最近になって見つけたから
is_XXX という変数に入れるまではやっていたのに それを使った if 文の分岐がなかったです