相关疑难解决方法(0)

为什么'&&'而不是'&'?

为什么更&&喜欢&||更喜欢|

我问过多年来一直在编程的人,他的解释是:

例如,在中if (bool1 && bool2 && bool3) { /*DoSomething*/ },bool1必须是真实的,以便bool2在继续之前测试哪个必须为真bool3,等等.如果我使用单个&而不是测试的顺序,即使所有这些都必须是真的进展到下一行,为什么它至关重要?

注意:我想指出我是幼儿的编程,这不是一个严肃或紧迫的问题.更重要的是理解为什么事情应该以某种方式而不是另一种方式完成.

c# operators

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

C#预处理器指令中运算符的优先级是什么?

如果我有一段用C#编写的代码包装在一个#if指令中,那么什么(如果有的话)优先权应用于可能在该指令中使用的任何布尔运算符?

换一种说法:

#if DEBUG || MYTEST && PLATFORM_WINDOWS
// ... Some code here
#endif
Run Code Online (Sandbox Code Playgroud)

这将简单地从左到右评估为

#if (DEBUG || MYTEST) && PLATFORM_WINDOWS
Run Code Online (Sandbox Code Playgroud)

同样,愿意

#if PLATFORM_WINDOWS && DEBUG || MYTEST
Run Code Online (Sandbox Code Playgroud)

被评估为

#if (PLATFORM_WINDOWS && DEBUG) || MYTEST
Run Code Online (Sandbox Code Playgroud)

或者&& vs ||有一些优先顺序吗?

编辑:要清楚,我很清楚我可以自己运行代码来测试它,而且我有.我正在寻找一个给我正式的答案 - 对文档等的参考,这可以让我更深入地理解指令的基本机制.我想知道是否存在特定的预期行为,或者这是否纯粹是未定义的行为.

c# operator-precedence c-preprocessor

7
推荐指数
2
解决办法
1123
查看次数

我想了解AND(&&)运行时异常

今天大家好,我正在努力制作API.当我看到C#编译器的不同行为时,我感到很困惑.让我解释:

我得到例外:

If(userLoginModel.UserId>0)
{
//do something
}
else{
//do something
}
Run Code Online (Sandbox Code Playgroud)

例外:{"对象引用未设置为对象的实例."}

是的它是空的; 但如果写:

if (userLoginReturnModel != null && userLoginReturnModel.UserId >0)
{
//do something
}
else
{
//do something
}
Run Code Online (Sandbox Code Playgroud)

此代码没有抛出任何异常.

注意:我的问题是为什么编译器没有在第二个代码上抛出任何异常,因为如果存在&& condition,当编译器检查userLoginReturnModel.userId> 0时,那么这也需要抛出异常,因为object为null.而且我们知道两种情况都会被检入.任何答案都有很好的解释.

c# exception-handling compiler-errors nullreferenceexception

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