C 作為一種靜態型別語言,為什麼會引入 var?

時間 2021-05-31 11:51:18

1樓:小蝶驚鴻

c#的var跟js之類的var不是一樣的,c#的var在編譯的時候會先幫你轉化成正確的型別然後再編譯。所以別被var這個名字騙了。

2樓:靈劍

C++也有auto了啊……var在C#中的作用是通過初始化表示式隱式推斷出乙個變數的型別,這種語言特性在非常多的流行的靜態型別語言中都支援了,比如C++,Go等

3樓:Ivony

最直接的原因當然是引入了匿名型別,沒var不行。

另外這個和靜態型別沒關係,說到靜態型別,C#甚至連dynamic都有了。

4樓:

就算你用var定義變數,它該是啥型別還是啥型別,然後你初始化變數的時候必須給初值,不然確定不了型別。

類似的還有C++11的auto

5樓:萬齊飛

C#既然是一種強型別語言,這就表示每個變數都有固定的型別。

所以當使用var宣告變數初始化時,編譯器會在編譯過程中根據合法的右值自動推理出變數所代表的型別。

var的產出主要為了實現lmabda表示式吧

6樓:對數醬

var 並不是說明型別不確定,更像是表明「我懶得寫這個型別是什麼了,編譯器你幫我瞧瞧」。在編譯時,var 所標識的變數的型別是確定的。智慧型感知還可以在沒編譯的時候就告訴你這個變數推斷出什麼型別,直接在下文使用var 的變數時,智慧型感知也會告訴你它有什麼成員

var s = "string";

s = s / 100; // 編譯時錯誤順便一提,C#裡確實是有編譯時不定型別的變數的,標識是dynamicdynamic s = "string"

s = s / 100; // 通過編譯,但執行時引發異常

為什麼C語言沒有String型別?

封禁讓我戒乎 語言實現了String,開發者可以省心很多。比C早的Pascal就實現了String,C沒實現,應該是語言的設計者沒有預見到字串操作的頻密。我喜歡Delphi,字串操作方便也是原因之一。 王璐銘 從語言的抽象度角度來說,C是底層語言,他解決的問題一般位於機器模型空間。但是,String...

為什麼C語言要有 int 作為 main 函式的返回值,而不是 void?

main函式的返回值會被shell捕獲,並存到乙個環境變數中。在一些main loop結構的嵌入式系統中,main的返回值沒太有意義,因為嵌入式系統的軟體不會結束 上電後一直執行 或者在一些練習性質的程式中,我們也不太關注main函式的返回值。linux系統有個設計理念 乙個程式只做一件事情,並把它...

為什麼說 粵語不只是一種口音,更是一種語言 ?

妚堆講廣話是國話嘅一種口音嘅,望過來即邊 汝麼是望得明我即枚回答,可以講出來是處嘅話,可以翻譯出來,而且可以講我聽即枚話合國話處屌是一樣嘅,處屌似,我就認廣話是國話嘅一種口音。 立場決定對錯 我是白話區的人。我十分反感粵吹和粵黑。我想對粵吹說 粵語確實跟某時期的古漢語有關係,但不是古漢語啊,就像你跟...