Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在声明数组的元素号时,是否可以使用枚举?_C# - Fatal编程技术网

C# 在声明数组的元素号时,是否可以使用枚举?

C# 在声明数组的元素号时,是否可以使用枚举?,c#,C#,在创建菜单的过程中,我在代码中使用了以下内容。变量跟踪 当前顶部和子菜单标题: var topTitle = ""; var subTitle = ""; 我可以用使用以下枚举的数组替换它们吗 public enum MenuType { TopMenu = 0, SubMenu = 1 } 我假设我想要一个包含两个条目的字符串数组,但是我如何设置它然后引用它呢 使用my enum的数组内容?不适用于enum,enum将一个名称与一个int配对

在创建菜单的过程中,我在代码中使用了以下内容。变量跟踪 当前顶部和子菜单标题:

        var topTitle = "";
        var subTitle = "";
我可以用使用以下枚举的数组替换它们吗

public enum MenuType {
    TopMenu = 0,
    SubMenu = 1
}
我假设我想要一个包含两个条目的字符串数组,但是我如何设置它然后引用它呢
使用my enum的数组内容?

不适用于enum,enum将一个名称与一个int配对,这基本上是一种拥有一堆以下内容的奇特方式:

const int A = 0;
const int B = 1;
枚举的优点是可以将其放置在方法调用中,然后将方法的使用限制为仅使用在枚举中定义的常量值。它还增加了代码的可读性

要实现您想要的目标,您需要一个字典集

然后可以添加密钥对

Dictionary<String, String> titles = new Dictionary<String, String>();
titles.Add("topMenu", "Name of my top menu");
titles.Add("subMenu", "Name of my sub menu");
看看这是否能让你达到你想去的地方。键和值的类型可以是任何类型,这是一个非常有用的收集系统

哦,还有你的用法:

using System.Collections.Generic;

这对枚举不起作用,枚举将一个名称与一个int配对,这基本上是一种拥有一堆:

const int A = 0;
const int B = 1;
枚举的优点是可以将其放置在方法调用中,然后将方法的使用限制为仅使用在枚举中定义的常量值。它还增加了代码的可读性

要实现您想要的目标,您需要一个字典集

然后可以添加密钥对

Dictionary<String, String> titles = new Dictionary<String, String>();
titles.Add("topMenu", "Name of my top menu");
titles.Add("subMenu", "Name of my sub menu");
看看这是否能让你达到你想去的地方。键和值的类型可以是任何类型,这是一个非常有用的收集系统

哦,还有你的用法:

using System.Collections.Generic;

枚举值只是整数。可以像使用整数一样使用它们

因此,这样做是正确的:

public enum MenuType {
    TopMenu = 0,
    SubMenu = 1
}

string[] menuLabels = new string[]{"Name Top Menu", "Name Sub Menu"}:


menuLabels[MenuType.TopMenu] // A cast may be necessary here, not sure.

当然,这不是使用枚举的最佳方法,但它与使用switch语句一样好。

枚举值只是整数。可以像使用整数一样使用它们

因此,这样做是正确的:

public enum MenuType {
    TopMenu = 0,
    SubMenu = 1
}

string[] menuLabels = new string[]{"Name Top Menu", "Name Sub Menu"}:


menuLabels[MenuType.TopMenu] // A cast may be necessary here, not sure.

当然,这不是使用枚举的最佳方式,但它与使用switch语句一样好。

我定义了一个测试类
MenuTest
,它使用和:

或者,您可以对字符串数组使用extensions方法来执行从enun到int的转换:

public static string GetMenuByType(this string[] menu, MenuType type)
{
    int index = (int)type;
    if (menu.Length > index)
        return menu[index];
    else
        return null;
}
并使用它:

 string[] menu = new string[] { "topmenu", "submenu" };
 Console.WriteLine(menu.GetMenuByType(MenuType.TopMenu));

我定义了一个测试类
MenuTest
,它使用和:

或者,您可以对字符串数组使用extensions方法来执行从enun到int的转换:

public static string GetMenuByType(this string[] menu, MenuType type)
{
    int index = (int)type;
    if (menu.Length > index)
        return menu[index];
    else
        return null;
}
并使用它:

 string[] menu = new string[] { "topmenu", "submenu" };
 Console.WriteLine(menu.GetMenuByType(MenuType.TopMenu));

当然你可以。。。但你为什么要这么做?你打算如何使用它?在我看来,你应该用这些属性定义一个类,并将字符串分配给它们。我只是在想,完成一些事情并使用枚举会很好。类似于标题[顶部菜单]和标题[子菜单]的内容。也许我唯一有点困惑的是,在我可以使用它之前,我必须声明数组维数吗?但你为什么要这么做?你打算如何使用它?在我看来,你应该用这些属性定义一个类,并将字符串分配给它们。我只是在想,完成一些事情并使用枚举会很好。类似于标题[顶部菜单]和标题[子菜单]的内容。也许我唯一有点困惑的是,在使用之前,我必须声明数组维数吗?