vb.net Dictionary(Of String,Object)enum.getname()

时间:2017-11-24 17:21:16

标签: vb.net dictionary enums

我正在做一个VB.Net WinForm应用程序。这是C#的迁移。

在C#中,我有一个像这样定义的变量。

 private static Dictionary<string, ExportFormatType> dicExtensiones =
            new Dictionary<string, ExportFormatType> {
                        {".pdf", ExportFormatType.PortableDocFormat},
                        {".doc", ExportFormatType.WordForWindows},
                        {".xls", ExportFormatType.Excel},
                        {".rtf", ExportFormatType.RichText},
                        {".html", ExportFormatType.HTML40},
                        {".txt", ExportFormatType.Text}
                   };

我迁移到了这个......

   Private Shared dicExtensiones = New Dictionary(Of String, ExportFormatType) From
                            {{".pdf", ExportFormatType.PortableDocFormat},
                             {".doc", ExportFormatType.WordForWindows},
                             {".xls", ExportFormatType.Excel},
                             {".rtf", ExportFormatType.RichText},
                             {".html", ExportFormatType.HTML40},
                             {".txt", ExportFormatType.Text}}

现在我需要遍历所有ítems并获得每个值......

在C#中是这样的。

 List<String> lista = new List<string>();

            foreach (var item in dicExtensiones)
            {
                lista.Add(Enum.GetName(typeof(ExportFormatType), item.Value));
                lista.Add("*" + item.Key);
            }

我遇到的问题是我确实知道如何迁移

Enum.GetName(typeof(ExportFormatType), item.Value);

到VB.Net,因为VB.Net中不存在Enum.GetName

我该怎么做?

1 个答案:

答案 0 :(得分:4)

在VB中,Enum是一个关键字,也是一个类名,因此您需要在代码中转义它。转义语法类似于SQL:

[Enum].GetName

通过转义它,您告诉编译器您使用该名称而不是关键字引用标识符。例如,您可能还需要偶尔转义自己的类或变量名称:

Dim [property] As String = "belt, wallet with $50, casio watch"

Public Class [Class]
    Public Property Teacher As String
    Public Property Students As List(Of Student)
End Class

尽管在大多数情况下,最好只考虑使用不同的名称来避免它。