javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

c#-模型绑定到ASP.NET MVC 3中的枚举

我的控制器中有一个方法,该方法接受一个对象作为参数并返回JsonResult。 此对象的属性之一是带有三个可能值的枚举。 我假设当客户端为该属性传递int值时,它将填充枚举,但不是,它默认为0,并且枚举设置为它的第一个可能选择。

有什么建议么?

trans by 2020-02-22T18:39:01Z

如何在case语句中使用C#枚举值的字符串值?

我已将C#枚举定义为

public enum ORDER
{
    ...
    unknown,
    partial01,
    partial12,
    partial23,
}

并可以将其值用作字符串,如下所示:

            string ss = ORDER.partial01.ToString();

但是,当我尝试在case语句中使用它时,它无法编译:

string value = ...
switch (value)
{
    case null:
        break;
    case "s":
        // OK
        break;
    case ORDER.partial01.ToString():
        // compiler throws "a constant value is expected"

        break;
  ...

我以为枚举是常量。 我该如何解决?

(我无法将值解析为枚举,因为某些值超出了范围)

trans by 2020-02-22T16:55:34Z

枚举到字符串C ++

可能重复:
是否有一个简单的脚本将C ++枚举转换为字符串?

我通常发现我需要在C ++中将枚举转换为字符串

我总是最后做:

enum Enum{ Banana, Orange, Apple } ;

char * getTextForEnum( int enumVal )
{
  switch( enumVal )
  {
  case Enum::Banana:
    return "bananas & monkeys";
  case Enum::Orange:
    return "Round and orange";
  case Enum::Apple:
    return "APPLE" ;

  default:
    return "Not recognized..";
  }
}

有更好的或公认的习惯用法吗?

trans by 2020-02-21T21:26:55Z

在Java属性fi中表示数组的更好方法

我目前正在制作一个.properties文件,该文件需要加载并转换为数组。 但是每个属性键的存在范围可能是0-25。 我尝试了一些实现,但我只是坚持这样做。 有人有想法么?

foo.1.filename=foo.txt
foo.1.expire=200

foo.2.filename=foo2.txt
foo.2.expire=10

etc more foo's

bar.1.filename=bar.txt
bar.1.expire=100

在这里,我将文件名/过期对组合为数据对象,作为每个父属性元素(如foo[myobject])的数组的一部分

属性文件的格式可以更改,我愿意接受。

trans by 2020-02-20T12:44:55Z

java-Enum.hashCode()背后的原因是什么?

Enum类中的hashCode()方法是final方法,并定义为super.hashCode(),这意味着它根据实例的地址返回一个数字,该数字是程序员POV的随机数。

定义它例如 如hashCode在不同的JVM之间将具有确定性。 甚至会做得更好,因为最低有效位将“尽可能地变化”,例如,对于包含最多16个元素和大小为16的HashMap的枚举,肯定不会发生冲突(请确保, 使用EnumMap更好,但有时是不可能的,例如,没有ConcurrentEnumMap。 根据当前的定义,您没有这样的保证,对吗?

答案摘要

使用hashCode可以与更好的hashCode(例如上面的代码)进行比较,如下所示:

  • 优点
    • 简单
  • 缺点
    • 速度
    • 更多碰撞(对于任何大小的HashMap)
    • 非确定性,会传播到其他对象,使它们无法用于
      • 确定性模拟
      • ETag计算
      • 寻找漏洞取决于 在hashCode迭代顺序上

我个人更喜欢更好的hashCode,但是恕我直言,没有理由称重,也许除了速度之外。

更新

我对速度感到好奇,并写了一个令人惊讶的结果基准。 对于每个类一个字段的价格,您可以使用确定性哈希码,其速度快将近四倍。 尽管可以忽略不计,但将哈希码存储在每个字段中甚至更快。

标准哈希码之所以速度不快的原因是,当对象被GC移动时,它不能成为对象的地址。

更新2

hashCode的性能通常会发生一些奇怪的变化。 当我理解它们时,仍然有一个悬而未决的问题,为什么System.identityHashCode(从对象标头读取)比访问普通对象字段要慢得多。

trans by 2020-02-19T23:43:53Z

在JSON模式中定义枚举数组的正确方法

我想用JSON模式数组进行描述,该数组应该包含零个或多个预定义值。 为了简单起见,让我们使用以下可能的值:"items"twothree

正确的数组(应通过验证):

[]
["one", "one"]
["one", "three"]

不正确:

["four"]

现在,我知道应该使用"items"属性,但是我找不到在哪里放置相关信息。

选项A(在"items"以下):

{
    "type": "array",
    "items": {
        "type": "string",
        "enum": ["one", "two", "three"]
    }
}

选项B:

{
    "type": "array",
    "items": {
        "type": "string"
    },
    "enum": ["one", "two", "three"]
}
trans by 2020-02-19T01:10:35Z

使用JavaDoc记录Java枚举的最佳方法是什么?

我刚刚开始在自己的项目中使用Java的枚举(我必须在工作中使用JDK 1.4),并且对于将JavaDoc用作枚举的最佳做法感到困惑。

我发现此方法有效,但是生成的代码略有改进:

/**
* Doc for enum
*/
public enum Something {
/**
* First thing
*/
FIRST_THING,
/**
* Second thing
*/
SECOND_THING;
//could continue with more
}

我有什么办法可以按自己的方式拆分枚举声明而不用逗号将它们链接起来,或者这是将JavaDoc用于枚举的最佳方法吗?

trans by 2020-02-18T12:43:24Z

asp.net mvc-将枚举传递给html.radiobuttonfor MVC3

我有一个名为ActionStatus的枚举,该枚举有2个可能的值open = 0和closed = 1

public enum ActionStatus
{
    Open,
    Closed
}

我想在我的编辑中构建单选按钮组,并创建使用枚举填充以下单选按钮的视图:a)创建视图中的默认值,b)编辑视图中当前选择的选项。

我是否需要一种扩展方法,并且有人已经创建了吗?

编辑:以下达林斯的答案后,这是我的模型类

namespace Actioner.Models
{
[MetadataType(typeof(MeetingActionValidation))]
public class MeetingAction
{
    [Key]
    public int MeetingActionId              { get; set; }       

    [Required]
    [Display(Name = "Description")]
    public string Description  { get; set; }

    [Required]
    [Display(Name = "Review Date")]
    public DateTime ReviewDate       { get ;set; }

    public int Status{ get; set; }

    [ScaffoldColumn(false)]
    public int MeetingId             { get; set; }


    //public virtual Meeting Meeting { get; set; }

    //public virtual ICollection<User> Users { get; set; }
    public virtual ICollection<ActionUpdate> ActionUpdates { get; set; }

    public MeetingActionStatus ActionStatus { get; set; }

}

public enum MeetingActionStatus 
{
    Open,
    Closed
}

这是我的看法

@model Actioner.Models.MeetingAction
@using Actioner.Helpers


<div class="editor-label">
@Html.LabelFor(model => model.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.ReviewDate)
</div>
 <div class="editor-field">
@Html.EditorFor(model => model.ReviewDate)
@Html.ValidationMessageFor(model => model.ReviewDate)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.Status)
</div>
<div class="editor-field">

 @Html.RadioButtonForEnum(x => x.ActionStatus)

</div>

这是我的创建控制器动作

public virtual ActionResult Create(int id)
    {

        var meetingAction = new MeetingAction
        {
            MeetingId = id,
            ReviewDate = DateTime.Now.AddDays(7)
        };

        ViewBag.Title = "Create Action"; 

        return View(meetingAction);
    } 

枚举在视图中显示正常,但是当前选择的选项未持久保存到数据库中

trans by 2020-02-17T21:10:10Z

php-放在哪里/如何在Laravel中处理枚举?

Laravel有<select>表单助手,它以字典作为输入。 我喜欢将所有这些价值观保持在中心位置。 例如,我可能有一个如下所示的枚举:

$phoneTypes = [
    'CELL' => "Cellular",
    'HOME' => "Home",
    'WORK' => "Work",
];

我想在我的视图/模板和数据库中使用的对象:

Schema::create('customers', function (Blueprint $table) {
    $table->increments('id');
    $table->enum('pri_phone_type',array_keys($phoneTypes));
    ...
});
  1. 有推荐的地方放这些吗?
  2. 我可以将它们设置为全局性,以便在所有视图中轻松访问它们吗?
trans by 2020-02-15T10:56:59Z

可以在枚举中定义一个类常量吗?

Python 3.4引入了一个新模块Enum,该模块为该语言添加了枚举类型。 Enum的文档提供了一个示例来演示如何扩展它:

>>> class Planet(Enum):
...     MERCURY = (3.303e+23, 2.4397e6)
...     VENUS   = (4.869e+24, 6.0518e6)
...     EARTH   = (5.976e+24, 6.37814e6)
...     MARS    = (6.421e+23, 3.3972e6)
...     JUPITER = (1.9e+27,   7.1492e7)
...     SATURN  = (5.688e+26, 6.0268e7)
...     URANUS  = (8.686e+25, 2.5559e7)
...     NEPTUNE = (1.024e+26, 2.4746e7)
...     def __init__(self, mass, radius):
...         self.mass = mass       # in kilograms
...         self.radius = radius   # in meters
...     @property
...     def surface_gravity(self):
...         # universal gravitational constant  (m3 kg-1 s-2)
...         G = 6.67300E-11
...         return G * self.mass / (self.radius * self.radius)
...
>>> Planet.EARTH.value
(5.976e+24, 6378140.0)
>>> Planet.EARTH.surface_gravity
9.802652743337129

此示例还演示了Enum的问题:在surface_gravity()属性方法中,定义了一个常量G,该常量通常在类级别定义-但是尝试在Enum内这样做将只是将其添加为枚举成员之一, 因此,它是在方法内部定义的。

如果类想在其他方法中使用此常量,则也必须在其中定义它,这显然不是理想的选择。

有什么方法可以在Enum内定义类常量,或者采取一些变通办法来实现相同的效果?

trans by 2020-02-14T10:00:47Z

iphone-Obj-C中的多值枚举

在Cocoa和Cocoa Touch框架中,枚举用作常量。 我了解如何使用它,但在一种情况下,可以使用<<运算符将其作为参数的多个值进行传递。 像 :

pageControl.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin);

枚举被声明为:

enum {
    UIViewAutoresizingNone                 = 0,
    UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
    UIViewAutoresizingFlexibleWidth        = 1 << 1,
    UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
    UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
    UIViewAutoresizingFlexibleHeight       = 1 << 4,
    UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
typedef NSUInteger UIViewAutoresizing;

我如何定义自己这种类型的枚举(即<<的含义),以及如何作为参数传递时检查整数值?

trans by 2020-02-13T09:09:41Z

C#枚举equals()vs ==

在使用枚举的情况下,最好使用:

if (enumInstance.Equals(MyEnum.SomeValue))

或使用

if (enumInstance == MyEnum.SomeValue)

他们在使用一个对另一个时是否有重要考虑?

trans by 2020-02-12T02:57:49Z

java-如何将int与枚举进行匹配

我正在从Android的本机代码接收long或int形式的返回值,我想将其转换或与enum匹配以用于处理目的。 可能吗 ?怎么样?

trans by 2020-02-08T06:09:24Z

单元测试-模拟Java枚举以添加值以测试失败的cas

我有一个或多或少像这样的枚举开关:

public static enum MyEnum {A, B}

public int foo(MyEnum value) {
    switch(value) {
        case(A): return calculateSomething();
        case(B): return calculateSomethingElse();
    }
    throw new IllegalArgumentException("Do not know how to handle " + value);
}

并且我希望测试涵盖所有行,但是由于期望代码能够处理所有可能性,因此如果没有在开关中使用其相应的case语句,则无法提供值。

扩展枚举以添加额外的值是不可能的,仅模拟equals方法以返回false也不起作用,因为生成的字节码使用幕后的跳转表进行了适当处理...所以我已经 认为使用PowerMock或其他方法可以实现某些黑魔法。

谢谢!

编辑:

当我拥有枚举时,我以为我可以在值上添加一个方法,从而完全避免切换问题。 但是我仍然要提这个问题,因为它仍然很有趣。

trans by 2020-02-03T17:55:11Z

如何在JSF中测试枚举相等性?

是否可以在JSF中测试枚举相等性?

例如。 其中stuffenum Stuff

<h:outputText value="text" rendered="#{mrBean.stuff == mrsBean.stuff}"/>
trans by 2020-02-03T16:39:38Z

MySQL Enum性能优势?

在一个字段只有5-10个不同可能值的情况下使用枚举是否有性能优势? 如果不是,优势是什么?

trans by 2020-01-28T20:57:59Z

java-在枚举类型上实现`next`和`previous`的最佳方法是什么?

假设我有一个枚举:

enum E {
    A, B, C;
}

如lucasmo的回答所示,枚举值按初始化顺序存储在静态数组中,以后您可以使用getNext检索此数组(的克隆)。

现在,假设我要实现getNextgetPrevious,以便所有以下表达式的计算结果为true

E.A.getNext() == E.B
E.B.getNext() == E.C
E.C.getNext() == E.A

E.A.getPrevious() == E.C
E.B.getPrevious() == E.A
E.C.getPrevious() == E.B

我当前对getNext的实现如下:

public E getNext() {
    E[] e = E.values();
    int i = 0;
    for (; e[i] != this; i++)
        ;
    i++;
    i %= e.length;
    return e[i];
}

getNext的类似方法。

但是,此代码充其量似乎很麻烦(例如,“空” getNext循环,可争议的滥用计数器变量,最坏的情况下可能是错误的(可能是反射)。

在Java 7中为枚举类型实现getNextgetPrevious方法的最佳方法是什么?


注意:我不希望这个问题是主观的。 我对“最佳”实施的要求是要求最快,最清洁和最可维护的实施的简写。

trans by 2020-01-27T19:12:25Z

C#-与WCF服务共享枚举

我想共享一个C#枚举,但我有几个不同的应用程序。 我不太清楚如何在常规应用程序和WCF服务之间共享枚举声明。

这是情况。 我有2个轻量级C#桌面应用程序和WCF Web服务,它们都需要共享枚举值。

客户1有

 Method1( MyEnum e, string sUserId );

客户端2有

Method2( MyEnum e, string sUserId );

Web服务有

ServiceMethod1( MyEnum e, string sUserId, string sSomeData);

我最初的做法是创建一个名为Common.dll的库来封装枚举,然后在需要枚举的所有项目中引用该库。 但是,WCF使事情变得困难,因为您需要标记枚举才能使其成为服务的组成部分。 像这样:

[ServiceContract]
[ServiceKnownType(typeof(MyEnum))]
public interface IMyService
{
    [OperationContract]
    ServiceMethod1( MyEnum e, string sUserId, string sSomeData);
}

[DataContract]
public enum MyEnum{ [EnumMember] red, [EnumMember] green, [EnumMember] blue };  

那么....是否有一种在WCF服务和其他应用程序之间共享枚举的方法?

trans by 2020-01-26T16:13:48Z

C#-Enum.TryParse对任何数值返回true

使用Enum.TryParse时,我遇到了意外的行为。

如果我有一个枚举:

public enum MyEnum
{
  ValueA,
  ValueB,
  ValueC
}

然后将数值(作为字符串)传递给Enum.TryParse,例如:

MyEnum outputEnum;
bool result = Enum.TryParse("1234", out outputEnum);

尽管字符串“ 1234”不是可能的值,但结果将返回为true,并且我的outputEnum的值为1234。

有什么办法可以避免这种行为? 我正在尝试编写一个函数,该函数将把任意字符串输入作为枚举来处理,这在我的错误输入检测中抛出了一个monkeywrench。

trans by 2020-01-26T09:42:44Z

枚举ASP.NET MVC C中的下拉列表

我试图在Razor视图中使用标记帮助器在ASP.NET MVC Core中创建一个带有枚举属性的下拉列表:

这是模型:

public class PersonalMember : Member
{
    [Required, Display(Name = "First Name")]
    public string FirstName { get; set; }

    [Required, Display(Name = "Last Name")]
    public string LastName { get; set; }

    [EnumDataType(typeof(Gender))]
    public Gender GenderType { get; set; }
}

public enum Gender
{
    Male = 1,
    Female = 2
}

这是视图中表单的一部分:

<div class="form-group">
    <label asp-for="GenderType" class="col-md-2 control-label"></label>
    <div class="col-md-10">
        <select asp-for="GenderType" asp-items="Html.GetEnumSelectList<GenderType>()">
            <option selected="selected" value="">Please select</option>
        </select>
        <span asp-validation-for="GenderType" class="text-danger" />
    </div>
</div>

我遇到的问题是,在Html.GetEnumSelectList之后,GenderType无法识别,并显示为错误。

有谁知道如何解决这个问题?

trans by 2020-01-24T12:39:09Z

1 2 3 4 5 6 7 8 9 10 11 12 下一页 共12页