C 消除函式內部的if else 的簡單的方法

2022-09-09 13:24:24 字數 1119 閱讀 7227

在很多情況下,有些函式內部有太多的if-else,不太直觀,也難以維護。舉個簡單的例子:

class

program

public

static

void showerrormessage(string

input)

)";console.writeline(errormessage);

return

; }

else

if (input == "2"

) )";

console.writeline(errormessage);

return

; }

else

if (input == "3"

) )";

console.writeline(errormessage);

return

; }

else

if (input == "4"

) )";

console.writeline(errormessage);

return

; }

else

}}

在網路上有很多解決的方案,比如策略+工廠+ 配置等復合設計模式,或者反射,實現起來大都比較複雜,對於這麼乙個簡單的函式,有些殺雞用牛刀的感覺。下面介紹一種比較簡單的方法:

private

static dictionary> errormessages = new dictionary> },

},},

},};public

static

void showerrormessage(string

input)

console.writeline(

"unknow error!");

}

通過dictionary配置+func的方式,消除了過多的if-else結構,當需要增加一項邏輯判斷的時候,不需更改主函式showerrormessage,僅在dictionary中增加一項配置即可。

關於消除if else的簡單總結

if else是計算機語言中基本的分支語句,雖然很簡單,但可能會出現濫用的情況,如圖 這種標記判斷,巢狀成這樣 其實沒有必要巢狀 會讓別人覺得作者水平很低。可以看出,這些if僅僅是在判斷乙個變數,根據這個變數的值,返回不同的文字資訊。用switch也不是很好,那樣雖然理解起來容易一些,但仍然需要編寫...

C的內部函式和外部函式

函式本質上是全域性的,但可以限定函式能否被別的檔案所引用。當乙個源程式由多個原始檔組成時,語言根據函式能否被其它原始檔中的函式呼叫,將函式分為內部函式和外部函式。1 內部函式 如果在乙個原始檔中定義的函式,只能被本檔案中的函式呼叫,而不能被同一程式其它檔案中的函式呼叫,這種函式稱為內部函式。定義乙個...

C 函式內部定義函式原型?

在乙個函式內部這樣寫有意義嗎?首先說一下函式是不能巢狀定義的。其次這裡不是定義,只是個函式宣告。函式宣告的作用不用再問我了吧,c c 語法規定,定義在當前語句之後函式,是不能直接使用的,因為函式的查詢範圍是從第一句找到當行所在行,如果沒出現就會丟擲未解析符號的錯誤 你可以寫在全域性裡,也可以只寫在當...