Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Unity / C#】List<> が見つからない…?CS0246 エラーの原因と解決方法

Unity や C#スクリプトを書いていると、次のようなエラーが突然出ることがあります。

 
Assets\Scripts\abcdef.cs(282,16): 
error CS0246: The type or namespace name 'List<>' could not be found 
(are you missing a using directive or an assembly reference?)

 

 
初めて見ると「え、List が使えない…?」と驚きますよね。

実はこのエラー、とてもシンプルな原因で発生します。


✔ エラーの原因

このエラーは、

List<> クラスを使うための using が不足している

ことが原因です。

C# の List<T>System.Collections.Generic 名前空間に属しているので、
これを using として読み込んでいないとコンパイラが型を認識できず、
CS0246 エラーが発生します。


✔ 解決方法(最も一般的なパターン)

ファイルの先頭の using の部分に、次の1行を追加します。

 
using System.Collections.Generic;

 

 
これだけで OK です。

追加したあとに Unity が自動コンパイルすれば、エラーは解消されます。


🔍 それでも直らないときのチェックポイント

まれに、using を書いてもエラーが消えないケースがあります。
その場合は次の点も確認しましょう。

1. List<> の型パラメータが抜けている

例:

 
List items;   // ❌ NG:型パラメータが必要

 

 
正しくは:
 
List<int> items;       // ✔ OK
List<string> names;    // ✔ OK
List<MyClass> objects; // ✔ OK

 


2. 自作クラス名が List と衝突している

もし自分のプロジェクト内に List.cs というスクリプトがあると、
C# の既存の List<T> と名前が衝突し、エラーが出る場合があります。

→ その場合は、自作クラスの名前を変更するのが良いです。


3. using の書き忘れが別ファイルにある

List を使っているファイルの方にも、
同じく using が必要です。

例:
A.cs で using を書いていても、
B.cs で List を使うなら B.cs にも必要です。


✔ まとめ

  • List<> が見つからないエラー(CS0246)は using の不足が主な原因

  • 対処法はとても簡単
    using System.Collections.Generic; を先頭に追加するだけ

  • まれに「型パラメータ抜け」「クラス名衝突」なども原因になる

Unity の開発では List を使う場面が多いので、このトラブルに遭遇しやすいですが、
原因さえ分かっていればすぐに対処できるエラーです。