相关疑难解决方法(0)

我的枚举可以有友好的名字吗?

我有以下内容 enum

public enum myEnum
{
    ThisNameWorks, 
    This Name doesn't work
    Neither.does.this;
}
Run Code Online (Sandbox Code Playgroud)

enum带有"友好名字"的s 不可能吗?

c# enums

170
推荐指数
7
解决办法
15万
查看次数

用静态字段切换语句

假设我有一堆静态字段,我想在交换机中使用它们:

public static string PID_1 = "12";
public static string PID_2 = "13";
public static string PID_3 = "14";

switch(pid)
{
    case PID_1:
        //Do something 1
        break;
    case PID_2:
        //Do something 2
        break;
    case PID_3:
        //Do something 3
        break;
    default:
        //Do something default
        break;
}
Run Code Online (Sandbox Code Playgroud)

由于C#不允许在开关内部使用非const语句.我想了解这种设计的意图是什么.我应该如何在c#中执行上述操作?

.net c# static switch-statement

8
推荐指数
2
解决办法
1万
查看次数

索引切换语句,或等效?.net,C#

我想构建一个接受字符串参数的方法,以及一个我想根据参数返回特定成员的对象.所以,最简单的方法是构建一个switch语句:

public GetMemberByName(MyObject myobj, string name)
{
   switch(name){
     case "PropOne": return myobj.prop1;
     case "PropTwo": return myobj.prop2; 
   }
}
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但我最终可能会找到一个相当大的列表...所以我很好奇是否有一种方法,没有编写一堆嵌套的if-else结构,以索引方式实现这一点,以便匹配字段通过索引找到而不是通过开关掉落直到找到匹配.

我考虑使用a Dictionary<string, something>来快速访问匹配的字符串(作为关键成员),但由于我想访问传入对象的成员,我不确定如何实现.

  • 我特意试图避免反射等,以便实现非常快速.我可能会使用代码生成,所以解决方案不需要小/紧等.

  • 我最初正在构建一个字典,但每个对象都在初始化它.所以我开始将它移动到一个方法,可以根据键 - 一个switch语句查找值.但由于我不再编入索引,我担心调用此方法的连续查找会很慢.

  • SO:我正在寻找一种方法来结合索引/散列查找(如字典使用)的性能与返回传入对象的特定属性.我可能会将它放在用于它的每个类中的静态方法中.

c# dictionary switch-statement

6
推荐指数
3
解决办法
1152
查看次数

相同的案件条件

我正在将一些VB.NET代码转换为C#,因为我对它更熟悉,它可以帮助我更快地解决问题.但是,我遇到了这个代码,这不是VB.NET中的错误 - 但将其转换为C#会产生编译器错误.

VB.NET代码

Select Case name
    Case "FSTF"
    .....
    Case "FSTF"
    .....
End Select
Run Code Online (Sandbox Code Playgroud)

C#转换代码

switch(name) {
    case "FSTF":
        ....;
        break;
    case "FSTF":
        ....;
        break;
}
Run Code Online (Sandbox Code Playgroud)

错误是:

Label'case"FSTF":'已经出现在这个switch语句中.

这里的解决方案是什么 - 这是否意味着在VB.NET代码中,第二个case语句只是一个虚拟 - 或者第一个是假的?

c# vb.net case-statement switch-statement vb.net-to-c#

6
推荐指数
1
解决办法
1842
查看次数

是否可以优化字符串上的大型开关?

我正在浏览我的图书馆的一位朋友,因为他询问了优化问题,我遇到了一段代码,如下所示:

long digit = 0;

switch (word) {
    case "zero":
        digit = 0;
        break;
    case "a":
    case "one":
        digit = 1;
        break;
    case "two":
        digit = 2;
        break;
    case "three":
        digit = 3;
        break;
    case "four":
        digit = 4;
        break;
    case "five":
        digit = 5;
        break;
    case "six":
        digit = 6;
        break;
    case "seven":
        digit = 7;
        break;
    case "eight":
        digit = 8;
        break;
    case "nine":
        digit = 9;
        break;
    case "ten":
        digit = 10;
        break;
    case "eleven":
        digit = …
Run Code Online (Sandbox Code Playgroud)

c# optimization

4
推荐指数
2
解决办法
922
查看次数

C#hashtable添加我自己创建的类

我从excel读取数据并确定我要执行的事件.

event既是我自己创建的类(登录和注销)

如果我读取的值= 1,则执行登录

如果我读取的值= 2,则执行注销

我使用switch但我的老板说我必须在Java中使用类似hashmap的东西.

在Java中,我可以编写如下代码:

table.Add("one",login.class);

那么如何使用c#将类添加到哈希表?

如何读取值并在哈希表中调用类方法?

c# hash foreach hashtable hashmap

1
推荐指数
1
解决办法
954
查看次数

C#,使用反射来获取switch中的每个案例名称

这是一个字符串文字switch语句的人为例子:

static string GetStuff(string key)
{
    switch (key)
    {
        case "thing1": return "oh no";
        case "thing2": return "oh yes";
        case "cat": return "in a hat";
        case "wocket": return "in my pocket";
        case "redFish": return "blue fish";
        case "oneFish": return "two fish";
        default: throw new NotImplementedException("The key '" + key + "'  does not exist, go ask your Dad");
    }
}
Run Code Online (Sandbox Code Playgroud)

你明白了.

我喜欢做的是通过反射打印每个案例的每个字符串.

我没有做足够的反思,知道如何直观地做到这一点.老实说,我不确定反思是否可以做这种事情.

可以吗?如果是这样,怎么样?

.net c# reflection switch-statement

1
推荐指数
1
解决办法
943
查看次数