学習記事一覧 · C#写経から学ぶ構造の考え方

【学習】エラーが出たらどうするか:その場で潰す技術

← 第3回 | 第4回 | 第5回 →


はじめに

構造の書き方が分かり、処理を書き始めると、必ずこういう状況が出てきます。

Player player = new Player();
player.Move();

このコードを書いたとき、Player というクラスがまだ存在しなければエラーになります。

このとき、多くの学習者はこう考えます。

「エラーが出た…どうしよう」「テキストのどこかに書いてあるはず…」

しかし正しい対処は、シンプルです。

その場で空のクラスを作る


エラーの正しい読み方

Visual Studio でよく出るエラーのパターンです。

CS0246: 型または名前空間の名前 'Player' が見つかりませんでした

このエラーが意味することは一つです。

「Player」という名前のクラスが存在しない

原因が分かれば、対処も分かります。Player クラスを作ればいいだけです。


空クラス戦略:手順

ステップ①:エラーを確認する

Player player = new Player();   // ← ここにエラーが出ている
player.Move();

Player が見つからない → Player クラスを作ればいい


ステップ②:空のクラスをその場に作る

同じファイルの下に追加します(または新しいファイルを作ります)。

class Player
{
}

これだけでエラーが消えます。new Player() は成功するようになります。


ステップ③:必要なメソッドを追加する

次に player.Move() のエラーが出ます。

CS1061: 'Player''Move' の定義が含まれていません

同じように、Move メソッドを追加します。

class Player
{
    public void Move()
    {
    }
}

メソッドの中身は空で構いません。エラーが消えれば次に進めます。


ステップ④:中身を埋めていく

エラーが出なくなってから、メソッドの中身を実装します。

class Player
{
    public void Move()
    {
        Console.WriteLine("Player moved.");
    }
}

プログラムの流れ

エラーを確認する

エラーの原因を特定する(何が足りないか)

足りないものを空で作る

次のエラーを確認する

繰り返す

全エラーが消えたら中身を書く

なぜ「空クラス」が有効なのか

「空のクラスを作るのは手抜きでは?」と感じるかもしれません。しかしこれには明確な目的があります。

1. エラーを1つずつ解消できる

複数のエラーが出ていても、空クラスを作ることで「参照が解決できない」エラーをまず消せます。次に「メソッドが存在しない」エラーに集中できます。

2. コードが動く状態を保てる

空のメソッドを作っておけば、少なくともコンパイルは通ります。動く状態を保ちながら少しずつ実装できます。

3. これは依存関係の練習になる

Player player = new Player(); というコードは「このクラスが Player に依存している」ことを意味します。空クラスを作る行為は、依存関係を意識する練習そのものです。


よくある間違い:エラーを後回しにする

学習者がやりがちな失敗は「エラーを無視して先を読む」ことです。

// エラーが出ているのに先を続ける
Player player = new Player();   // エラー(無視)
player.Move();                  // エラー(無視)
Enemy enemy = new Enemy();      // エラー(無視)
// ...(エラーが増え続ける)

この状態になると、何が本当の問題かが分からなくなります。

エラーはその場で潰す

これが原則です。


エラーが出ない状態を維持する

写経を進める目標は「エラーが出ない状態を保ちながら前に進む」ことです。

状態 対処
型が見つからない 空のクラスを作る
メソッドが見つからない 空のメソッドを作る
変数が未定義 変数を宣言する
型が合わない 型を確認して修正する

まとめ

  • エラーが出たらその場で解決する(後回しにしない)
  • 参照しているクラスがなければ空のクラスを作る
  • メソッドがなければ空のメソッドを作る
  • 空の実装でも「コンパイルが通る状態」を保てる
  • エラーを1つずつ消すことで、どこで詰まっているかが明確になる

次の記事

複数のクラスが登場したとき、どうやってお互いを参照させるのかという問題が出てきます。

第5回:複数クラスで止まる理由:依存関係を理解する


シリーズ一覧

タイトル
ハブ C#の写経がつらい理由と、正しい学習手順【完全版】
第1回 なぜC#の写経はつらいのか:赤い波線の正体
第2回 正しいC#の書き方:namespace→class→methodの順番
第3回 プロパティはいつ書くべきか:最後でOKな理由
第4回(この記事) エラーが出たらどうするか:その場で潰す技術
第5回 複数クラスで止まる理由:依存関係を理解する
第6回 Unityで同じことが起きる理由:置き場所という考え方
第7回 プログラミングは構造で考える:写経を超えた先にあるもの