プログラミング経験者が雑にC#入門をするリンク集(2019年版)
すでにプログラミングに関する知識はあるけどC#の経験は浅い・無いといった人のために入門をしながら本記事を書いていきます。
リファクタリングするのはいいけどC#的文化とかベストプラクティス的なもの学んだ方がいいんじゃないの?と思ったので。
なお、JavaとC++を経験している身で書いているのでその辺で知りえたところは省略しているかもしれません。
あと、途中まで書きながら思ったけどアレどこ行ったっけ?となったときに参照できるといいかも。
Microsoft Docsって充実しているのでは?
C# 関連のドキュメント - はじめに、チュートリアル、リファレンス。 | Microsoft Docs
ラインナップを見る限り、概念、開発手順、言語使用など網羅されてそうですね……っ!
勝手に自分なりのインデックスをつけながらリンクを張ってコメントをつけていきます。
対話型のチュートリアルなんかもありますが、こちらは初学者、文章を読んで覚えるのはちょっとつらい……、ちょっとしたことでも実践しながら学びたいという方向けかと思います。
私は文章で読んであーここはこっちの言語とはこう違うのねーとか考えながら進めたいタイプなのでチュートリアルはすべて飛ばします。
- 概要
- C# 言語と .NET Framework の概要 | Microsoft Docs
- C#や.NETがそもそもどんなものなのか?プログラミング関連用語が多数あるので初学者向けではない。別言語での経験者向け。
- C# 言語と .NET Framework の概要 | Microsoft Docs
- Visual Studioを使用したC#の開発
- Visual Studio自体が初めて、またはVisual Studioを触ったのは結構昔という方は一読してもよいかも。なぜか.NET Coreですが.NET Framework使い方はその点を読み替えればよいかと。(例えば、WPFのデザイナはCore向けにはまだ正式提供されていない。)
- Visual Studio 2017 での .NET Core を使用した C# Hello World アプリケーションの構築 - .NET Core | Microsoft Docs
- Visual Studio 2017 を使用して C# .NET Standard ライブラリを構築する - .NET Core | Microsoft Docs
- Visual Studio 2017 での .NET Core を使用した .NET Standard クラス ライブラリのテスト - .NET Core | Microsoft Docs
- Visual Studio 2017 での .NET Standard ライブラリの使用 - .NET Core | Microsoft Docs
- Visual Studio 2017 での .NET Core Hello World アプリケーションの発行 - .NET Core | Microsoft Docs
- C#の文法概略
- C# のツアー - C# ガイド | Microsoft Docs
- 本カテゴリ配下は全部読んでおいてよいと思います。ラインナップは下記。言語によって異なる最たるものだと思います。
- (プログラムの構造、型と変数、式、ステートメント、クラスとオブジェクト、構造体、配列、インターフェイス、列挙型、デリゲート、属性)
- C# のクラスとオブジェクト - C# 言語のツアー | Microsoft Docs
- クラスとオブジェクトのアクセシビリティは絶対に悩むので個別にリンク張っておく。
- C# のツアー - C# ガイド | Microsoft Docs
- C#での方法
- 方法に関する記事 (C# ガイド) | Microsoft Docs
- C#を使う場合にどのように行うか?要は逆引き的な。そこそこ使えそう。
- ファイル システムとレジストリ - C# プログラミング ガイド | Microsoft Docs
- プログラミングガイド内にあったけどジャンル的にはこっちかな。
- 方法に関する記事 (C# ガイド) | Microsoft Docs
- C#プログラミングガイドとリファレンス
- ここからが言語の詳細。今回はC#の言語仕様をマスタしたいわけではないので主要な個所をピックアップしていきます。
- 識別子名 | Microsoft Docs
- C# のコーディング規則 - C# プログラミング ガイド | Microsoft Docs
- これも言語ごとに結構違うので大事。ただ、後続の言語仕様を読んだ後のほうが理解できるかも。
- Main() とコマンドライン引数 - C# プログラミング ガイド | Microsoft Docs
- ファイナライザー - C# プログラミング ガイド | Microsoft Docs
- 部分クラスと部分メソッド - C# プログラミング ガイド | Microsoft Docs
- 部分クラスはGUIアプリ作ってると必要になりそう。部分メソッドの使い道はいまいちピンとこない。任意に設定できるコールバック関数的な感じに使うのかな。
- デリゲート - C# プログラミング ガイド | Microsoft Docs
- 関数ポインタのオブジェクト指向向け進化版という雑な理解をした。
- イベント - C# プログラミング ガイド | Microsoft Docs
- GUIプログラミングでは避けて通れないので。基本的にはイベントが発生した時の処理を書くことが多いはず。
- ジェネリック - C# プログラミング ガイド | Microsoft Docs
- よその言語でもあるよね。C++経験者はテンプレートとの違いは読んでおいた方がいいかも。
- 名前空間 - C# プログラミング ガイド | Microsoft Docs
- Javaでいえばパッケージ。ほんのり風味が違うので一読しておいた方がいいと思う。
- XML ドキュメント コメント - C# プログラミング ガイド | Microsoft Docs
- ドキュメント自動生成に使えるらしい。
- 例外と例外処理 - C# プログラミング ガイド | Microsoft Docs
- ざっと見た感じ他の言語と同じだと思う。
- C# でのコレクションの反復処理 | Microsoft Docs
- イテレーターですね。
- C# の統合言語クエリ (LINQ) | Microsoft Docs
- リストや配列に対してSQL的にアクセス出きるっぽい。ちゃんと知りたい。
- 言語リファレンス
- これも主要なものだけピックアップ。
- C# のキーワード | Microsoft Docs
- 予約語の一覧。
- C# 演算子 - C# リファレンス | Microsoft Docs
- 一覧だけ見てよくわからないのだけ見ればOKかな。
- 特殊文字
- $ - 文字列補間 - C# リファレンス | Microsoft Docs
- 文字列の結合とかはこっちを使うこととコーディング規約にありましたね。内部的にはコンパイル時にString.FormatかString.Concatに変換されるらしい。
- @ - C# リファレンス | Microsoft Docs
- 予約語を識別子に使うのはどうかと思うけど文字列に対して使うのは便利ですね。
- $ - 文字列補間 - C# リファレンス | Microsoft Docs
- C# プリプロセッサ ディレクティブ | Microsoft Docs
よくわかんなかったとこ、深堀しなかったこと、あえてリンクしなかったこと
この記事を作るにあたってリンクしていないページもほぼほぼ読んでいるのですが、ピンとこなかったトピックか今調べなくても大丈夫だろう……と判断したトピック。別途、調べておきたい。
- ステートメント関連
- yield?とか見おぼえないけどとりあえずいいかと流した。
- ダイナミック型
- 何に使うんだ?Objectじゃない理由は?
- 匿名関数とラムダ式
- 匿名メソッドまではぎりぎりわかる気がする
- 部分メソッド
- 何に使うの?
- デリゲート
- 雰囲気は分かった気がするけどもう少し知りたい
- インデクサー
- 何に使うの?
- アンセーフコード
- C#でもポインタが使えるらしい。ネイティブ関数を呼ぶときに使用とのこと。パフォーマンス向上する場合あり。危険なので基本的にはやめておくのが吉だと思う。
- タプル
- 長いので
- イテレーター
- なんかJavaと違うという印象を受けたので
- LINQ
- 奥深そうなのでこれだけでいろいろ掘り下げられそう。