标签为“Csharp”的页面如下
Post
關於C#內建類型的怪異設計(LeetCode:reverse string)
前言
先說一下我的背景,可能會比較了解為什麼我會這樣想。我自己學過C++和Java,這兩個都不算是完全物件導向。相對來說,另外一個蠻愛使用的Python就連基本型態也是物件。至於C#,因為一些個人喜好的因素,並沒有去好好學習。不過也有好一段時間幫朋友除錯,除ASP.NET的錯誤。
之所以能夠幫忙,或快速上手,應該也與C++、Java、C#三者的歷史有關。在C++之後,推出了一個更物件導向的程式語言:Java,最基礎的單獨單位是class
,並且在JVM上運行,號稱可以跨平台、跨設備;隨後,Microsoft為了與Java競爭,並推廣自家的.Net Framework,學習了Java的設計,推出了C#。(早期更是有J#)
基礎型別&基礎類別
所以,三個是很相像的,更重要的是在物件導向的概念上。所以會一個,基本上另外兩個也就應該容易上手。不過C++從C遺留下來的基礎型態int
、char
、float
以及struct
等等,註定讓它不那麼物件。Java可能也有類似歷史因素,而為了處理這樣問題,Java將所有基礎型態做了包裝,一一對應1。
※ Java基本型態對應的類別
Java中有兩個型態系統,基本型態與類別型態,使用基本型態目的在於效率,然而更多時候,會使用類別建立實例,因為物件本身可以攜帶更多資訊,如果要讓基本型態像物件一樣操作,可以使用Long、Integer、Double、Float、Boolean、Byte等類別來包裹(Wrap)基本型態。 –Source: https://openhome.cc/Gossip/Java/Wrapper.html
為什麼會突然覺得C#設計的有點怪?
這主要是最近寫到一題LeetCode,要做字元陣列的反轉。如果使用C#的話,需要使用Array的類別方法。
public class Solution {
public void ReverseString(char[] s) {
Array.Reverse(s)
}
}