相关疑难解决方法(0)

C#的隐藏功能?

在我从这个问题中学到以下内容后,我想到了这一点:

where T : struct
Run Code Online (Sandbox Code Playgroud)

我们C#开发人员都知道C#的基础知识.我的意思是声明,条件,循环,运算符等.

我们中的一些人甚至掌握了Generics,匿名类型,lambdas,LINQ等......

但是C#粉丝,瘾君子,专家几乎都不知道C#最隐藏的功能或技巧是什么?

以下是到目前为止显示的功能:


关键词

属性

c# hidden-features

1475
推荐指数
230
解决办法
68万
查看次数

在C#中使用if/else和switch-case之间是否有任何显着差异?

在C#中使用switch语句与使用语句的好处/缺点是什么?if/else我无法想象除了你的代码外观之外还有其他重大差异.

是否有任何理由导致生成的IL或相关的运行时性能完全不同?

相关:什么是更快,打开字符串或elseif类型?

.net c# switch-statement

209
推荐指数
8
解决办法
7万
查看次数

C#switch语句中的变量声明

为什么在C#switch语句中,对于在多种情况下使用的变量,您只在第一种情况下声明它?

例如,以下引发错误"已在此范围中定义名为'variable'的局部变量".

switch (Type)
{
    case Type.A:
            string variable = "x";
                break;
    case Type.B:
            string variable = "y";
                break;
}
Run Code Online (Sandbox Code Playgroud)

但是,根据逻辑,如果类型为,则不应该触发初始声明Type.B.switch语句中的所有变量是否都存在于单个作用域中,是否在处理任何逻辑之前创建/分配它们?

c# switch-statement

117
推荐指数
4
解决办法
5万
查看次数

Switch Statement Fallthrough ...是否允许?

只要我记得我已经避免使用switch语句.实际上,我不记得它曾经进入我的意识作为一种可能的做事方式,因为它早在我的头脑中钻了它只不过是转换语句中的一个错误.然而,今天我遇到了一些在设计中使用它的代码,这让我立刻想知道社区中的每个人都认为有关switch语句的漏洞.

这是编程语言应该明确不允许的东西(比如C#,但它提供了一种解决方法),还是任何语言的功能都足以留给程序员手中?

编辑: 我没有具体到达我的意思.我经常使用这种类型:

    switch(m_loadAnimSubCt){
        case 0: 
        case 1: 
            // Do something
            break;
        case 2:
        case 3:
        case 4:
            // Do something
            break;
   }
Run Code Online (Sandbox Code Playgroud)

但是,我很担心这样的事情.

   switch(m_loadAnimSubCt){
        case 0: 
        case 1: 
            // Do something but fall through to the other cases 
            // after doing it.
        case 2:
        case 3:
        case 4:
            // Do something else.
            break;
   }
Run Code Online (Sandbox Code Playgroud)

这种方式只要大小写为0,1就会在switch语句中执行所有操作.我已经通过设计看到了这一点,我只是不知道我是否同意以这种方式使用switch语句.我认为第一个代码示例非常有用且安全.第二个似乎有点危险.

coding-style switch-statement

109
推荐指数
9
解决办法
10万
查看次数

C#如何使用带开关的枚举

我无法弄清楚如何将开关与枚举结合使用.你能告诉我我做错了什么,以及如何解决它?我必须使用枚举来制作一个基本的计算器.

public enum Operator
{
    PLUS, MINUS, MULTIPLY, DIVIDE
}

public double Calculate(int left, int right, Operator op)
{

    int i = (int) op;

    switch(i)
    {
        case 0:
        {
            return left + right;
        }

        case 1:
        {
            return left - right;
        }

        case 2:
        { 
            return left * right;
        }

        case 3:
        {
            return left / right;
        }

        default:
        {
            return 0.0;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

最终结果应该是这样的:

Console.WriteLine("The sum of 5 and 5 is " + Calculate(5, 5, PLUS))
Output: The …
Run Code Online (Sandbox Code Playgroud)

c# enums switch-statement switch-expression

64
推荐指数
3
解决办法
17万
查看次数

有没有一种简单的方法可以将数字转换为PHP中的单词?

在PHP中,有一种简单的方法可以将数字转换为单词吗?举例来说,2727.

php numbers

38
推荐指数
5
解决办法
5万
查看次数

如何在C#中为一个开关盒使用多个常量?

如何为开关盒C#使用多个常量?从概念上讲,我正在寻找这样的东西:

switch(n)
{
   case 1,2,3:     //????
   case 4:
   default:
}
Run Code Online (Sandbox Code Playgroud)

c#

7
推荐指数
4
解决办法
2657
查看次数

开关盒内部有条件断开

我想知道是否有可能在C#中的switch语句中有条件地突破一个案例.以下面的例子为例.

MediaStream photoMediaStream = null;
switch (photoSize)
{
    case PhotoSize.Normal:
        if (imageWidth >= NormalWidth && imageWidth % NormalWidth == 0)
        {
            photoMediaStream = photoMedia.GetStream(new MediaOptions {Width = NormalWidth});
            break;
        }
    case PhotoSize.Small:
        if (imageWidth >= SmallWidth && imageWidth % SmallWidth == 0)
        {
            photoMediaStream = photoMedia.GetStream(new MediaOptions {Width = SmallWidth});
            break;
        }
    case PhotoSize.Thumb:
        if (imageWidth >= ThumbWidth && imageWidth % ThumbWidth == 0)
        {
            photoMediaStream = photoMedia.GetStream(new MediaOptions {Width = ThumbWidth});
            break;
        }
}
Run Code Online (Sandbox Code Playgroud)

基本上,如果条件为真,我想做一些事情,然后突破switch语句,但如果不是,我只想进入下一个案例.

c#

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

为什么Java中的"切换"依赖于"中断"?

class switch1
{
    public static void main(String args[])
    {
        int a = 10;
        switch(a)
        {
            default: System.out.println("Default");
            case -1: System.out.println("-1");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道这个程序将执行"default"和"case -1"语句,因为在匹配条件之后没有指定break(在这种情况下是在"default"之后).

但我不明白的是

a)为什么break需要在switch声明中?

b)为什么它甚至执行无效匹配条件的语句(即执行"case -1"))如果它只是匹配的话?

java

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

交换机中的情况怎么能没有休息?

我最近继承了一些写得很差的代码.不幸的是,它是一个我们高度依赖的系统,并且没有时间重新编写它,所以我坚持维护它并重新编写片段.但是,今天我偶然发现这个包含一个开关的方法,其中一个case语句没有中断.这怎么能编译?我的理解是所有案件都必须打破,返回或转到.

private void ReadBadge_Activated(object sender, EventArgs e)
    {
        try
        {
            if (!bInHideMode)
            {
                // Set Button states
                btnCancelSwipe.Visible = true;
                btnCancelSwipe.Refresh();

                // Enable the Timeout timer
                //tmrTimeout.Enabled = true;

                // Refresh data
                switch (mManageAction)
                {
                    case "LogOnManager":
                    case "NormalUse":
                        lblSwipeStatus.Text = "Pass ID Badge\nNear The Reader";
                        break;
                    case "AddNewUser":
                        lblSwipeStatus.Text = "Pass ID Badge\nNear The Reader\nFor: " + mUserName;
                        break;
                    default:
                        lblSwipeStatus.Text = "Pass ID Badge\nNear The Reader\nFor: " + mUserName;
                        break;
                }
            }
        }
        catch (Exception ex)
        {
            MessageBoxNoClick.MessageBox2(ex.Message, …
Run Code Online (Sandbox Code Playgroud)

c# c#-4.0

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