【トラブル】【C#】コンパイルエラー あれこれ

■ 目次

【1】 FormatExceptionはハンドルされませんでした
【2】 アクセシビリティに一貫性がありません
【3】エラー「CS0227 アンセーフ コード...」が表示

【1】 FormatExceptionはハンドルされませんでした

現象

C# で開発中に、以下のコンパイルエラーが表示される
~~~
FormatExceptionはハンドルされませんでした
インデックス (0 ベース) は 0 以上で、引数リストのサイズよりも小さくなければなりません。
~~~

原因

以下のようになっていた。
~~~
string msg = string.Format("Name is {1}", name); // ★{1}になっとる★
~~~

解決策

以下のように「{0}」にした
~~~
string msg = string.Format("Name is {0}", name); // ★{0}にした★
~~~

【2】 アクセシビリティに一貫性がありません

現象

C# で開発中に、コンパイルエラー「アクセシビリティに一貫性がありません」が表示される

原因

アクセシビリティ(publicなど)が適切じゃなかった

public class ClassA
{
    public List<ClassB> GetClassB()
    {
        // 略
    }
}

class ClassB // ★ public が付加されていなかった★
{
}

解決策

publicを付けるなどして、対応
※とりあえず、分からなかったら、周辺のクラス、メソッドなどをPublicにしてみるといい

上記の例だと、
~~~
pulic class ClassB // ★ public が付加★
~~~
にすればいい

参考文献

http://blog.livedoor.jp/sire2/archives/50119792.html
http://d.hatena.ne.jp/lmt_swallow/20110910/1315646945

【3】エラー「CS0227 アンセーフ コード...」が表示

現象

 * コンパイルしたら、以下のコンパイルエラーによりビルドできない

エラー内容

CS0227 アンセーフ コードは /unsafe でコンパイルした場合のみ有効です。
https://docs.microsoft.com/ja-jp/dotnet/csharp/misc/cs0227

解決策

https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/compiler-options/unsafe-compiler-option
より抜粋
~~~~~~~
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
 1) プロジェクトの [プロパティ] ページを開きます。
 2) [ビルド] プロパティ ページをクリックします。
 3) [アンセーフ コードの許可] チェック ボックスをオンにします。
~~~~~~~

参考文献

https://hidelafoglia.wordpress.com/2008/08/01/c-unsafe/
https://so-zou.jp/software/tech/programming/c-sharp/grammar/type/pointer/

関連記事

コンパイルエラーに関するトラブル

VC++】ビルドエラー「fatal error LNK1257: コードの生成に失敗しました。」が表示される
https://blogs.yahoo.co.jp/dk521123/31906261.html
VC++】fatal error C1859: 予期しないプリコンパイル済みヘッダー エラーです。コンパイラを再度実行するだけで、問題が解決する場合があります。
https://blogs.yahoo.co.jp/dk521123/31773549.html
ビルドエラー「”Exec”タスクには実行するためのコマンドが必要です」が表示する
https://blogs.yahoo.co.jp/dk521123/31532449.html
ビルドエラー「~.pdb に書き込めません:エラーを特定できません」が表示する
https://blogs.yahoo.co.jp/dk521123/31183575.html