错误1:可访问性不一致:返回类型比方法更难访问
本文关键字:访问 方法 返回类型 错误 不一致 | 更新日期: 2023-09-27 18:06:47
当我正在构建时,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。复合'是比方法'Project_HGHTM9.Form1.buildComposite(System.Windows.Forms. 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
(意味着它只在表单内部使用),那么您也可以将方法设置为private
或internal
:
private Composite buildComposite(ComboBox subs, ComboBox bas)
{
....
您试图从公共方法返回类Composite
的实例,但Composite
不是公共的,因此无法返回,因为任何调用代码都无法了解Composite
类,因为它无法看到它。
将Composite
类设置为public
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)
。这样,通过将方法设为私有,它仍然更容易访问。