相关疑难解决方法(0)

C#switch语句限制 - 为什么?

在编写switch语句时,在case语句中可以打开的内容似乎存在两个限制.

例如(是的,我知道,如果你正在做这种事情,这可能意味着你的面向对象(OO)架构是不确定的 - 这只是一个人为的例子!),

  Type t = typeof(int);

  switch (t) {

    case typeof(int):
      Console.WriteLine("int!");
      break;

    case typeof(string):
      Console.WriteLine("string!");
      break;

    default:
      Console.WriteLine("unknown!");
      break;
  }
Run Code Online (Sandbox Code Playgroud)

这里switch()语句失败,带有'一个预期的整数类型的值',case语句失败并带有'a expected value is expected'.

为什么会有这些限制,以及基本理由是什么?我看不出有任何理由switch语句具有只能屈从于静态分析,为什么在接通的值必须是完整的(即原语).理由是什么?

c# switch-statement

136
推荐指数
8
解决办法
10万
查看次数

.Net switch语句是哈希还是编入索引?

.Net 4(或任何先前版本)是否基于字符串对较长的switch语句执行任何类型的优化?

我正在解决潜在的性能瓶颈,因为一些长的switch语句在这些情况下寻找匹配的字符串,我一直认为这些是在线性时间内搜索的(或接近线性的,即不使用索引来快速找到匹配串).但这似乎是.Net可以优化的一个显而易见的领域,所以我想我会检查是否是这种情况.

这是我最近的一个衍生问题:索引切换语句,或同等的?.net,C#

.net c# switch-statement

46
推荐指数
2
解决办法
5306
查看次数

标签 统计

c# ×2

switch-statement ×2

.net ×1