如何在选择案例语句中实现枚举

Posted

技术标签:

【中文标题】如何在选择案例语句中实现枚举【英文标题】:How to implement Enum in select case statement 【发布时间】:2014-01-07 18:33:32 【问题描述】:

我有一个包含许多项目的枚举,我想在 VB.NET 的 select case 语句中实现这些项目,就像我们在 c#.net 中所做的那样。

就像在 C#.net 中一样,我们只需键入 switch 然后按 Tab 键并键入 enum variable name 并按 enter 在 case 语句中自动输入 enum 的所有项。我在 VB.net 中寻找相同的方法,所以我不需要手动输入所有案例。

在 vb.net 中可以吗?

【问题讨论】:

您在询问 vb.net 中 switch 的等效代码 sn-p .. 是的@NiranjanKala 我正在寻找与我们在 c#.net 中使用的相同 VB.NET Switch Statement GoTo Case的可能重复 如果您真的需要,这是***.com/questions/820104/… 的副本。您可以尝试编写扩展程序,该扩展程序将使用反射获取类型并生成这样的代码,将其复制到剪贴板并粘贴。 不是骗子 - Neeraj 要求使用 sn-p 功能从枚举中快速插入 select case 语句,而不是如何在 vb.net 中编写等效的 switch case,您建议的骗子是关于. 【参考方案1】:

不幸的是,没有办法做到这一点。查看 C# sn-p for switch,你可以看到它执行了一个内置函数来获取 case 语句:

<Literal Editable="false">
    <ID>cases</ID>
    <Function>GenerateSwitchCases($expression$)</Function>
    <Default>default:</Default>
</Literal>

然而,VB sn-p 只定义了几个 Case Literals:

<Literal>
  <ID>Case1</ID>
  <Type></Type>
  <ToolTip>Replace with a valid value of the expression.</ToolTip>
  <Default>1</Default>
</Literal>
<Literal>
  <ID>Case2</ID>
  <Type></Type>
  <ToolTip>Replace with another valid value of the expression.</ToolTip>
  <Default>2</Default>
</Literal>

不幸的是,您无法定义要在片段内使用的自定义函数,因此您只剩下默认函数,并且 GenerateSwitchCases 似乎在 VB 中不起作用。这意味着您甚至无法定义自己的 Select Case sn-p 来执行相同的值。

我尝试过使用以下内容,但它似乎不想执行评估。无论如何,我怀疑我们最终会在每个案例的末尾加上:(这是 C# 表示法)。

<?xml version="1.0" encoding="UTF-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>Select Case Statement</Title>
      <Author>Microsoft Corporation</Author>
      <Description>Inserts a Select Case statement.</Description>
      <Shortcut>NewSelect</Shortcut>
        <SnippetTypes>
            <SnippetType>Expansion</SnippetType>
        </SnippetTypes>
    </Header>
    <Snippet>   
      <Imports>
      </Imports>
      <Declarations>
        <Literal>
            <ID>expression</ID>
            <ToolTip>Expression to switch on</ToolTip>
            <Default>switch_on</Default>
        </Literal>
        <Literal Editable="false">
            <ID>cases</ID>
            <Function>GenerateSwitchCases($expression$)</Function>
            <Default>Case Else</Default>
        </Literal>
      </Declarations>
      <Code Language="VB" Kind="method body"><![CDATA[Select Case $expression$
    $Cases$

End Select]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

查看MSDN,可以看到只有几个Snippet函数,而且都是C#的。

【讨论】:

感谢 Obsidian 的宝贵回复。

以上是关于如何在选择案例语句中实现枚举的主要内容,如果未能解决你的问题,请参考以下文章

如何在 BizTalk 自定义管道中实现下拉列表

如何在 PHP 中实现类似 Enum 的功能? [复制]

如何在 Kotlin 中实现 switch-case 语句

如何根据在模型级别定义的枚举字段在 Django Modelform 中呈现单选按钮选择?

JOOQ 和 TimescaleDB - 如何在 JOOQ 中实现基本的 time_bucket 语句

如何在 Fortran 派生类型或类中实现类型绑定写入语句输出