ビジュアル系のプログラム開発環境、ビジュアルスタジオでC#を使う場合のエラー対策の情報を順次まとめていきます。
C#のエラーを調べるには?
通常は「実行」をすると、プログラムがコンパイル(マシン語への変換)され、その際に不適切なソースコードがあればエラーとして出てきます。
エラー一覧が出るのでなぜエラーになったかの推測は可能です。
さらに原因を調べるには、該当のエラーを選択してからF1キーを押します。
するとMicrosoftDocsのエラー結果を検索してくれます。
開くとこんな感じ。
ただし、コンパイル上の問題をクリアして無事実行された後でも、「0で数値を割った」「指定したファイルが見つからない」「文字の型以上の数値が入った」「アクセスしたデータベースからのタイムアウト」....など様々なエラーはその都度起きることになります。
C#のエラー処理 作成時
ツールボックスが空っぽ
ツールボックスが空で何も選択できない場合があります。
これは、プログラムのコード作成をしていると出てきません。
フォームのデザイン画面が選択されている状態のときにツールボックスが表示されるます。
ツールボックスが出ない、プロパティが出ない
なぜかプロパティがロードされない場合がうちではたまにあります。
その場合は、ソリューションのクリーンやリビルドを実行します。また、アプリを一度実行してから終了します。
これでもダメなときは、ソリューションなど他の項目を選んでプロパティを表示させたりしていると出るようになります。
確実な再現手順はわかりましたら更新したいと思います。
参照が追加できない
Visual Studioでは、参照機能を使うことで、初期状態だけでは対応していない機能を追加することができます。
ただし参照をしてもエラーで追加できないということはまれにおきます。
上書きできない
原因はいくつかかんがえられますが、参照で追加しようとしたたコンポーネントがすでに参照されている別のファイルを上書きできないためエラーとなる...という場合があります。
一度参照しているファイル等すべて外しから、参照しなおしてうまく追加可能かチェックしてみるといいと思います。
バージョン・動作環境が違う
参照ファイルがウィンドウズ32ビット版向けであって、64ビット版からロードできないというケースも考えられます。
その場合、参照ファイルが64ビットウィンドウズに対応しているかについてネットで調べてみましょう。
C#のエラー処理 コンパイル時
C#でエラーが出た場合の対応です。
データが失われる可能性を防ぐため、デザイナーの読み込み前に以下のエラーを解決する必要があります。
C#を使いたての時は、結構いきなりエラーになってびっくりするパターンです。
内容としては「デザイナーでは不明な名前を処理できません。」というもので、どうやら作ったボタンでプログラムを書いたりした後に、フォーム上でボタンを消した後などに出ます。
これはボタンを消しただけでは、プログラムソースにある該当部分は削除されないことなどに起因します。
リンクの行を開いて1行削除すれば大丈夫だと思います。
アクセスできない保護レベルになっています
参照している関数やメンバの値がprivateであり、外からのアクセスが制限されている可能性があります。
ソースを見直して、関数やメンバをpublicにして問題ないような場合は、publicに設定しておくとよいでしょう。
型や名前空間の名前〇〇〇がみつかりませんでした
「usingディレクティブまたはアセンブリ参照が指定されていることを確認してください」のように出るエラー。
アプリをソリューションエクスプローラーで選択し、「追加>参照」で必要なクラスライブラリ等に参照が行われているかチェックしてみましょう。
また、エラーとしては「using ●●●●」のような記述を書き忘れた場合にこのようなエラーになりやすいです。「using MySql.Data.MySqlClient;」...のように適切な「using + ライブラリ名」の記述をし忘れていないか確認してみましょう。
実行不可能なメンバー '●●●●' をメソッドのように使用することはできません。
例えばアラートダイアログを出す場合、オブジェクト(MessageBox)のメソッド(show)としてプログラムを記述します。
MessageBox.Show("ok");
メソッド(show)の部分を書き忘れて以下のようにプログラムを書くと、オブジェクト名を関数としてしまったのでプログラムが実行されなくなってしまいます。
MessageBox("ok");
ちなみにメソッドとは、「手続き」にあたる部分であり、何かアクションを実行する命令となります。
; が必要です。
C#ではプログラムの実行コード1行ごとに「;」という区切りを文末に入れるお約束となっています。
「int a=1MessageBox.Show("ok" + a)」
「int a=1;MessageBox.Show("ok" + a);」
予期しない文字「;」
プログラム内では「{};」などの文字は半角英数字で入力しましょう。
全角文字で入れると、プログラム言語として解釈されません。
ディスプレイのスケールは設定されています?
フォームデザイナーでは「メインディスプレイのスケールは125%に設定されています。100%のスケールでVisualStudioを再起動します」という黄色いメッセージが出てきます。
これがあると、その分無駄なスペースがくわれてしまいます。
面倒なので100%スケールで再起動すると、今度は「自動スケールがオフになっています。WPF・UWP XAMLデザイナーが正しく表示されない可能性があります」と出ます。
うざいので「自動スケールでVisua Studioを再起動します」を実行すると、先ほどのメッセージが再度表示されるようになります。
何時まで経っても消えないのでやり方を探してみると、「ツール>オプション」で「Windowsフォームデザイナー>全般」で「高DPサポート>DPIスケーリングに関する通知」を「False」にすると通知が出なくなります。
C#のエラー処理 コードの実行時
コードが実行されているときは変更が許可されません
プログラムをビルドして実行中は、フォームやソースコードの内容を変更できません。
フォームウィンドウの閉じるボタン(x)を使ってフォームは終了したように見えるのにアプリ自体はまだ終了していない...という場合もあるので注意しましょう。
完全にコードの実行を終わらせるには、メニューの「デバッグ>デバッグの停止」を行ってください。
「マイコードのみ」を使うと、デバッグ機能が低下します?
リリースのモードで実行しようとすると、ブレークポイントがヒットしないなどの症状が出ます。
まだ開発途中であれば、「マイコードのみ」を無効にして続行するか、実行するバージョンを「Debug」のほうへ切り替えておいたほうが良いでしょう。