簡體   English   中英

錯誤 1 ​​不一致的可訪問性:返回類型的可訪問性低於方法

[英]Error 1 Inconsistent accessibility: return type is less accessible than method

當我構建時,VS 顯示錯誤。 這是我的代碼:

public Composite buildComposite(ComboBox subs, ComboBox bas)
{
    int count = 0;
    Composite a = new Composite();
    if (subs.SelectedItem != null)
    {
        foreach (Substance d in listSubstance)
        {
            if (String.Compare(d.notation, subs.Text) == 0)
            {
                count++;
                a.subs = new Substance(d);
                break;
            }
        }
    }
    if (bas.SelectedItem != null)
    {
        foreach (Base g in listBase)
        {
            if (String.Compare(g.notation, bas.Text) == 0)
            {
                count++;
                a.bas = new Base(g);
                break;
            }
        }
    }
    if (count > 0)
    {
        a.equilibrium();
        a.settypesubs(arrayDefinition);
        return a;
    }
    else
        return null;
}

這是我的錯誤:

錯誤 1 ​​不一致的可訪問性:返回類型“Project_HGHTM9.Composite”的可訪問性低於方法“Project_HGHTM9.Form1.buildComposite(System.Windows.Forms.ComboBox, System.Windows.Forms.ComboBox)” c:\\users\\nguyen\\documents\\ Visual Studio 2013\\Projects\\Project_HGHTM9\\Project_HGHTM9\\Form1.cs 172 26 Project_HGHTM9

您的Composite類不是public 您不能從公共方法返回非公共類型。

如果您沒有為非嵌套類指定可訪問性,則默認使用internal public添加到您的Composite類定義中:

public class Composite
{
    ...

另外,如果buildComposite並不需要public (這意味着它只能通過形式內部使用),那么你可以做的方法privateinternal還有:

private Composite buildComposite(ComboBox subs, ComboBox bas)
{
    ....

您試圖從公共方法返回類Composite的實例,但Composite不是公共的,因此無法返回,因為任何調用代碼都無法了解有關Composite類的任何信息,因為它看不到它。

公開您的Composite類。

public class Composite{...}

或者使返回Composite的方法與您的類具有相同的可見性(可能是私有的):

private Composite buildComposite(ComboBox subs, ComboBox bas)

其中哪一個合適取決於您是否需要從當前程序集外部調用方法(或使用類)。

默認情況下,類通常盡可能地“隱藏”,因此對於類來說是私有的。 在此處閱讀有關默認可見性的更多信息

您的自定義類型 Composite 目前比您的方法 buildComposite 更難訪問。 對於其他類要查看此公共方法,它們還必須具有對 Composite 類/結構的公共訪問權限。

如果Composite是在像class Composite這樣的無法訪問/不可修改的代碼中定義的,您可以嘗試將buildComposite設為內部。 就像internal Composite buildComposite(ComboBox subs, ComboBox bas) 這樣,通過將方法設置為private ,它仍然更容易訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM