嘿伙计们我是C#的新手,我正在练习课程和方法,而且我做了以下代码:
using System;
namespace ConsoleApp6
{
class Book
{
static void Review()
{
int x = 10;
Console.WriteLine(x);
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Book.Review);
}
}
}
这很简单但是当我说它因为它的保护级别无法访问“评论”方法时,请帮助
答案 0 :(得分:4)
此错误的原因是方法的默认访问修饰符为private
,这意味着只有同一类的成员才能看到它们。
由于您希望从同一名称空间中的另一个类引用该方法,因此您需要通过将访问修饰符更改为internal
来提供对该方法的更广泛访问权限(这意味着同一程序集中的任何类都可以看到它)或public
(这意味着每个人都可以看到它)。
其中任何一个都可以解决您的问题:
// Only members of the same assembly can access this method
internal static void Review() { // code omitted }
// Everyone can access this method
public static void Review() { // code omitted }
您可以阅读有关访问修饰符here的更多信息。
此外,您已将Review
的返回值设置为void
,然后尝试将此值传递给Console.WriteLine()
方法,该方法需要实际类型。这将导致编译错误(例如:"无法将void
转换为[someType]
")。
为了解决这个问题,你可以从main调用方法,然后让方法写入控制台:
private static void Main(string[] args)
{
Book.Review();
}
或者,我的偏好是让方法返回一个字符串,然后用Main
方法将其写入控制台(我更喜欢这个,因为它使方法更通用 - 有人可以简单地称它为检索评论而不将其显示到控制台,例如):
public static string Review()
{
int x = 10;
return x.ToString();
}
请注意,在调用方法时,您需要在名称后面加上括号:
private static void Main(string[] args)
{
Console.WriteLine(Book.Review());
}