2014-07-22 27 views
2

爲什麼Console.ReadLine()不能在C#中存儲int/double?與C++中的「cin >>」相反,它可以根據變量存儲任何東西。爲什麼在C#Console.ReadLine()只存儲字符串?

+4

'Console.Readline()'只讀取一個字符串值。控制檯不知道你打算輸入什麼類型的值.C++也不允許這樣做,但是它確實允許你在類型不匹配的時候在腳下拍攝自己。 – paqogomez

+1

在C++中,當您嘗試將輸入「Hello World」讀爲int時會發生什麼? – David

+1

爲什麼問題很難,只有BCL團隊可以肯定地回答。但是控制檯輸入的使用比使用C/C++時少得多。只是不值得的努力。閱讀一行並處理它。 –

回答

2

控制檯本身就是文本輸入。 Console.ReadLine()(和其他方法)不會爲你解析,而是讓你解析自己。

這有一個優點,但是,因爲它可以更容易地清潔處理錯誤的情況下(如果你想在雙讀取,並在用戶鍵入「富」,例如)。

7

不同的語言,不同的庫,不同的API,不同的設計決策等

cin.operator>>傳遞要使用的輸出參數的引用,它的重載該參數的類型。 Console.ReadLine返回一個值並且不重載。

你可以編寫你自己的擴展方法Console,比如GetValue,它傳遞一個out參數,並且在你希望的類型上被重載。

0

因爲讀取字符串更安全。它可以防止C++中的錯誤數據出現錯誤,從而導致流的狀態變得錯誤。