C# 无法将字符串隐式转换为int

C# 无法将字符串隐式转换为int,c#,enums,C#,Enums,在C#中,我使用Enum获取下拉值: class Enum { public enum Fields { AssignedTo = "Assigned To", CloseReason = "Close Reason", CustomerId = "Customer ID", CustomerName = "Customer Name", CompanyID = "Company ID"

在C#中,我使用Enum获取下拉值:

class Enum
{
    public enum Fields
    {       
        AssignedTo = "Assigned To",
        CloseReason = "Close Reason",
        CustomerId = "Customer ID",
        CustomerName = "Customer Name",
        CompanyID = "Company ID",
        CompanyName = "Company Name",
    }
}
当我构建解决方案时。我收到错误:无法将类型“string”隐式转换为“int”


我已经删除了双引号,但仍然显示相同的错误。我做错了什么?

这在c语言中是语法无效的#

在c中创建字符串枚举需要解决方法#


它给出此错误是因为默认情况下,枚举希望您为枚举内的字段分配一个整数值

public enum Fields
{       
    AssignedTo = 1,
    CloseReason = 2,
    CustomerId = 3,
    CustomerName = 4,
    CompanyID = 5,
    CompanyName = 6
}
如果跳过赋值部分,默认情况下,它将开始赋值从整数0开始的字段。

在C#string中不允许使用枚举类型

引用自MSDN

批准的枚举类型有byte、sbyte、short、ushort、int、, uint、long或ulong


If必须进行某种转换(即使用[DisplayName]属性)才能在下拉列表中使用enum。

我不确定这是否是因为您试图向enum显示字符串,然后是因为enum仅使用int 16和32,因此我们必须创建一个扩展名,使其显示字符串,然后使用int值调用它

using System.Reflection;

  public static class EnumExtensions
{

    public static string DisplayName(this Enum value)
    {
        FieldInfo field = value.GetType().GetField(value.ToString());

        EnumDisplayNameAttribute attribute
                = Attribute.GetCustomAttribute(field, typeof(EnumDisplayNameAttribute))
                    as EnumDisplayNameAttribute;

        return attribute == null ? value.ToString() : attribute.DisplayName;
    }
}

public class EnumDisplayNameAttribute : Attribute
{
    private string _displayName;
    public string DisplayName
    {
        get { return _displayName; }
        set { _displayName = value; }
    }
}
class Enum
  {
         public enum Fields
{       
    [EnumDisplayName(DisplayName = "Assigned To"
    AssignedTo,
    [EnumDisplayName(DisplayName = "Close Reason"
    CloseReason,
    [EnumDisplayName(DisplayName = "Customer ID"
    CustomerId,
    [EnumDisplayName(DisplayName = "Customer Name"
    CustomerName,
    [EnumDisplayName(DisplayName = "Company ID"
    CompanyID,
    [EnumDisplayName(DisplayName = "Company Name"
    CompanyName ,
}
}

我认为您不想使用enum作为下拉列表。尝试查看字典、数据表或其他结构。如果你能详细告诉我们你到底想做什么,也许我们能帮上忙

编辑:下面是一个使用
列表
作为
组合框

List<string> dsList = new List<string>();
dsList.Add("Assigned To");
dsList.Add("Close Reason");
dsList.Add("Customer ID");
dsList.Add("Customer Name");
dsList.Add("Company ID");
dsList.Add("Company Name");

comboBox1.DataSource = dsList;
List dsList=new List();
dsList.Add(“分配给”);
添加(“关闭原因”);
添加(“客户ID”);
dsList.Add(“客户名称”);
dsList.Add(“公司ID”);
dsList.Add(“公司名称”);
comboBox1.DataSource=dsList;

此外,您还可以根据要向用户显示的选项动态更改列表

该语法是从何处获得的?您不能使用带有字符串值的枚举,请使用constantsIn c#(与Java不同),您可以为枚举值设置字符串。枚举值只能是数字(int16,int32)这是我的一段代码..另请参见:我有4个下拉选项。。例如,如果我使用public const string AssignedTo和下拉选项,那么它会显示其他下拉选项的值,这些选项可能也不相关。如果我在Enum中给出这个,它会限制该选项。例如,如果我使用Close Reason,我应该只看到Close Reason的下拉值,而不是其他值。。我正在尝试这个逻辑。仍然不确定您到底想做什么,但我在我的答案中添加了一个示例-您可以尝试使用列表作为控件的数据源。希望它能把你推向正确的方向。