木子屋 Dnawo's BLOG

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

👤 dnawo 📅 2009-09-01 👁 4838 👍 0 💬 0 🔄 来源:本站原创
先看两个例子:

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#则直接返回结果!

评论(0)

暂无评论。

验证码
评论需审核通过后显示
← 上一篇 什么是钩子函数 下一篇 → VB模拟键盘输入的N种方法