C#不能达到枚举类变量
我已经创建了下面的类:C#不能达到枚举类变量
namespace com.censureret.motions
{
public class EnumPlayerStances {
public const int OneHandSword = 50;
/// <summary>
/// Friendly name of the type
/// </summary>
public static string[] Names = new string[] {
"One handed Sword"
};
}
}
现在,我想在我的下面的类来使用:
namespace com.censureret.motions{
public class OneHandSword_Idle : MotionControllerMotion
{
public override bool TestActivate()
{
if (!mIsStartable) { return false; }
if (!mMotionController.IsGrounded) { return false; }
if (mActorController.State.Stance != EnumPlayerStances.OneHandSword)
return false;
}
}
}
但是Visual Studio中说,它的一个错误。
对于C#来说我相当新,所以我希望你们能够帮助我? :)
你击败了枚举的点。它应该这样声明和使用:
using System;
namespace *_Events
{
class Program
{
static void Main(string[] args)
{
string enumName = Enum.GetName(typeof(EnumPlayerStances), EnumPlayerStances.One_Handed_Sword).Replace("_", " ");
int value = (int)EnumPlayerStances.One_Handed_Sword;
var example = EnumPlayerStances.One_Handed_Sword;
switch (example)
{
case EnumPlayerStances.One_Handed_Sword:
// do stuff
break;
}
Console.WriteLine($"Name: {enumName}, Value: {value}");
Console.ReadKey();
}
}
public enum EnumPlayerStances
{
One_Handed_Sword = 50
}
}
请注意,它被声明为“枚举”而不是“类”。
还要注意,如果你声明的枚举,如:1为每个下列名称
public enum EnumPlayerStances
{
No_Sword, // 0
One_Handed_Sword, // 1
Two_Handed_Sword // 2
}
第一name的值从0开始并自动递增。
我不认为这有什么答案。它*可以被声明为一个枚举,但它不必。像EnumPlayerStances.OneHandSword一样访问一个常量应该可以正常工作。另外'GetName'将返回'OneHandSword',而不是'单手剑'。 – GSerg
我会做一些破坏建议以外的东西。当然,你可以使用螺丝刀的屁股敲击指甲。或者是一个带const字段的类作为枚举。但是,当你向专业人员求助时,你隐含地问“什么是最好的,或者至少是合理的,实践”。然后,只有一个好的答案给。钉子的锤子,枚举枚举。 –
我不明白当一个常数不可能时,枚举的属性会让他们达到什么样的属性。当然,枚举是组织某些类型的常量的更好方法,应该给出关于使用它们的建议,但是当涉及到OP显然具有的范围/可访问性问题时,它们并不会更好。他们将声明一个枚举而不是常量,并将他们的问题改为“C#无法到达枚举成员”... – GSerg
什么类型是“mActorController.State.Stance”?您将它与EnumPlayerStances类的const int进行比较。看起来这个类可以被重构为更友好的用户界面。价值50代表什么?你期望把什么其他的东西放在字符串数组中? – Vidar