亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

關于C# if語句中并列條件的執行

2024-07-10 13:24:25
字體:
來源:轉載
供稿:網友
C#語言中也是如此。當多個條件進行邏輯與操作的時候,判定會從表達式左邊執行到右邊,遇到任何一個為假,后面就都不做了。這很聰明,然而如果后面的條件會拋出異常,就是個潛在的問題。一旦之前的條件為真,就會繼續執行,執行到拋出異常的條件時,程序就爆了,哈哈。
我們可以寫個簡單的demo試試。下面的這段代碼是坑爹的,之后我會說明原因,但大家可以先從直觀的層面上理解一下,最后我會給出正確的測試方法。

復制代碼 代碼如下:


static void Main(string[] args)
{
DataSet ds = null;
if (false && ds.Tables[0].Rows.Count > 0)
{
Console.WriteLine("Fuck");
}
else
{
Console.WriteLine("Shit");
}
if (true && ds.Tables[0].Rows.Count > 0)
{
Console.WriteLine("WOW");
}
else
{
Console.WriteLine("KAO");
}
Console.ReadKey();
}


這段代碼乍看沒問題,并且在運行時也給出了我們期望的結果,即第一段語句輸出Shit,不拋出異常(當前面為false,后面會拋異常的ds.Tables[0].Rows.Count > 0就不做),而第二段語句因為之前是true,所以要執行對dataset的判斷,所以拋出異常。但如果用reflector反編譯程序集,就會發現,編譯器已經把上面的代碼優化成了下面這種形式,我們的if語句中寫死的true和false已經被閹割掉了,所以并不能說明if語句執行的問題。

復制代碼 代碼如下:


private static void Main(string[] args)
{
DataSet ds = null;
Console.WriteLine("Shit");
if (ds.Tables[0].Rows.Count > 0)
{
Console.WriteLine("WOW");
}
else
{
Console.WriteLine("KAO");
}
Console.ReadKey();
}


其實,如果你仔細觀察,在輸入這段代碼的過程中,VS就已經提示if (false && ds.Tables[0].Rows.Count > 0)中,后者是不可達的。這是即時編譯的效果。既然即時編譯說后面的代碼不可達,就意味著不可達的代碼會在編譯期被切掉。因此,剛才我們在上面看到的編譯結果也就是自然的事情了。
同樣,如果你直接把1 == 0, 1 == 1這樣的條件拼上去的話,編譯器也會發現的。所以我們要找一種不會被編譯器發現的寫法,要讓我們的條件判定代碼只能在運行時執行,而不是編譯時被調整。比如下面這種:

復制代碼 代碼如下:


static void Main(string[] args)
{
DataSet ds = null;
int i = 0;
int j = 1;
if (i + j == 0 && ds.Tables[0].Rows.Count > 0)
{
Console.WriteLine("Fuck");
}
else
{
Console.WriteLine("Shit");
}
if (i + j == 1 && ds.Tables[0].Rows.Count > 0)
{
Console.WriteLine("WOW");
}
else
{
Console.WriteLine("KAO");
}
Console.ReadKey();
}


我們再來執行,發現這次的結果是真正意義的滿足了我們的目的,說明了當多個條件進行邏輯與的時候,C#的執行機制:

關于C# if語句中并列條件的執行

寫這篇文章的意義,是為了讓大家在寫程序的時候,注意條件中可能發生異常的地方。比如我們模擬String.IsNullOrEmpty()。
在or關系中,只要有一個true,整個表達式就是true了。但如果你讓可能引發異常的語句先于之后會返回true的語句執行,就會爆。
比如這樣寫的話會爆,因為判斷Length的前提是得有個string:

復制代碼 代碼如下:


public static bool IsNullOrEmpty(string str)
{
if (str.Length == 0 || str == null)
{
return true;
}
return false;
}


關于C# if語句中并列條件的執行

 

這樣寫就正常:

復制代碼 代碼如下:


public static bool IsNullOrEmpty(string str)
{
if (str == null || str.Length == 0)
{
return true;
}
return false;
}


關于C# if語句中并列條件的執行

微軟是這樣寫的,碉堡了!

復制代碼 代碼如下:


public static bool IsNullOrEmpty(string value)
{
if (value != null)
{
return (value.Length == 0);
}
return true;
}


上面這段代碼可以用reflector打開mscorlib中的System.String找到~
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产中文精品字幕自在自线| 欧美激情视频在线| 亚洲激情在线观看视频免费| 国产日韩换脸av一区在线观看| 国产精品视频网站| 性欧美视频videos6一9| 国产精品精品国产| 亚洲桃花岛网站| 亚洲天堂av在线免费观看| 深夜福利亚洲导航| 国产精品欧美一区二区三区奶水| 奇门遁甲1982国语版免费观看高清| 欧美精品日韩www.p站| 欧洲永久精品大片ww免费漫画| 欧美激情视频网站| 国产在线不卡精品| 亚洲跨种族黑人xxx| 亚洲人成网站在线播| 国产主播精品在线| 久久久久一本一区二区青青蜜月| 亚洲精品视频免费在线观看| 欧美日韩国产精品专区| 自拍偷拍亚洲精品| 精品免费在线观看| 亚洲电影免费观看高清| 少妇高潮 亚洲精品| 欧美午夜宅男影院在线观看| 国产丝袜一区二区三区| 97视频在线观看亚洲| 这里只有精品视频| 国产精品久久久久久久久久久久久久| 久久久亚洲福利精品午夜| 欧美黑人巨大xxx极品| 中国日韩欧美久久久久久久久| 亚洲影院在线看| 久久夜色精品国产亚洲aⅴ| 欧美成人免费全部观看天天性色| 欧美精品福利视频| 亚洲综合在线中文字幕| 精品视频www| 最近2019年好看中文字幕视频| 97精品国产97久久久久久免费| 精品国产美女在线| 九九九久久久久久| 2019中文字幕在线观看| 国产精品国产三级国产aⅴ浪潮| 欧美乱妇高清无乱码| 中文字幕日韩电影| 久久久久久久电影一区| 夜夜嗨av色综合久久久综合网| 夜色77av精品影院| 色综合91久久精品中文字幕| 亚洲国产精品va在看黑人| 亚洲欧洲午夜一线一品| 国内精品久久久久影院优| 亚洲性日韩精品一区二区| 精品美女久久久久久免费| 亚洲第一中文字幕| 亚洲精品成人久久| 3344国产精品免费看| 国产成+人+综合+亚洲欧洲| 成人黄色短视频在线观看| 成人av资源在线播放| 国产国产精品人在线视| 日韩av三级在线观看| 亚洲精品99久久久久中文字幕| 一个人看的www久久| 91免费国产网站| 中文字幕日韩av综合精品| 亚洲视频在线观看免费| 成人欧美一区二区三区黑人孕妇| 久久久免费观看| 日本成人精品在线| 国语自产精品视频在线看| 亚洲午夜国产成人av电影男同| 国产精品久久久久久久久借妻| 91老司机在线| 成人乱人伦精品视频在线观看| 97精品一区二区视频在线观看| 一区二区三区国产在线观看| 久久天天躁狠狠躁夜夜av| 琪琪第一精品导航| 深夜福利日韩在线看| 亚洲综合中文字幕在线| 成人激情在线观看| 91精品久久久久久久久不口人| 97视频在线播放| 538国产精品一区二区在线| 欧美性猛交xxxx乱大交蜜桃| 尤物99国产成人精品视频| 精品久久久久久国产91| 欧美高清视频一区二区| 国产欧美在线视频| 欧美另类第一页| 国产一区二区三区视频| 亚洲最新中文字幕| 911国产网站尤物在线观看| 亚洲欧美制服中文字幕| 日韩高清有码在线| 久久久在线视频| 日韩欧美第一页| 色噜噜国产精品视频一区二区| 青青久久aⅴ北条麻妃| 精品久久中文字幕| 精品亚洲一区二区| 亚洲精品永久免费精品| 亚洲天堂2020| 日韩福利在线播放| 日韩电影中文字幕在线| 91精品视频在线播放| 午夜欧美大片免费观看| 欧美色欧美亚洲高清在线视频| 国产精品福利网站| 欧美视频中文字幕在线| 91高清视频在线免费观看| 欧美激情精品久久久久久变态| 日本亚洲欧美成人| 欧美高清自拍一区| 欧美孕妇与黑人孕交| 欧美视频不卡中文| www.日韩av.com| 亚洲成人黄色在线| 久久久91精品国产一区不卡| 中文字幕亚洲天堂| 91精品国产九九九久久久亚洲| 亚洲激情第一页| 国产成人高清激情视频在线观看| 中文精品99久久国产香蕉| www.xxxx精品| 亚洲天堂视频在线观看| 久久精品免费电影| 亚洲电影第1页| 国内伊人久久久久久网站视频| 久久综合免费视频影院| xxxxx91麻豆| 色中色综合影院手机版在线观看| 国产亚洲精品一区二555| 88国产精品欧美一区二区三区| 最近2019中文字幕大全第二页| 国产成人精品免高潮费视频| 日韩av电影国产| 久久久av网站| 国产精品久久久久久久久久久久久久| 欧美午夜无遮挡| 欧美第一淫aaasss性| 国产91色在线|免| 欧美日韩成人在线视频| 国产精自产拍久久久久久| 日韩久久午夜影院| 亚洲91精品在线观看| 欧美精品在线播放| 日韩在线免费视频观看| 超薄丝袜一区二区| 国产精品久久久久久亚洲影视| 久久香蕉国产线看观看av| 国外成人免费在线播放| 亚洲xxxxx电影| 91精品国产91久久久| 日本久久久久亚洲中字幕| 欧美激情国产精品| 中文字幕精品www乱入免费视频| xxx一区二区| 日韩欧美极品在线观看| 久久国产精品电影|