次の方法で共有


コンパイラ エラー CS0050

アクセシビリティに一貫性がありません:戻り値の型 'type' はメソッド 'method' よりもアクセスしにくい

メソッドの仮パラメーター リストで参照される戻り値の型と各型は、少なくともメソッド自体と同じくらいアクセス可能である必要があります。 これには、戻り値の型またはパラメーターで使用されるジェネリック型の型引数が含まれます。 詳細については、「 アクセス修飾子」を参照してください。

例示

次の例では、 MyClassにアクセシビリティ修飾子が指定されていないため、CS0050 が生成されます。そのため、アクセシビリティは既定で privateされます。

// CS0050.cs
class MyClass // Accessibility defaults to private.
// Try the following line instead.
// public class MyClass
{
}

public class MyClass2
{
    public static MyClass MyMethod()   // CS0050
    {
        return new MyClass();
    }

    public static void Main() { }
}

CS0050 は、ジェネリック型の型引数のアクセスがメソッドよりも低い場合にも発生する可能性があります。

// CS0050_Generic.cs
using System.Collections.ObjectModel;

internal class CeisData // Internal class
{
    public string Name { get; set; }
}

public class MyClass
{
    public static ObservableCollection<CeisData> BuildCeis()   // CS0050
    {
        return new ObservableCollection<CeisData>();
    }
}

このエラーを修正するには、少なくともメソッドと同じように型引数にアクセスできるようにします。

// Fixed version
using System.Collections.ObjectModel;

public class CeisData // Now public
{
    public string Name { get; set; }
}

public class MyClass
{
    public static ObservableCollection<CeisData> BuildCeis()   // OK
    {
        return new ObservableCollection<CeisData>();
    }
}