CS801~2000

C#コンパイルエラーCS1520の原因と対策を解説

CS1520は、C#のコンパイルエラーのひとつです。

メソッドを定義する際に、戻り値の型が記述されていない場合に発生します。

戻り値を返さない場合はvoidを指定する必要があり、またコンストラクター名とクラス名の大文字小文字が一致しない場合もエラーとなるため、適切な対応が求められます。

エラー発生の原因

戻り値の型が未指定の場合

C#ではメソッドには必ず戻り値の型が必要となります。

戻り値の型が宣言されない場合、コンパイラはエラー CS1520 を出力します。

たとえば、戻り値を返さないメソッドの場合はvoidを指定する必要があります。

voidの追加と記述例

以下のサンプルコードは、戻り値の型が記述されていないためエラーが発生する例です。

using System;
public class ErrorSample
{
    // 戻り値の型が指定されていないためエラーになる
    MyMethod()
    {
        // サンプルのための空メソッド
    }
    public static void Main(string[] args)
    {
        ErrorSample sample = new ErrorSample();
        sample.MyMethod();
    }
}
コンパイルエラー: CS1520 - メソッドは戻り値の型を持たなければなりません。

上記のエラーを解消するためには、メソッドにvoidを追加します。

以下は修正後の例です。

using System;
public class CorrectSample
{
    // 戻り値がない場合はvoidを明示的に指定する
    public void MyMethod()
    {
        // 処理内容はここに記述
        Console.WriteLine("MyMethodは正常に動作しています。");
    }
    public static void Main(string[] args)
    {
        CorrectSample sample = new CorrectSample();
        sample.MyMethod();
    }
}
MyMethodは正常に動作しています。

コンストラクター名とクラス名の不一致による問題

C#ではコンストラクターはクラス名と正確に一致する必要があります。

もし大文字・小文字に違いがある場合、コンパイラはそれをコンストラクターではなく通常のメソッドと解釈し、戻り値が必要であると判断してエラーを出すことになります。

大文字・小文字ルールの確認

次のコードは、クラス名とコンストラクター名に大文字・小文字の不一致があるためエラーになる例です。

using System;
public class SampleClass
{
    // コンストラクター名が"SampleClass"ではなく"sampleClass"となっているためエラーが発生する
    public sampleClass()
    {
        Console.WriteLine("コンストラクターが呼ばれています。");
    }
    public static void Main(string[] args)
    {
        // コンストラクターのエラーが原因でオブジェクト生成に失敗する
        SampleClass obj = new SampleClass();
    }
}
コンパイルエラー: CS1520 - メソッドは戻り値の型を持たなければなりません。

正しくは、コンストラクター名はクラス名と完全に一致させる必要があるため、以下のように修正します。

using System;
public class SampleClass
{
    // クラス名と同じ大文字・小文字で宣言する
    public SampleClass()
    {
        Console.WriteLine("コンストラクターが正常に呼ばれました。");
    }
    public static void Main(string[] args)
    {
        SampleClass obj = new SampleClass();
    }
}
コンストラクターが正常に呼ばれました。

エラー修正の対策

戻り値の型を正しく指定する方法

戻り値が不要なメソッドであっても、必ずvoidを記述する必要があります。

メソッドを定義する際は、必ず戻り値の型を意識して宣言してください。

戻り値型の付与とコード例

以下のサンプルは、文字列を整数に変換するメソッドの例です。

戻り値の型としてintを指定し、文字列が変換された結果を返しています。

using System;
public class ConversionSample
{
    // 文字列を整数に変換するメソッド。戻り値の型はintです。
    public int ConvertToInt(string numberString)
    {
        // 変換できない場合を考慮してエラーチェックも可能です
        return int.Parse(numberString);
    }
    public static void Main(string[] args)
    {
        ConversionSample sample = new ConversionSample();
        int result = sample.ConvertToInt("123");
        Console.WriteLine("変換結果は " + result + " です。");
    }
}
変換結果は 123 です。

コンストラクターの正しい宣言方法

コンストラクターはクラス名と正確に一致させる必要があります。

大文字・小文字に注意し、正しく宣言することでCS1520エラーを回避できます。

クラス名との整合性確認

下記のサンプルは、クラス名CorrectClassとコンストラクター名が一致している正しい例です。

using System;
public class CorrectClass
{
    // コンストラクター名がクラス名と完全に一致しています
    public CorrectClass()
    {
        Console.WriteLine("CorrectClassのコンストラクターが実行されました。");
    }
    public static void Main(string[] args)
    {
        CorrectClass instance = new CorrectClass();
    }
}
CorrectClassのコンストラクターが実行されました。

実例による検証と確認ポイント

修正前後のコード比較

エラーの原因となる記述と、その修正後のコードを比較することで、違いを確認するのが有効です。

以下に、エラーが発生する修正前のコードと、エラー解消後の正しいコードを示します。

エラー解消の確認方法とポイント

修正前のコード例

using System;
public class ExampleClass
{
    // 戻り値型が指定されていないのでエラーになるメソッド
    MyMethod()
    {
        Console.WriteLine("エラー発生中。");
    }
    // コンストラクターの名前がクラス名と一致しない例
    public exampleClass()
    {
        Console.WriteLine("誤ったコンストラクター。");
    }
    public static void Main(string[] args)
    {
        ExampleClass instance = new ExampleClass();
        instance.MyMethod();
    }
}
コンパイルエラー: CS1520 - 戻り値の型が指定されていません。

修正後のコード例

using System;
public class ExampleClass
{
    // 戻り値が不要な場合はvoidを必ず指定する
    public void MyMethod()
    {
        Console.WriteLine("エラー解消済み。");
    }
    // コンストラクター名をクラス名と正確に一致させる
    public ExampleClass()
    {
        Console.WriteLine("正しいコンストラクターが実行されました。");
    }
    public static void Main(string[] args)
    {
        ExampleClass instance = new ExampleClass();
        instance.MyMethod();
    }
}
正しいコンストラクターが実行されました。
エラー解消済み。

エラー解消の確認ポイントは、コンパイル時にCS1520エラーが出力されなくなったことと、プログラム実行時に意図したメッセージが表示されることです。

また、変数やメソッドの名前、特に大文字・小文字のルールを一度確認することで、同様のエラーを未然に防ぐことができます。

まとめ

この記事では、C#のCS1520エラーについて、戻り値の型が未指定の場合と、クラス名とコンストラクター名が一致しない場合の原因を説明しました。

エラーを回避するために、voidなど正しい戻り値型を指定する方法や、コンストラクター名をクラス名と正確に合わせるべき点を確認できます。

サンプルコードを通じて、修正前後の違いや確認方法も学べます。

関連記事

Back to top button
目次へ