csharper さん プロフィール

  •  
csharperさん: C#の覚書
ハンドル名csharper さん
ブログタイトルC#の覚書
ブログURLhttp://sl03-csharp.sblo.jp/
サイト紹介文C#の覚書
参加カテゴリー
更新頻度(1年)情報提供57回 / 29日(平均13.8回/週) - 参加 2018/07/22 20:38

csharper さんのブログ記事

  • リンク
  • LINQとは、Language INtegrated Queryの略。直訳すると、言語統合問い合わせ意訳すると言語(C#やVisual Basicなど)のコード内に統合記述したクエリ。LINQではSQL文に似た構文によりクエリを記述することで、データベースなどさまざまなデータの集合から、データの検索や集計、取得などを行う事ができる。下記の例は3種類のデータの集合に対して、それぞれ15点を加点し、結果 610点以上の得点を選択したコードusing System;using [続きを読む]
  • イベント
  • イベント何かが起きたとき、通知する仕組み。using System;// 状況に応じてさまざまな処理ができるようにする。delegate void MyHandler();class TestBtn {// eventとつけることで、このクラスからのみ利用できる。 public event MyHandler CustomEvents; public void OnClicked() { //エラー回避のため、必要。 if (CustomEvents != null) { CustomEvents(); } }}// 上記の意味// TestBtnを したら、MyHa [続きを読む]
  • 匿名メソッドとラムダ式
  • デリゲートで定義したメソッドが1回しか使わないなら、そのメソッドに名前をつけるのは冗長となる。したがって、そうしたメソッド名を利用しているデリゲートも冗長といえる。その対応方法として、匿名メソッド、ラムダ式がある。●匿名メソッド●ラムダ式引数 記号 {処理} の順に記述処理が一つのときは処理の前後の{}を省略できる。ラムダ式も匿名性はある。using System;// 同様にデータ型を宣言delegate void MyDelType(); [続きを読む]
  • デリゲート(delegate)
  • delegateメソッドを割り当てる事ができる変数。1:まず、変数の型を宣言する。2:型宣言することで、どんなメソッドが登録できるかを示す。3:次に、初めて変数宣言する。4:どこかに2の条件を満たすメソッドがすでにあったり、作ったりする。5:3の変数に=演算子でメソッドを登録。6:3の変数の後ろに()をつけて実行できる。マルチキャストデリゲート上記5を複数行う。演算子は+=を使う。登録解除は、-=。意義委譲とも [続きを読む]
  • 自作の例外クラスを使った例外処理の設計
  • 1:例外が発生しそうなところをtryでくくり、条件分岐で自作の例外にthrowする。2:catch句で自作例外クラスのデータ型のeで捕らえる。3:eは、継承元の例外クラスのMessageなどのプロパティーを利用できる。using System;//自作の例外クラスの定義class MyException: Exception { public MyException(string message): base(message) { }}class MyApp { static void Division(int dividend, int divisor) { try { i [続きを読む]
  • システムの例外クラスを使った例外処理の設計
  • 1:例外が発生しそうなところをtryでくくり、その処理をキャッチで捕らえる。2:例外処理を作っていないときに、systemが例外をメッセージを出力している。例:FATAL UNHANDLED EXEPTION:System.DivideByZeroException:.......この場合、例外型 が DivideByZeroException で eという変数で捕らえる。3:eには、Messageなどのプロパティーが準備されているので、それらを利用することもできる。using System;class MyApp { [続きを読む]
  • 例外クラスを自作する
  • プログラムの実行中に、予期せぬ結果が生じたときに適切な処理をする。C#の機能ではないクラスを作る場合1:システムが用意しているExceptionを継承する。2:コンストラクターでメッセージを取得できる。3:引数を受けたら親クラスのコンストラクタ引数に渡す。class MyException: Exception { public MyException(string msg): base(msg) { }} [続きを読む]
  • エクセルとCSVの読み書き概要
  • javaから移植したnpoiを併用する。■エクセルデータを読み込み、変数へ。→npoiを利用。*注意点・データ型を意識して取得する。・エクセルのセルに式があった場合、式の計算結果を取得する。・取得データを加工する場合、加工の際に加える文字列と取得したデータに含まれている文字列が異なる意味を持つよう配慮する。■変数内のデータをCSVへ出力。→C#のcsvWriterオブジェクトのWriteメソッドを利用。(C#の機能)■CSVデータを読 [続きを読む]
  • 構造体
  • クラスに似ているが、クラスとは異なる。単純で小さな値(16バイト未満)を保持する際に利用する。・プロパティーがつかえる。・コンストラクタが無ければ、プロパティーは0初期化される。・メソッドがつかえる。・クラスとの違いは値型である事。using System;struct Coord { public int X { get; } public int Y { get; } public Coord(int x, int y) { X = x; Y = y; } public void GetCoordinate() { Console.Writ [続きを読む]
  • 名前空間
  • クラス名の衝突やクラスの分類に利用。usingを使わない場合は、インスタンス化する際に、namespaceから書く必要がある。namespace MyNameSpace { class Car { public void Drive() { Console.WriteLine("comfortable"); } }}class MyApp { static void Main() { MyNameSpace.Car celsior = new MyNameSpace.Car(); celsior.Drive(); }} [続きを読む]
  • ジェネリック(Generic)
  • 汎用化されたデータ型でクラスを作る通常は、型の種類ごとにクラスを設計しないとならないが
    、一つのコードで書くことができる。通常のクラスと比較■通常のクラスを使った場合(メソッド
    の引数にint型だけをとる場合)public class StandardList{ public void Check(int input) { }}class TestStandardList{ s
    tatic void Main() { StandardList listInt = new StandardList(); listInt.Check(1); }}■ジ [続きを読む]
  • クラス設計の意義
  • 共通の目的をもったデータ、そして同じく、共通の処理を集めたものがクラス。そして、本来 データ部分は適切な値がセットされるように注意してプログラムは作成される。不適切な値が入らないようにチェックすることが行われてきた。クラス化することで、この作業が非常に楽になる。データはprivate とし、データにアクセスする窓口をset や getに絞り込み、そこにチェック機能を書き込む。たとえて言えば、入国ゲートを一つに絞 [続きを読む]
  • メタ文字のエスケープ
  • メタ文字のエスケープメタ文字とは、特別な意味を持つ文字である。例えば、555n666は555と666 に改行が入るとプログラムは解釈する。こうした特別な意味をもつ、nがメタ文字。しかし、monthnumber の場合、 monthとumberの間に改行があるのではなく、改行することなく、そのままmonthnumberと表記したい。そんなときはエスケープ文字としてのを用いる。monthnumberとすると、表示するときはmonthnumberとなる。 [続きを読む]
  • 改行コード各種
  • 改行コードCR・・・Mac OS(バージョン9まで)。LF・・・UNIX系とMacOSX以降とエクセルのセル内改行。CR+LF・・・Windows。エディタで改行コードを表示モードにすると意味が分かりやすい。CR  : ←LF  : ↓CRLF : ?C言語系のエスケープシーケンス上記の順に、rn (new lineのnumber)rnとなる。 [続きを読む]
  • npoiでエクセルのセルを読み込むメソッド
  • Npoiでエクセルのデータ取得時に、セルのタイプによって取得メソッドが変わる。セルのタイプが式だった場合、式の計算値の結果を取得するようにしている。下記の例は、セルの値が、数値(日付型およびそれ以外)、文字列、式のいずれのかの場合にのみ対応するメソッドGetStringValueを作った場合。// 途中大幅に略(別途ワークブックのインスタンスwbInsなどを生成)private static string GetStringValue(ICell cell){ switch (cel [続きを読む]
  • インターフェース
  • クラスに対して必ず実装する機能を指定する仕組み。インターフェースにはメソッド、プロパティーを含める事ができる。特徴・メソッドは自動的にpublicになるので、publicをつける必要は無い。・overrideキーワードは不要。・クラスにいくつでも実装できる。・インターフェースそのものを継承できる。using System;interface Shara { void push();}//メソッドを実装したいクラスclass Camera: Shara { public void push() { Co [続きを読む]
  • 時間の文字列の書式指定
  • 下記はTimeSpan型のデータを0:00の書式で出力する例 private void Timer1_Tick(object sender, EventArgs e){ TimeSp
    an timeSpan = DateTime.Now - startTime; TextBoxTimer.Text = timeSpan.TotalSeconds.ToString("0.00");}*ちなみに上
    記はtimerであるが、Timer1.Stop();Timer1.Start();とすることで、上記のTimerオブジェクトに対する定期的
    な自動イベントを開始、終了する。 [続きを読む]
  • 抽象クラス
  • 継承される事が前提のクラスでnewできない。継承先で実装する場合、継承クラスで実装は不要。継承先で実装モレがあれば、エラーとなる。*開発規模が大きくなると利用するケースが多くなる。*インターフェースの利用が多いが、抽象クラスの理解は必要。using System;abstract class Computer { public abstract void getOsName();}class Nec: Computer { public override void getOsName() { Console.WriteLine("Windows"); } [続きを読む]
  • C#でcsvファイルの読み込み
  • C#であるが、同じ.net言語であるMicrosoft.VisualBasic に実装されているTextFieldParserが使いやすい。参照、つまりreferenceに対して、Microsoft.VisualBasicを追加する。プロジェクトを右 →追加→参照■以下コーディング名前空間を含めて下記のようにする。using Microsoft.VisualBasic.FileIO;using System;class Program { static void Main(string[] args) { using(var parser = new TextFieldParser(@"C: [続きを読む]
  • ファイルへの書き込み
  • よくある形using (StreamWriter stream = new StreamWriter(書き込みファイルのパス, true){ stream.WriteLine("書き込みたい文字列");}基本の流れ1:テキストファイルを開く、もしくは作成する2:テキスト内容を書き込む3:テキストファイルを閉じる上記の1:StreamWriterのインスタンス化。【変数名を決めてインスタンスを参照できるようにしている。】上記の2:インスタンスのメソッドで書き込み。上記の3:最後の閉じカッ [続きを読む]
  • インデクサ
  • クラスの一つのインスタンスに対して配列のようにアクセスできるようにするクラスの設計をインデクサと呼ぶいわゆるプロパティーの機能を使って作成する。using System;//インデクサ設計側のクラスclass Course { private string[] staff = new string[5]; public string this[int i] { get { return this.staff[i]; } set { this.staff[i] = value; } }}// Mainメソッドを持つ側のクラスclass MyApp { static void Main [続きを読む]
  • while文
  • 前判定型while文using System;class MyApp { static void Main() { var jj= 0; while (jj Console.WriteLine($"loop:{jj}"); jj++; } }}あと判定型while文while句の中は満たしていないが,上から実行されるため、10とだけ出力される。using System;class MyApp { static void Main() { var kk = 10; do { Console.WriteLine(kk); kk++; } while (kk }} [続きを読む]
  • for文
  • continue それ以降の処理を中止して次のループへbreak ループを抜ける下記の例なら、i=3のときは以下は実行されず次のループ。そしてi=6 でループをぬけるため、01245となる。using System;class MyApp { static void Main() { for (int i = 0; i if (i == 3) { continue; } if (i == 6) { break; } Console.WriteLine(i); } } [続きを読む]