Visual Studio 2012でC#を使っているときに以下のエラーが出ました。
CS0052:アクセシビリティに一貫性がありません。
1 2 |
1>c:\users\xxx\documents\visual studio 2012\Projects\WindowsFormsApplication7\WindowsFormsApplication7\Form1.cs(14,21,14,25): error CS0052: アクセシビリティに一貫性がありません。フィールドの型 'WindowsFormsApplication7.Work' のアクセシビリティはフィールド 'WindowsFormsApplication7.Form1.work' よりも低く設定されています。 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== |
「CS0052:アクセシビリティに一貫性がありません」とは?
MSDNには以下の説明があります。
コンパイラ エラー CS0050
アクセシビリティに一貫性がありません。戻り値の型 '型' のアクセシビリティはメソッド 'メソッド' よりも低く設定されています。
戻り値の型と、メソッドの仮パラメーター リストで参照される各型は、少なくとも、メソッド自体と同程度にアクセスできる必要があります。 詳細については、「Access Modifiers (C# Programmers Reference)」を参照してください。
サンプルプログラムを書いてみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
namespace WindowsFormsApplication7 { public partial class Form1 : Form { public Work work; public Form1() { InitializeComponent(); } public void Form1_Load(object sender, EventArgs e) { work = new Work(); } } class Work { } } |
これはNGです。
class Workは、デフォルトでprivateが適用されるためです。
修正方法
上記の例ではclassをpublicで定義して以下のように変更すればよいです。
(修正前) class Work
↓
(修正後) public class Work
プログラミングの無料レッスン体験
約8,000名の受講生と80社以上の導入実績のあるプログラミングやWebデザインのオンラインマンツーマンレッスンCodecamp
<Codecampの特徴>
1 現役エンジニアによる指導
2オンラインでのマンツーマン形式の講義
3大手企業にも導入されている実践的なカリキュラム
↓無料体験レッスン実施中です。
コメント