相关疑难解决方法(0)

什么是失控开关声明的最佳替代方案?

我继承了一个包含一些巨大的switch语句块的项目,其中一些包含多达20个案例.什么是重写这些的好方法?

javascript c# refactoring switch-statement

10
推荐指数
3
解决办法
2万
查看次数

为什么编译器在这种情况下无法确定操作数的类型?

抓我的头.以下陈述有什么问题?

var EncFunc = (encrypt ? Encryption.Encrypt : Encryption.Decrypt);
Run Code Online (Sandbox Code Playgroud)

encryptbool,两个函数Encryption.EncryptEncryption.Decrypt具有相同的类型Func<string, string>,但它告诉我:

CS0173无法确定条件表达式的类型,因为"方法组"和"方法组"之间没有隐式转换

我已经经历过这个这个,但无法理解为什么编译器无法确定这两个函数的类型.

NB我知道这可以通过显式转换来修复.我对理解"为什么"部分更感兴趣.

c#

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

C#三元运算符无法正常工作

我有一个类的Moq模拟,我需要验证是否调用了某个方法.根据变量的类型,我需要检查方法是一次调用还是从不调用.

所以,这有效:

if (exception is ValidationException)
    mockRequestHandler.Verify(x => x.HandleException(exception), 
    Times.Once);
else
    mockRequestHandler.Verify(x => x.HandleException(exception), 
    Times.Never);
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用三元运算符,如下所示,但它似乎不起作用:

mockRequestHandler.Verify(x => x.HandleException(exception),
    (exception is ValidationException) ? Times.Once: Times.Never);
Run Code Online (Sandbox Code Playgroud)

我得到以下编译时错误:

无法确定条件表达式的类型,因为"方法组"和"方法组"之间没有隐式转换.

有什么简单的我可以忽略或三元运算符不能以这种方式使用吗?

c# moq ternary-operator

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