我是c#
的新手,这是我正在努力获得一些经验的个人项目的摘录。
在此类之外调用getRecipe()
函数时,出现以下错误。我希望将List
私密保留到CookBook
课程,但仍然可以引用Recipes
中的List
之一。我不想让List
公开。
非常感谢任何建议!感谢
错误
return type 'cookbook.Recipe is less accessible than method 'cookbook.CookBook.getRecipe(string)'
public class CookBook
{
private List<Recipe> listOfRecipes = new List<Recipe> {};
public Recipe getRecipe(string name)
{
int i = 0;
while (listOfRecipes[i].getRecipeName() != name)
{
i++;
}
return listOfRecipes[i];
}
}
答案 0 :(得分:131)
将Recipe
课程公开。
答案 1 :(得分:9)
您的Recipe类比方法更难访问。您应该检查Recipe不是私有/内部的,并且您可以从该类范围之外看到Recipe类(快速修复声明Recipe是公共类)。
正如Michael Stum在下面的评论中指出的那样,没有访问修饰符的类默认为内部或私有(如果它是嵌套类)。这可能是您的问题所在,您可能刚刚宣布class Recipe
而不是public class Recipe
答案 2 :(得分:2)
语法错误?
private List<Recipe> listOfRecipes = new List<Recipe> {};
应该是:
private List<Recipe> listOfRecipes = new List<Recipe>();
另外,你可以简单地使用LINQ来获得你的结果,我不在VS中,但是这样的......
public Recipe getRecipe(string name)
{
return listOfRecipes.Where(c => c.RecipeName == name).SingleOrDefault();
}
答案 3 :(得分:2)
正如错误消息明确指出的那样,Recipe
类比您的方法更难以访问(例如,不是public
)。
答案 4 :(得分:0)
public DataSet Country12()
{
LntSqlClient mySqlClient = new LntSqlClient(ConfigurationManager.AppSettings.Get("Data source=172.31.60.228;initial catalog=Trainee;Trusted_Connection=True;"));
LntSqlParams myParam = new LntSqlParams();
DataSet dset = new DataSet();
//string strout;
try
{
myParam.SPName = "dbo.GetState7";
myParam.addParameter("@CityId", ddlCity9.SelectedValue, mySqlClient);
dset = mySqlClient.lntDataSet(myParam);
//strout = myParam.LntSQLOutputParams("@error").Value.ToString();
return dset;
}
catch (Exception ex)
{ throw ex; }
finally
{ mySqlClient.closeConnection(); }
}
答案 5 :(得分:0)
让你的班级公开..没有你不能归还任何东西
答案 6 :(得分:0)
检查以确定“配方”的可见度范围。 class是你想要访问它的地方。
答案 7 :(得分:0)
在C#中,类默认是private
,所以访问级别是有限制的。
将您的模型类声明为公共(配方)为 public
。
答案 8 :(得分:-1)
将方法设为内部。希望它能奏效。