hakeの日記

Windows環境でプログラミングの勉強をしています。

C#

PowerShell - C#で記述したオブジェクトを使用する

こちらで使用している内容の再確認。 C#のソースを埋め込んで、定義したクラスをオブジェクトとして利用する。 Add-Type -TypeDefinition @' using System; public class MyClass { public int Data {set; get;} public void PrintInstance() { Console.Writ…

C# - コマンドライン環境での外部アセンブリの参照方法

Json.NETを試した時のメモ。 本家サイトから入手し、展開したNewtonsoft.Json.dllを適当なフォルダの置く(例:c\:foo) /libおよび/referrenceオプションを付けてコンパイルする。 csc.bat program.cs /lib:C:\foo /reference:Newtonsoft.Json.dll ソースに…

C# - LINQ

Enumerableなオブジェクトに対して様々な加工が可能である。面白いのは組み合わせて使用できること。 注意点としてはReserveメソッドのみ自身を書き換えること。試した範囲では他のメソッドは新規のEnumerableなオブジェクトを生成した。

C# - 引数 - 値渡しと参照渡し

メソッドの引数を参照渡しで行う場合は、仮引数だけでなく、実引数側にも ref をつける。これはメソッドの引数にしたことで、メソッド側から書き換えが発生する可能性のあることを明示する為である。 メソッドの結果を引数経由で呼び出し側に渡す用途の場合…

C# - 引数 - 規定値/名前付き引数/可変長引数

メソッド定義の仮引数に規定値を付けると、メソッド呼び出し時にその引数を省略することができる。ただし仮引数の並びで、規定値有りの引数の後ろに規定値無しの引数を置くことはできない。また、メソッド呼び出し時に 仮引数名 : 値とすることで仮引数の順…

C# - foreach文とyield

IEnumerable<T>型のメソッドを定義して、その処理中に yield return 値; を記述することで、IEnumerable<T>オブジェクトを生成することができる。 IEnumerable<int> MyEnumerable() { 処理; yield return 値; 処理; } この方法を利用したほうが、IEnumerable</int>…

C# - foreach文とIEnumerableインターフェース(ジェネリック)

ジェネリックに対応させるには、昨日に対してIEnumerable<T>、IEnumerator<T>とIDisposableインターフェースを追加して継承する。 interface IEnumerable<T> { IEnumerator<T> GetEnumerator(); } interface IEnumerator<T> { T Current { get; } } GetEnumerator</t></t></t>…

C# - foreach文とIEnumerableインターフェース

foreach文において in の後に置けるオブジェクトはIEnumerableインターフェースを継承したクラスとなる。 IEnumerableは、GetEnumeratorメソッドでIEnumeratorオブジェクトを返す。 interface IEnumerable { IEnumerator GetEnumerator(); } GetEnumeratorメ…

C# - デリゲート

デリゲートとは要するにラムダ式をいれるデリーゲート型変数を定義して使用する仕組み。 デリゲート型は以下のように定義する。 delegate 戻り値型 デリゲート型(引数型と引数名リスト); あるデリゲート型で宣言したデリゲート変数は、その型で定義された戻…

C# - コレクション - List<T> その2

Listコレクションでラムダ式を引数にしているメソッドの使用例。

C# - ラムダ式とデリゲート型

処理をひとつの固まりとして扱うのがラムダ式。 (引数リスト) => {処理}; (引数リスト) => {処理; return 戻り値;};引数がひとつの場合や、処理が単文の場合は括弧を省略できる。また処理が単文の場合はreturnも省略できる。 ラムダ式は、デリゲート型の変数…

C# - コレクション - List<T>

配列のコレクション版。 の部分に型を指定してnewを行うことで、その型のコレクションとなる。

C# - 正規表現

基本的にはPowerShellやExcel VBAのものと同じ感じ。 マッチさせた結果は、MatchやMatchesのインスタンスに格納される。

C# - ディレクトリ内一覧の取得

Directoryクラスの静的メソッドを使用することで、全て、ファイルのみ、サブディレクトリのみと取得できる。またワイルドカードを使用して特定もののみを取得することも可能である。 全てを取得した場合は、ディレクトリかファイルかの区別はFile.GetAttribu…

C# - usingブロックの動作

昨日使用したusingブロックの動作の確認。 MSのドキュメントによると、using( )内で宣言できるのは、IDisposableインターフェースを継承したクラスになる。具体的には、void Dispose() メソッドを持っていることが必要となる。 usingブロックを抜ける際に、…

C# - テキストファイルのアクセス

テキストファイルに対して1行単位で読み書きする例。 エンコード(文字コード)は環境のデフォルトのものを取得して設定している。設定を省略した場合はutf-8となる。特定のエンコードを指定する場合は、GetEncodingメソッドを使用する。 通常はusingを使用…

c# - 例外処理(try / catch / finally / throw)

例外処理 例外処理は他の言語と一緒。tryブロックで例外が発生した場合、発生した例外の種類が書かれたcatchブロックの処理が実行される。finallyブロックは、例外の発生の有無に関わらず実行される。 例外の種類分けを行わない場合は、Exceptionでcatchする…

C# - インターフェース

メソッドやプロパティといった外部とのインターフェースの引数や戻り値の形式を予め決めておくもの。メソッドやプロパティの実際の処理は各クラスの定義で行う。 あるインターフェースを継承したクラスは、そのインターフェースで定義したメソッドやプロパテ…

C# - goto

基本的にgotoは使用しない方が良いが、多重ループからの脱出やswitch内での移動で使用することもできる。

C# - Null許容型とNull合体演算子

Null許容型 通常は参照型の変数にしかnullは代入できないが、値型の変数でnull値を使いたい場合に使用する。内部的にはnullか否かのフラグと値を保持する変数を持っていると思われます。 値を保持しているか否かの判断には HasValue プロパティを利用する。…

C# - クラス - インデクサ

インスタンスに要素番号をつけて配列の様にアクセスする方法。プロパティの配列版といったところ。 public 型 this[ int i ] { set{ } get{ } }インデックスの数は複数(多次元)でも可。 以下は内部で配列ではないものを外部には配列っぽく見せているサンプ…

C# - 配列

言語仕様としての配列、要素数が予め決まっている場合に使用する。要素数が未定の場合や追加/削除を行う場合はコレクションを使用した方が良い。 初期設定値を書かない場合は new 演算子を使用して宣言する。初期値がある場合は不要となる。多次元配列は[ ]…

C# - クラス - 抽象クラス

継承することを前提し、メソッドやプロパティの外観だけを記述するクラス。 クラス宣言に abstract キーワードを付加する。 abstract class クラス名また、定義するメソッドやプロパティにも absrtact キーワードを付加する。派生クラス側では override キー…

C# - クラス - 継承 その2

クラスの継承の続き 昨日の日記では、派生クラスのコンストラクタを実行すると暗黙的に基底クラスの引数なしのコンストラクタが実行されたが、これでは都合が悪いので基底クラスの特定のコンストラクタを実行する様にもできる。 public 派生クラス名(引数リ…

C# - クラス - 継承 その1

クラスの継承の継承を行う場合は class 派生クラス名 : 基底クラス名と記述する。 派生クラスのインスタンス生成時にコンストラクタが実行されるが、暗黙的に基底クラスの「引数なし」のコンストラクタが呼ばれる。実行は、最初に基底クラスのコンストラクタ…

C# - クラス - プロパティ

インスタンス変数にそのままアクセスするのではなくて、インスタンス変数そのものは隠蔽して手続きを介して一見インスタンス変数の様にアクセスする方法。 インスタンス変数に値をセットする処理は set{ } 、このとき外部から与える値は value とする。イン…

C# - クラス - コンストラクタとデストラクタ

new演算子によるインスタンス生成時に実行されるのがコンストラクタ、インスタンスの解放時に実行されるのがデストラクタ。コンストラクタは複数の引数パターンを記述可能で、new時に与えられた引数のパターンにより選択されて実行される。 また クラス名(引…

C# - クラス - 変数と定数

クラスが持つ変数としては、静的(クラス)変数とインスタンス変数がある。 静的変数は、クラスで共通して一つ持ち、インスタンス変数はインスタンス毎に同名の変数を別に持つ。 静的変数は「クラス名.変数名」と書き、インスタンス変数は「インスタンス名.…

C# - コーディング規約

をみつけたのでリンク。C# のコーディング規則 (C# プログラミング ガイド) | Microsoft Docs

C# - 変数の型を取得

変数の型は、GetTypeメソッドで取得できる。 PowerShellと同じ。 varで宣言した変数の型をチェックするときに便利。 using System; // 変数の型を取得 class MyClass {} class MyMain { static void Main(string[] args) { int d = 123; double f = 456.789;…