Tag: enums

奇怪的(可能是错的?)C#编译器行为与方法重载和枚举

今天我发现了一个非常奇怪的C#函数重载行为。 当我有一个方法有2个重载,一个接受对象,另一个接受任何类型的枚举时,会出现问题。 当我将0作为参数传递时,将调用该方法的Enum版本。 当我使用任何其他整数值时,将调用Object版本。 我知道这可以通过使用显式转换来轻松修复,但我想知道为什么编译器会以这种方式运行。 这是一个错误还是我不知道的一些奇怪的语言规则? 下面的代码解释了问题(使用运行时2.0.50727检查) 感谢您对此的任何帮助,Grzegorz Kyc class Program { enum Bar { Value1, Value2, Value3 } static void Main(string[] args) { Foo(0); Foo(1); Console.ReadLine(); } static void Foo(object a) { Console.WriteLine(“object”); } static void Foo(Bar a) { Console.WriteLine(“enum”); } }

使用下拉列表绑定枚举并在MVC C中的get动作中设置选定值#

我有一个叫做CityType的Enum public enum CityType { [Description(“Select City”)] Select = 0, [Description(“A”)] NewDelhi = 1, [Description(“B”)] Mumbai = 2, [Description(“C”)] Bangalore = 3, [Description(“D”)] Buxar = 4, [Description(“E”)] Jabalpur = 5 } 从枚举生成列表 IList list = Enum.GetValues(typeof(CityType)).Cast().Select(x => new SelectListItem(){ Text = EnumHelper.GetDescription(x), Value = ((int)x).ToString() }).ToList(); int city=0; if (userModel.HomeCity != null) city= (int)userModel.HomeCity; ViewData[“HomeCity”] […]

C#:从另一个类访问Enum

我知道我可以将我的枚举放在类的Namespace区域,这样每个人都可以在同一名称空间中访问它。 // defined in class2 public enum Mode { Selected, New, } 我想要的是从中访问此枚举 public class1 { var class2 = new class2(); // Set the Mode class2.Mode = Model.Selected } 在不使用命名空间区域的情况下这是否可行?

按声明顺序对枚举进行排序

public enum CurrencyId { USD = 840, UAH = 980, RUR = 643, EUR = 978, KZT = 398, UNSUPPORTED = 0 } 有没有办法对Enum.GetValues(typeof(CurrencyId)).Cast()结果进行排序Enum.GetValues(typeof(CurrencyId)).Cast()按顺序转换Enum.GetValues(typeof(CurrencyId)).Cast()它们是在.cs文件(USD,UAH,RUR,EUR,KZT,UNSUPPORTED)中声明的,而不是它们的底层代码? 就个人而言,我认为答案是’不’,因为原始订单在二进制文件中丢失了,所以…我该如何实现任务?

使用GetHashCode获取Enum int值

我有一个枚举 public enum INFLOW_SEARCH_ON { ON_ENTITY_HANDLE = 0, ON_LABEL = 1, ON_NODE_HANDLE = 2 } // enum INFLOW_SEARCH_ON 我必须使用此枚举来在网格列中进行搜索 获取我正在使用的列索引 MyEnumVariable.GetHashCode() 哪个工作正常,或者我应该使用 (short)MyEnumVariable 我对使用GetHashCode()感到有点困惑。 使用它有什么问题吗?

x:UWP XAML中的静态

我正在处理的应用程序需要ConverterParameter作为枚举。 为此,常规方法是: {Binding whatever, Converter={StaticResource converterName}, ConverterParameter={x:Static namespace:Enum.Value}} 但是,UWP平台x:名称空间似乎没有静态扩展名。 有谁知道是否有一个不依赖于x的解决方案:静态用于比较绑定中的枚举?

从C#,C ++ / CLI和C ++共享枚举

我有一个由三部分组成的库。 首先是本机C ++,它提供实际function。 其次是C ++库的C ++ / CLI包装器/适配器,以简化C#到C ++的转换。 最后我有一个C#库,它通过C ++ / CLI适配器调用C ++库。 现在我有两组并行枚举定义,一个存储在.cs文件中,另一个存储在.h文件中。 这带来了双重问题: 我有双重维护。 我必须始终在两个文件位置同步枚举的更改。 两个枚举使用的命名空间应该相同,但C ++ / CLI包装器(它们查看两组枚举并在它们之间进行转换)会引发命名冲突。 现在我不确定这样或那样的解决方案可以解决这两个问题。 思考?

从MVC 5.1 EnumDropDownListFor中排除/删除值

我有一个用于用户管理页面的枚举列表。 我正在使用MVC 5.1中的新HtmlHelper,它允许我为Enum值创建一个下拉列表。 我现在需要从列表中删除Pending值,此值只能以编程方式设置,并且永远不应由用户设置。 枚举: public enum UserStatus { Pending = 0, Limited = 1, Active = 2 } 视图: @Html.EnumDropDownListFor(model => model.Status) 无论如何,要么覆盖当前控件,要么编写一个允许我指定枚举的自定义HtmlHelper,或者从结果列表中排除枚举? 或者你会建议我用jQuery做客户端的东西,一旦生成后从下拉列表中删除值? 谢谢!

C#枚举中的空格

有没有办法在C#枚举常量中放置空格? 我已经读过你可以通过这样做在VB中做到这一点: Public Enum EnumWithSpaces ConstantWithoutSpaces [Constant With Spaces] End Enum …然后像这样访问它: Public Sub UsingEnumWithSpaces() Dim foo As EnumWithSpaces = EnumWithSpaces.[Constant With Spaces] End Sub 这意味着CLR可以处理带空格的枚举。 有没有办法在C#中做到这一点?

你有同一个整数的多个枚举值吗?

在.NET中,您可以为同一个整数设置多个enum值吗? 例如。 public enum PersonGender { Unknown = 0, Male = 1, Female = 2, Intersex = 3, Indeterminate = 3, NonStated = 9, InadequatelyDescribed = 9 }