日期:2014-05-18  浏览次数:21010 次

【C#枚举基础知识求解】
C# code
public enum directions
    {
        U,D,L,R
    };

这个枚举为什么要加“;” 不加可以吗 
C# code
 
public directions dir;
public virtual void Adjustdrection()
        {
            switch (dir)
            {
                case directions.U:
                    this.Y -= Speed;
                    break;
                case directions.D:
                    this.Y += Speed;
                    break;
                case directions.R:
                    this.X += Speed;
                    break;
                case directions.L:
                    this.X -= Speed;
                    break;
                   

            }
        }

这种判断 是什么意思 得怎么理解 判断directions定义的变量等于directions.U 这是怎么个比对法 


枚举定义的变量 和枚举本身的变量有什么区别

------解决方案--------------------
枚举型的规则
------解决方案--------------------
http://msdn.microsoft.com/zh-cn/library/sbbt4032(v=vs.80).aspx

class Program
{
enum directions { U,D,L,R };

static void Main(string[] args)
{
directions d=directions.R;
Console.WriteLine(Adjustdrection(d, 100, 100));
}
static int Adjustdrection(directions dir, int X, int Y)
{
switch (dir)
{
case directions.U:
Y -= 50;
return Y;
case directions.D:
Y += 50;
return Y;
case directions.R:
X += 50;
return X;
case directions.L:
X -= 50;
return X;
default:
return 0;
}
}
}
枚举定义的变量你給定值後自然會等於枚举本身的变量
------解决方案--------------------
不加;是可以的。
加上也没事。
------解决方案--------------------
directions d=directions.R;
Console.WriteLine(Adjustdrection(d, 100, 100));

directions dd=directions.U;
Console.WriteLine(Adjustdrection(dd, 100, 100));

dd!=d當然你要設dd==d也ok。
directions d=directions.R;
directions dd=directions.R;

------解决方案--------------------
你暂时可以把U,D,L,R看作是4个static readonly int 的字段
switch-case 就像是单刀多路开关

------解决方案--------------------
探讨

directions d=directions.R;
这句话 为什么成立 我不理解
directions d 是一个枚举对象 这个对象 应该有4个属性 怎么可以用一个directions.R来赋值

在一个
directions 不是静态属性 就算在类里赋值 别的类在调用 也没有值了吧