首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 3.0 入門【Lambda 表達式】第四章(二):三元運算子改寫匿名方法失敗案例與 void 型別表達式困境

     編輯:關於C語言

List 10 原始匿名方法版本

Action<string> method = filename =>
{
    if (filename == null) Console.WriteLine("Hello!");
    else System.IO.File.WriteAllText(filename, "Hello!");
};

嘗試改用三元運算子(失敗)

Action<string> method = filename =>
    filename == null
        ? Console.WriteLine("Hello!")
        : System.IO.File.WriteAllText(filename, "Hello!");

編譯錯誤:

error CS0201: 僅 assignment/call/increment/decrement/new 可作語句
error CS0173: 無法確定條件運算式型別,void 無隱含轉換

核心問題:void 不是型別

  • 三元運算子要求第二/三運算元有共同型別。
  • Console.WriteLine 回傳 void,File.WriteAllText 回傳 void。
  • void 無法作為運算式型別參與型別推斷,導致整個條件運算式無型別。

這也揭示 void 回傳的運算式本質上難以組合,避免使用反而促使更清晰的語句本體寫法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved