枚举功能错误

时间:2016-04-14 11:11:31

标签: c# function methods enums

我是初学者程序员我使用visual basic.net编写代码所以我想学习c#,可以帮助我解决这段代码 你好,这段代码有什么错误?

  enum Day
{
    Saturday, Sunday, Monday, Tuesday, Wednesday,Thursday, Friday    
}
 public static void ShowDay(Day CurrentDay) // Error
{
    if (CurrentDay == Day.Friday)
        Console.WriteLine("A vacation");
}
static void Main(string[] args)
{
    Day X;
    X = Day.Friday;
    ShowDay(X);
    ShowDay(Day.Friday);
}

3 个答案:

答案 0 :(得分:4)

您应该将enum公开。

public enum Day
{
    Saturday, Sunday, Monday, Tuesday, Wednesday,Thursday, Friday    
}

UPD :或者从public方法移除ShowDay

答案 1 :(得分:2)

这是一个有效的.NET Fiddle

public enum Day
{
    Saturday,
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday
}

public static void ShowDay(Day CurrentDay)
{
    if (CurrentDay == Day.Friday)
        Console.WriteLine("A vacation");
}

public static void Main(string[] args)
{
    Day X;
    X = Day.Friday;
    ShowDay(X);
    ShowDay(Day.Friday);
}

问题是您的方法是公开的,但参数的变量类型不是 - 因此它被认为是“不太容易访问”。

<强>更新

我们的想法是access modifier必须对齐,有几个关键方案需要考虑。

在这种情况下,您省略了enum声明中的访问修饰符 - 顶级类型为internal,嵌套类型为private。现在,当您将方法ShowDay(Day currentDay)定义为public时,这意味着它会向引用此类的任何人公开。问题在于,参数未公开,但您将其定义为参数。这有帮助吗?

但将enum定义为public并将方法定义为少于public的任何内容都可以。

答案 2 :(得分:0)

您也可以通过将internal放在其前面或简单地移除public关键字来使您的方法成为内部方法。

static void ShowDay(Day CurrentDay) // No error

简单地发生此错误是因为相关类型和方法需要具有相同的访问修饰符。因此,要么将所有内容公开,要么将方法设为内部。