草庐IT

swift - OptionSetType 和枚举

全部标签

c# - 枚举器实现 : Use struct or class?

我注意到List将其枚举器定义为struct,而ArrayList将其枚举器定义为class.有什么不同?如果我要为我的类(class)写一个枚举器,哪个更好?编辑:使用yield无法满足我的要求,所以我正在实现自己的枚举器。也就是说,我想知道遵循List的路线是否会更好。并将其作为结构实现。 最佳答案 像其他人一样,我会选择一个类(class)。可变结构是讨厌的。(正如Jared所建议的那样,我会使用迭代器block。手动编写枚举器代码很费力才能正确。)参见thisthread例如,列表枚举器是一个导致问题的可变结构......

c# - 在 C# 中枚举集合的子集?

有没有一种在C#中仅枚举Collection的子集的好方法?也就是说,我有一个包含大量对象(比如1000)的集合,但我只想枚举250-340个元素。有没有一种好的方法可以为集合的子集获取枚举器,而无需使用另一个集合?编辑:应该提到这是使用.NETFramework2.0。 最佳答案 尝试以下操作varcol=GetTheCollection();varsubset=col.Skip(250).Take(90);或者更一般的publicstaticIEnumerableGetRange(thisIEnumerablesource,in

c# - 如何避免使用枚举?

直到询问question在这里我从来没有认为(枚举)是一件“坏事”。对于那些认为它们不是最佳实践的人,有哪些方法/模式可以避免在代码中使用它们?编辑:publicEnumSomeStatusApproved=1Denied=2Pending=3endEnum 最佳答案 Fowler的Refactoring中描述了枚举的问题。,它被认为是代码味道。它与类型安全无关,而是迫使您在整个代码中添加switch语句,从而违反了DRY原则。Statepattern是相同结构的更好模型,因为它允许您在同一类中实现和改变与相同状态相关的逻辑。这也增

c# - 枚举 lambdas 没有正确绑定(bind)作用域?

考虑以下C#程序:usingSystem;usingSystem.Linq;usingSystem.Collections.Generic;publicclassTest{staticIEnumerableGet(){for(inti=0;iConsole.WriteLine(capture.ToString());}}publicstaticvoidMain(string[]args){foreach(varainGet())a();foreach(varainGet().ToList())a();}}在Mono编译器下执行时(例如Mono2.10.2.0-粘贴到here),它会写入

c# - 如何避免代码中枚举值与数据库中相应值之间的依赖关系?

我有许多用户权限,这些权限在我的ASP.NET应用程序中经过测试。这些权限值在枚举中引用,这样我就可以像这样方便地测试权限:btnCreate.Enabled=PermissionManager.TestPermission(Permission.AllowCreate);但是,我也将这些权限存储在数据库中,因为我需要保存有关它们的更多信息,而不仅仅是它们的ID。但这在枚举值和数据库中的值之间产生了可怕的依赖性,对任何一个的更改都经过深思熟虑,我在整个应用程序中都遇到了问题。有没有更好的方法解决这个问题?以前有人处理过这个问题吗? 最佳答案

c# - Windows.Forms.MouseButtons 中的奇数枚举值

我在System.Windows.Forms命名空间中找到了这个gem(IMO)。我正在努力弄清楚为什么要这样设置。[Flags]publicenumMouseButtons{None=0,Left=1048576,Right=2097152,Middle=4194304,XButton1=8388608,XButton2=16777216,}有人可以解释为什么它使用这些值(2^20到2^24的幂)而不是这个:publicenumMouseButtons{None=0,Left=1,//2^0Right=2,//2^1Middle=4,//2^2XButton1=8,//2^3XBut

c# - 为什么枚举中不允许​​字段引用(或者这是编译器错误?)

当我使用下面的代码时:usingSystem;namespaceFoo{[Flags]publicenumBar:ulong{None=0x0000000000000000,A=0x8000000000000000,B=0x0000000000000001L|A,C=0x0000000000000002L|B,D=0x0000000000000004L|A,All=A|B|C|D}}单声道编译器崩溃。这是由于语义错误(语言中不允许的错误)造成的,但编译器没有注意到,还是编译器错误?版本:Mono2.10.8.1我已经在bugzilla(https://bugzilla.xamarin.

c# - 如何连接异步枚举?

我有一个具有此返回类型的方法:publicasyncTask>GetAll()它进行了一些进一步的异步调用(未知数量),每个调用返回一个可枚举T的任务,然后想要连接结果以返回。vardata1=src1.GetAll();vardata2=src2.GetAll();vardata3=src3.GetAll();//andsoon现在很容易等待所有结果并连接结果以生成单个可枚举项,但我希望在第一次调用返回后立即使用可枚举项,如果有任何调用,则可能会等待调用者/枚举器当可用结果用完时仍然悬而未决。我是否必须为此手动滚动一个concat,以解决当它包装在任务中时缺少枚举器支持的问题?或者在

c# - 我可以使用类型化工厂设施返回基于(枚举)参数的实现吗?

不确定这是否可能。我需要根据枚举值返回正确的服务实现。所以手工编码的实现看起来像这样:publicenumMyEnum{One,Two}publicclassMyFactory{publicITypeIWantToCreateCreate(MyEnumtype){switch(type){caseMyEnum.OnereturnnewTypeIWantToCreate1();break;caseMyEnum.TworeturnnewTypeIWantToCreate2();break;default:returnnull;}}}返回的实现具有额外的依赖项,需要通过容器注入(inject

c# - 如何向枚举添加多个属性?

我有一个名为ClientCreditResolutionPlanActionType的SQL查找表,我想将其转换为enum在c#.非常基本的要求,对吧?对。我的table,现在enum,但是,有多个列,或者现在,描述属性需要与它一起使用:状态图标状态文本打字所以我想我可以做...namespaceSystem.ComponentModel{classStatusIconAttribute:Attribute{publicstringStatusIcon;publicStatusIconAttribute(stringstatusIcon){StatusIcon=statusIcon;}