Posted at

C#のことを自分なりにまとめてみた

コンパイル言語

パラダイム:オブジェクト指向

型付け:強い静的型付け


アプリケーションが実行される仕組み

Javaの実行環境とよく似ている


  1. C#のソースコードをC#コンパイラが共通中間言語(Javaでいうバイトコード)へとコンパイルする

  2. コンパイルされたアプリケーションは共通言語ランタイム上で動作する仮想マシン(JavaでいうJVM)で実行される

  3. 仮想マシンでは共通中間言語をネイティブコードに翻訳し、OSを通してCPUで実行される


特徴


Windowsアプリにつよい


  • Microsoft謹製

  • 豊富なWindowsAPI

  • nugetというパッケージ管理システムでライブラリもたくさんある

  • 同じくWIndowsアプリに強いVB.netよりもサンプルが多い

  • Windows向けデスクトップアプリ作るならほぼ一択


Linqという強力な配列処理機能がある


  • メソッド記法によって可読性の高い配列処理ができる


Web開発


  • ASP.netを使用することでWeb開発、MVC開発が可能


MVVM開発


  • WPFによる強力なBinding機構でMVVM開発が可能


クロスプラットフォーム開発


  • Unity


    • ゲーム開発もできる!



  • Xamarin


    • iOSも作れる!(ただしビルドにはOSX環境が必要)



  • Mono


    • Linux環境の開発もできる!




高機能なIDEによる補助で開発スピードが速い


  • VisualStudioの高度な入力補完機能によって、基本的な.Netの名前空間のフレーズだけ入力すればある程度の開発ができる

  • プロジェクト全体に対する変数名、クラス名一括変更等ができる


    • 変更漏れによる手戻りが起こりにくい




共通言語基盤上の仮想環境で実行される


  • 同じ仕組みで実行されるVB.Netで書かれたライブラリも参照できる

  • プラットフォーム非依存で実行できる環境が構築されつつある


    • Monoとか




まとめてみた感想


  • Runtimeの対義語がCompiletimeということを知れた。

    Runtimeで一つの単語だと勘違いしていて意味がよくわからないな~とか思ってたけどただ「実行時」と直訳すればよかったのですね。


  • 2年ほど.netの環境に触れていたけどいざまとめてみるとなかなか難しい。他言語を実務で使えれば比較できてわかりやすいのかも


  • 技術選定をするためにはもっと深くまで掘り下げないといけないのだろうという感覚