比较VB.NET的And和C#的&&

先看两个例子:

VB.NET:
Function condition1() As Boolean
    Response.Write("condition1")
    Return False
End Function

Function condition2() As Boolean
    Response.Write("condition2")
    Return True
End Function

If condition1() And condition2() Then
    Response.Write("success")
Else
    Response.Write("fail")
End If
'结果:condition1 condition2 fail

C#:
private bool condition1()
{
    Response.Write("condition1");
    return false;
}

private bool condition2()
{
    Response.Write("condition2");
    return true;
}

if (condition1() && condition2())
    Response.Write("success");
else
    Response.Write("fail");
//结果:condition1 fail

可见,当第一个条件为Flase时,VB.NET仍会再判断第二个条件,而C#则不理会第二个条件,直接返回结果。当第二条件依赖于第一个条件时,VB.NET语句结构得稍加修改,否则程序可能出错:

'当cookie不存在时,程序出错:未将对象引用设置到对象的实例。
If Not (Request.Cookies("url") Is Nothing) And Request.Cookies("url").Value = "www.mzwu.com" Then
    'code ...
End If

正确的写法:

If Not (Request.Cookies("url") Is Nothing) Then
    If Request.Cookies("url").Value = "www.mzwu.com" Then
        'code ...
    End If
End If

C#则比较简洁:

if (Request.Cookies["url"] != null && Request.Cookies["url"].Value == "www.mzwu.com")
{
    //code...
}

VB.NET的Or和C#的||也有类似的结果,当第一个条件为True时,VB.NET仍会判断第二个条件,而C#则直接返回结果!

上一篇: 什么是钩子函数
下一篇: VB模拟键盘输入的N种方法
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 4179
发表评论
登录后再发表评论!