【发布时间】:2016-09-13 19:34:49
【问题描述】:
我在这里很困惑。假设我在 Visual Studios 中有两个程序 - 我正在使用 C# WPF。假设我有两个程序,其中 Program 1 有 Program 2 作为参考 - 同样 Program 2 有 Program 1 作为参考。
Program1.sol
p1.xaml.cs 内容:
public void checkStuff(myThing x)
{
// Do stuff (irrelevant)
}
public enum myThing
{
stuff,
stuff2,
stuff3,
stuff4
}
Program2.sol
p2.xaml.cs 内容:
// Let's say I call that function
p1 p1content = new p1();
p1content.checkStuff(0); // <-- Why does this work??
我的问题是,为什么将数字 0 用作参数?这可能是微不足道的,但是当我传入 0 时,程序认为我传入的函数到底是什么?一开始我以为是我的枚举类中的变量的索引,但不可能是因为我不能传入1,2,3等等。
【问题讨论】:
-
仅供参考,
enum和enumerator在 C# 中是非常不同的东西。你在谈论枚举 -
我不认为你可以像你描述的那样有循环引用。
-
谢谢@ScottChamberlain,Jamiec 到底是什么意思
-
这不是一个重复的问题,但它是相关的。枚举是整数值类型,因此需要一个默认初始化值,该值自然选择为零。由于枚举可以默认初始化为零,因此语言设计者选择允许任何枚举也显式初始化为零。因此,您可以将 0 分配给任何枚举,但不能分配任何其他整数(不进行强制转换)。
-
"当我没有为
0定义值时,为什么传递0有效?" :stackoverflow.com/questions/6413804