勉強備忘録:ドットインストールC#入門
1.変数/定数宣言
1-1.宣言方法
・変数宣言:型 変数名
・定数宣言:const 型 変数名 =値;※値がないと宣言できない。
・var 変数名=値:型推論で型を自動で設定。
・型変換キャスト(変換後のデータ型)
1-2.型の種類
・文字列 string
文字列オブジェクトがメモリ領域上に確保され、
変数varには、その参照が格納される。
・文字 char
変数varがメモリ領域上に確保され、文字「a」のUnicodeが
変数varに直接格納される。
・整数
byte 範囲は0~255で、符号なしビット整数
short 範囲は-32768~32767で、符号付き16ビット整数
int 範囲は-2147483648~2147483647で、符号付き32ビット整数
long 範囲は-9223372036854770000~9223372036854775807で、
符号付き64ビット整数
・浮動小数
double 範囲は±5.0e-324~±1.7e308で、有効桁数15~16桁
float 範囲は±1.5e-45~±3.4e38で、有効桁数7桁
・論理値 bool(true or false)
2.文字列
・\n→改行、\t→改行
・string.Format
例:string.Format("こんにちは、{0}さん。今は{1}時です。", name, hour);
文字列補完式で書く。
$"こんにちは、{name}さん。 今は{hour}時です。"
・文字列を数値に変換する。
int.Parse(文字列)
3.配列
・宣言方法
int[] scores = new int[3]{10,20,30}
型推論も可。
・foreachで値を取得するときは、変数の型宣言を忘れない。
foreach(int score in scores){}
4.メソッド、引数
・static 戻り値の型 関数名(){}
・void 戻り値なし
・ラムダ式、戻り値のみの記載の省略あり。
static string greeting ()=> "Hi";
・引数も変数の型宣言忘れない。
static void SayHi(String name){}
デフォルト値の設定
static void SayHi(String name = "Taro"){}
呼び出すとき引数を指定することも可能。
SayHi(name:"Taro")
5.クラス
5-1.概要
・変数(フィールド)とメソッドを持つ。
User user = new User(あればコンストラクタに渡す引数);
5-2.オーバーロード
・引数が違う同名の関数やコンストラクタ。
元のコンストラクタ
public User(引数){}
オーバーロードしたコンストラクタ
public User():this("nobody")→元のコンストラクタを呼び出している。
5-3.サブクラス
・親クラスのコンストラクタを呼び出す。
public AdminiUser(string name): base(name){}
親クラスのメソッドを上書きする場合、
親クラスには、virtual 子クラスには、overrideをつける。
5-4.アクセス修飾子
・public→どこかれでも、protection→サブクラスから
private→自分のクラス内のみ
5-5.プロパティ
クラスフィールドは、privateにして、必要なときに取得する。
メソッドを書かず、プロパティでも定義できる。
public string Name{
get{return this.name;}
set{this.name = value;}
}
user.Nameなどで操作可能になる。以下のように省略も可能。
public string Name{get; set;} = "ME!"
5-6.インデクサ
・作ったインスタンスを配列として扱う。
クラス内で配列を宣言して、宣言した配列を操作。
private string[]members = new string[3];
public string this[int i]{
get{return this.members[i];}
set{this.member[i] = value}
}
5-7.staticフィールド
・インスタンスではなく、クラスで保持する。
クラス名.フィールド名と書く。
5-8.抽象クラスと具象クラス
・抽象クラスは、ほかのクラスに継承してもうらうことを前提にするクラス
で、それ自体をインスタンス化することはできない。abstractをつける。
継承する側のクラスは、具象クラス。メソッドにもabstractをつける。
継承する側で、メソッドを定義するときは、overrideをつける。
6.インターフェース
・特定の機能を実装するよう約束させるための仕組み。
interfase IShareable{
void share();
}
※関数は、自動的にpublicになる。
class User:IShareable{
public void share(){
}
}
※share関数がないとエラーが出る。
7.ジェネリック型
・汎用化されたデータ型でクラスをつくることができる。
class MyData<T>{
public void GetThree<T x>{
}
}
<T>で書くと、型は生成時に定義することを宣言。
呼び出すとき
MyData<string> mydata = new MyData<string>
8.名前空間
・整理するため、名前の衝突を避けるために使う。
namespace DotinstallNamespace{
クラスを定義
}
使用する際は、名前空間.クラス名とすればよいが、
一般的には、Using.名前空間と冒頭に記載する。
9.構造体
・クラスと似ているが、単純で小さな値を保持するのに適している。
値型は、構造体、列挙体で、
参照型は、クラス、配列、インターフェイス、デリゲート。
struct 名前{}で宣言。プロパティ、変数、メソッドは使えるが、
継承などはできない。
10.列挙型
・いくつかの定数をまとめて、一つの変数で扱いたい場合に使う。
switch-case文のcaseの値に使用されることが多くある。
enum Direction{ stay = 0, Right = 1, Left = -1}
値を使用しない場合は、0から、順番に整数が割り当てられる。
Direction.stayだと、stayが取得され、(int)で整数変換すると、
割り当てられた整数値が取得できる。
11.例外
・try{}catch(例外クラス 変数){}
・独自の例外を使用する場合は、Exceptionクラスを継承した独自の
例外クラスを定義する。
例外を発生させるタイミングで、"throw new 独自の例外クラス"
とし、catchする。
・finallyを定義すると、例外発生有無に関わらず実行する処理を
定義できる。
12.デリゲート
・メソッドを割り当てられる変数。メソッドを変数として扱える。
delegate void MyDelegate();
戻り値と引数なしの関数を宣言。
+=で追加、-=で削除。複数の関数が割り当てられているとき、
マルチキャストデリゲートという。
13.イベント
・イベントが起きた時の処理を登録するdelegateをEventHandlerと呼ぶ。
イベントハンドラーを定義する際に、eventとつけると、そのクラスから
のみ実行可能という制限を付けられる。
eventをつけると、+=で追加、-=で削除しかできない。
14.コレクションクラス
・Collectionクラスを使うには、名前空間にCollection.Genericを読み込む。
14-1.List
List<int> scores = new List<int>(){30,80.60}
add・count・foreachなど、メソッドやプロパティが使える。
配列は、要素の数があらかじめ決まっていて、Listは決まっていない。
配列は静的メモリ確保、Listは動的メモリ確保。
14-2.HashSet
・順番を持たない、かつ重複を許さないデータの集合。
含まれているものを調べるとき、Contains。
14-3.Dictionary
・キーと値でデータを管理する集合。
Dictionary<キーの型,値の型>
Dictionary<string,int> users = new Dictionary<string,int>(){{"taguchi",50},…}
・Keyでキーの値、Valueで値を取得できる。
・foreachを使うときの変数は、KeyValuePair型で扱う。
15.LINQ
・データの集合から取得したい情報を引っ張ってくるための仕組み。
・SQLのように書く方法とメソッドのように書く方法がある。
・名前空間System.linqを読み込む。
16.その他
・C#にも条件式あり。(条件式)? 新の場合:偽の場合
・匿名メソッド delegate{処理}で、書くこともできる。
・VSショートカット
コード整形:Ctr+K,Ctr+D
コメントアウト:Ctr+K,Ctr+C
17.感想
・C#でアロー関数的なものが出てきてびっくり!javascriptの勉強も
役立ったのでよかった。
・静的型付け言語のため、基本的に変数の型宣言を忘れないこと!
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?