可能重复:
如何枚举枚举?
假设我有一个枚举类型MyEnum.在C#中有一种方法可以获取MyEnum类型枚举的所有可能值的列表吗?
您好我可能知道如何获得下面的枚举值绑定到组合框?我写了下面的代码,但效果很好,但奇怪这是最好的方法.
public enum CourseStudentStatus
{
Active = 1,
Completed = 2,
TempStopped = 3,
Stopped = 4,
}
//Bind Course Status
Dictionary<string, int> list = new Dictionary<string, int>();
foreach (int enumValue in Enum.GetValues(typeof(CourseStudentStatus)))
list.Add(Enum.GetName(typeof(CourseStudentStatus), enumValue), enumValue);
var column = ((DataGridViewComboBoxColumn)dgv.Columns["studentCourseStatus"]);
column.DataPropertyName = "StudentStatus";
column.DisplayMember = "Key";
column.ValueMember = "Value";
column.DataSource= list.ToList();
Run Code Online (Sandbox Code Playgroud)
-----------------更新-------------------
我已根据Sanjeevakumar Hiremat将我的代码更改为此它完美地运作.
cbStatus.DataSource = Enum.GetValues(typeof(CourseStudentStatus));
但是,当我想要一个Get()并希望将值绑定回cbStatus时,它会抛出错误{"对象引用未设置为对象的实例."}
cbStatus.SelectedValue = Course.Status;.
cbStatus.Datasource不为空,绑定后有值 cbStatus.DataSource = Enum.GetValues(typeof(CourseStudentStatus));
请指教.
为什么Enum.GetValues()在Windows Phone 7 API中不可用,这是否意味着我应该回避Enums而选择结构或其他机制.
可能重复:
如何枚举枚举?
假设我有一个这样的枚举:
public enum Cars
{
Audi = 0,
BMW,
Opel,
Renault,
Fiat,
Citroen,
AlfaRomeo,
}
Run Code Online (Sandbox Code Playgroud)
我有机会在欧宝和雪铁龙之间进行迭代吗?我想将这些值作为方法的参数.
我想迭代一个枚举,所以我可以用该枚举的每个值调用一个方法.我怎样才能做到这一点?
enum Base { ANC, BTC, DGC };
XmlDocument doc;
doc = vircurex.get_lowest_ask(Base.ANC)
doc = vircurex.get_lowest_ask(Base.BTC)
doc = vircurex.get_lowest_ask(Base.DGC)
Run Code Online (Sandbox Code Playgroud)
我希望它变成类似的东西
foreach (var val in values)
doc = vircurex.get_lowest_ask(....)
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
我<nullable>enable</nullable>在 .csproj 中有一个项目,我遇到了一些奇怪的警告行为。
我有一个遍历枚举的 foreach 语句,枚举中的 foreach 项目运行一些代码。但是当我尝试执行此操作时,VS2019 会标记 CS8605“取消装箱可能为空值”警告。
此处显示了完整代码。该错误显示超过 的减速t。
public static class Textures
{
private static readonly Dictionary<TextureSet, Texture2D> textureDict = new Dictionary<TextureSet, Texture2D>();
internal static void LoadContent(ContentManager contentManager)
{
foreach(TextureSet t in Enum.GetValues(typeof(TextureSet)))
{
textureDict.Add(t, contentManager.Load<Texture2D>(@"textures/" + t.ToString()));
}
}
public static Texture2D Map(TextureSet texture) => textureDict[texture];
}
Run Code Online (Sandbox Code Playgroud)
我正在努力理解为什么有可能为t空,因为枚举是不可为空的。我想知道,因为Enum.GetValues类型的返回Array是否有一些隐式转换在这里进行,这是这个问题的根源。我目前的解决方案只是抑制警告。但我想了解这里发生了什么。也许有更好的方法来迭代枚举。
我正在使用 .net Core 3.1 和 Visual Studio 社区 2019 16.7.2
[Flags]
public enum MyEnum
{
None = 0,
Setting1 = (1 << 1),
Setting2 = (1 << 2),
Setting3 = (1 << 3),
Setting4 = (1 << 4),
}
Run Code Online (Sandbox Code Playgroud)
我需要能够以某种方式循环每个可能的设置并将设置组合传递给函数.可悲的是,我一直无法弄清楚如何做到这一点
问候,我有以下枚举:
public enum LegalShipTypes : byte
{
Frigate = 1,
Cruiser = 2,
Destroyer = 3,
Submarine = 4,
AircraftCarrier = 5
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法以任何方式获得枚举的总价值.例如,这将导致(1 + 2 + 3 + 4 + 5)= 15.
谢谢.
由于这个问题,我设法弄清楚如何限制我的通用方法仅接受枚举。
现在,我尝试创建一个通用方法,以便可以将下拉列表绑定到我选择的任何枚举,在下拉列表中显示描述,其值等于枚举值的数值。
public static object EnumToDataSource<T>() where T : struct, IConvertible {
if (!typeof(T).IsEnum) // just to be safe
throw new Exception(string.Format("Type {0} is not an enumeration.", typeof(T)));
var q = Enum.GetValues(typeof(T)).Cast<T>()
.Select(x => new { ID = DataUtil.ToByte(x), Description = x.ToString() }) // ToByte() is my own method for safely converting a value without throwing exceptions
.OrderBy(x => x.Description);
return q;
}
Run Code Online (Sandbox Code Playgroud)
看起来不错,但 ToByte() 始终返回 0,即使我的枚举已显式设置值,如下所示:
public enum TStatus : byte {
Active = 1,
Inactive …Run Code Online (Sandbox Code Playgroud) foreach (Suit suit in Enum.GetValues(typeof(Suit)))
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
Suit mySuits = Suit.Hearts | Suit.Diamonds;
// How to now iterate mySuits, which should loop twice instead of four times?
Run Code Online (Sandbox Code Playgroud) c# ×9
enums ×6
linq ×2
.net ×1
c#-8.0 ×1
enum-flags ×1
enumeration ×1
foreach ×1
generics ×1
linq-to-sql ×1