9.C#で「アクセシビリティに一貫性がありません。」となった場合の対応 |
| C#を使っていて、クラス定義を行った場合、「アクセシビリティに一貫性がありません。」とエラーが出て何をしていいか分からないことが何度かありました。ネットで調べても難しい説明ばかりで何をすればいいかなかなか分かりません。 いろいろとテストしてみた結果、定義を確認し、下記の方法でエラーを消すことが出来ました。
プロジェクトにクラスを新規で追加すると、下記のようになります。
using System; using System.Collections.Generic; using System.Text;
namespace ClassAccessTest { class Class1 { } }
|
標準のテンプレートなので、このまま使用していると複数のクラス(フォームなど)で使用すると、「アクセシビリティに一貫性がありません。」のエラーが発生することがあります。
この場合、class の定義部分の前に public を追加することで対策が出来ます。 私の場合は、この方法でエラーを消すことが出来ました。
再現しない方は下記のサンプルを参考にしてみて下さい。
//------------------------------------------------- // フォーム表示用のクラス //------------------------------------------------- public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private cWorkData wData;
private void Form1_Load(object sender, EventArgs e) { wData = new cWorkData(); }
private void button1_Click(object sender, EventArgs e) { prcDataTest pr = new prcDataTest();
pr.DataCheck(ref wData);
label1.Text = wData.ID.ToString(); } } //------------------------------------------------- // テストデータクラス // - - - - - - - - - - - - - - - - - - - - - - - - // クラス定義の Public を削除すると // 「アクセシビリティに一貫性がありません。」 // のエラーが発生します。 //------------------------------------------------- public class cWorkData { public int ID = 0; //データID public string nam = ""; //名称 }
//------------------------------------------------- //データチェッククラス //------------------------------------------------- public class prcDataTest { public bool DataCheck(ref cWorkData wd) { if(wd == null){ return false; } wd.ID++; wd.nam += wd.ID.ToString("0000");
return true; } }
|
赤字で書いてあるpublicを消すと、再現します。 このエラー対策でお困りの方は、お試し下さい。 |
|
|