2009-01-26 18 views
0

目前,我有基本的C++和PHP技能。 但是,我想切換到C#和ASP(用於Web部件)。 爲什麼?你會問。 因爲我有機會很容易地學習C#(包括OOP編輯)到一個相當先進的水平。 因爲我讀過ASP與C#非常相似,我正在考慮學習它。我是否限制了C#和ASP?

那麼,有很多東西不能在C#中完成?什麼樣的東西? ASP的問題。

回答

7

限制的C#(和,由協會,.NET):

  • 不是一個真正的系統級語言 - 一般不用於編寫驅動程序等好(說到這,有喜歡的Cosmos有趣的項目。 )
  • 除Windows以外的其他平臺的有限支持。 Mono做得很好,但它與.NET本身並沒有什麼不同(相比之下,在多個平臺上同時發佈的Java相比)。
  • 只有作爲非託管語言運行的選項是第三方選項--ngen會「預先JIT」您的代碼,但它仍然在.NET框架下運行。真正的C#被設計成在虛擬機中運行,並進行垃圾收集。
  • 有些人不喜歡缺乏確定性破壞,這意味着C++ RAII技術不起作用。 (取而代之的是,您依靠GC進行內存管理,而IDisposable接口用於非內存資源。using聲明使這更容易,但它不是一個完美的解決方案。)
  • 該語言在某種程度上是微軟的心血結晶。如果MS決定放棄它,我認爲它不會進一步發展,並很快失去對新開發的支持。話雖如此,我不希望MS很快就放棄它。
  • 直到C#4出來,它沒有太多的支持後期綁定。你可以用反射來做,但這有點痛苦。即使使用C#4,它仍然是一個基本靜態的語言,但它的動態工作方式確實有幫助。
  • 目前沒有太多支持不變性。特別是,C#3引入了一些新特性(自動屬性,集合初始化器,對象初始化器),這些特性使編寫可變類型變得更加容易 - 但對於不可變類型,沒有相應的功能可用。 C#4中的命名參數和可選參數在這方面應該有所幫助,但是更多的支持是值得歡迎的。 C#3使代碼更加容易實用,但這確實需要不變性。
  • 對於桌面應用程序開發,您基本上可以選擇WinForms和WPF(Windows Presentation Foundation)。後者是更新且更好設計的IMO,但在這兩種情況下,您可能會很好地看到託管應用程序和寫得很好的Win32應用程序之間「輕鬆」的區別。在啓動時尤其如此,而框架正在加載,並且大量的UI代碼正在被打亂等。我個人認爲這不是很大的障礙,但是...
+0

這取決於它與之相比。 – 2009-01-26 08:43:54

1

那麼,你有來區分ASP(現在稱爲傳統ASP)和ASP.NET(我想你可以稱ASP只是新版本,但有點令人困惑)。現在。 ASP.NET是一種技術,您可以使用任何.NET語言(如VB.NET或C#)編寫Web應用程序。我不會說有很多你可以在C#中做的事情,不能在其他語言中使用。這是圖靈完成。

我認爲學習C#是一個好主意,因爲它是一種非常流行的語言,並且知道另一種語言不會傷害到你。當然,你必須意識到你也將學習獨立於C#的.NET Framework。

2

除了其他受訪者的評論之外,另一個考慮因素是託管.NET應用程序通常比託管PHP應用程序更昂貴,因爲各種MS許可證成本。這對你來說可能是也可能不是問題。

0

.Net在企業市場上不斷增長,但C#仍然是一種靜態的,類型安全的,基於編譯的語言。儘管MS正朝着動態語言(比如Iron Ruby)前進,但將來Common Language Runtime(.Net的核心)將成爲動態語言運行時的類型安全包裝,但現在開發範例是完全不同的。

由於您提到了ASP.Net,未來您將面臨兩種選擇:ASP.Net Web Forms(經典平臺)和ASP.Net MVC(基於模型 - 視圖 - 控制器) Ruby On Rails的結構更接近平臺。

相關問題