【问题标题】:Inconsistent accessibility on class [duplicate]类的可访问性不一致[重复]
【发布时间】:2013-07-12 13:41:36
【问题描述】:

我收到以下错误

错误不一致的可访问性:字段类型“Project3_MineSweeper.DB” 比字段更难访问 'Project3_MineSweeper.Form2.db'

这是 DB.cs 中的代码

class DB
{
    private string connectionString;

    public string ConnectionString
    {
        get { return connectionString; }
    }

    private SqlConnection connection;

    public SqlConnection Connection
    {
        get { return connection; }
    }

    public DB()
    {
        connectionString="Data Source=NGFAJAR-PC\\FAJAR;Initial Catalog=DB;Integrated Security=True";
        connection = new SqlConnection(connectionString);
    }
}

这是Form2.cs的代码

public partial class Form2 : Form
{
    public DB db; //it's here where I am getting the error

    private Form3 form3;
    public Form2()
    {
        db = new DB();
        InitializeComponent();
    }
    ...
}

最后,Form3.cs

public partial class Form3 : Form
{
    private Form2 form2;
    public Form3()
    {
        InitializeComponent();
    }

    public void loadData()
    {
        DataTable dt = form2.db.GetData();
        dgvScore.DataSource = dt;
    }
}

怎么了?我应该怎么做才能解决它? 感谢您的关注和帮助。

【问题讨论】:

    标签: c# winforms access-modifiers


    【解决方案1】:

    您需要将class DB 声明为internal class DBpublic class DB

    【讨论】:

    • 或者将字段从 public DB db; 更改为 internal DB db;。没有必要总是通过使事情易于访问来解决这个问题!
    • @JeppeStigNielsen 当然 - 但鉴于提供的信息,答案是public。更多信息可能表明可访问性较低。很可能,因为这些是他正在处理的Forms,所以他拥有的所有public 都可能是internal。不过,这似乎超出了这个问题的范围。
    【解决方案2】:

    怎么了?

    DB 类型声明为 class DB,没有显式访问修饰符。这可能很好。那么命名空间的直接成员 (Project3_MineSweeper) 的默认可访问性是 internal。所以DB 是一个internal 类。

    现在Form2public 类。公共意味着任何人,甚至是这个“程序”(这个程序集)之外的代码都可以看到Form2。现在Form2 有一个字段db 也是public。所以db 在公共类中是公共的,所以db 可以从外面看到。但问题是:程序之外的人甚至不知道有一个名为Project3_MineSweeper.DB 的类型。那么他们怎么能看到一个“秘密”类型的字段呢?这是不一致的地方。

    我应该怎么做才能修复它?

    使可访问性兼容,例如将字段更改为internal,因此:

    public partial class Form2 : Form
    {
        internal DB db;
    
        ...
    }
    

    【讨论】:

      【解决方案3】:

      像这样改变你的数据库类

      public class DB
      {
          ....
      }
      

      【讨论】:

        猜你喜欢
        • 2021-01-16
        • 1970-01-01
        • 2018-03-07
        • 1970-01-01
        • 2014-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-19
        相关资源
        最近更新 更多