C#

C#_時間測定

関数呼び出してから戻るまでを測定したいなど。 ※Stopwatch クラスは、高解像力パフォーマンスカウンターがサポートされていれば使う。サポートされていなければ、システムタイマ ( System.Windows.Forms.Timer のこと? ) を使う。 高解像力パフォーマンス…

C#_割り算と掛け算の結果がおかしい

結論 int 型どうしの計算は小数点以下が切り捨てられる。 経緯 int / int * 100 の結果が 0 となる。int / int * 100.0 で試しても同様。 int a = 2; int b = 3; Console.WriteLine(a / b * 100); //0 と出力結果 2 / 3 = 0.6666 と電卓ではなる。しかし、C#…

C#_Chart でグラフ作成

コードで生成したデータをグラフに描画する。タイトルや凡例、グラフの色の変更などは後で。 前提知識 Chart には Series というグラフ・データのコレクションがある。 グラフの種類やプロットする時はこのメソッドを使用する。 コレクション:多数のオブジ…

C++/CLI_ ref とは

C++/CLI のカテゴリーが登録できない。C++ [ / ] ではじかれる。 結論 参照クラス ( マネージクラス ) は ref で宣言する。 マネージクラス ( C ++/C LI ) を作成すると、[ public ref class HogeClass ] と ref がつく。この ref は マネージクラスですよ、…

値型と参照型 ( 構造体 と クラス )

値型 変数には直接値が格納。 ex )変数 A の値を変数 B へ代入した時、値がコピーされて渡される。変数 A が持っている値、変数 b が持っている値、と実体は 2 つある。 参照型 変数には「実体がどのにあるのかという情報」が格納。実体は別の場所 ( ヒープ …

C++ の DLL 作成 (Ver プロジェクト)

※ C # から使う。 下記手順ではC ++ のクラスはまだ作っていない。C # から C++ で書いた関数を呼び出すために仲介者として C ++/CLI のクラスを作っている。 C ++ のクラスを作成したい場合、C ++/CLI のクラスを作成する際には[ マネージ ] にチェックを入…

C#_0埋め(ゼロパディング) 追記

書式指定をよく忘れる。 (123.987).ToString("Xy"); X が書式指定子。書式指定子:表示形式を指定するためのもの。 y が精度指定子。桁数を表す。 ※書式指定子は大文字でも小文字でもOK。 Format Specifier:書式指定子 FS 意味 説明 例 結果 C 通貨 精度指…

CLI と CLR

分からなくなる。 C L I:共通言語基盤 ( Common Language Infrastructure )C L R:共通言語ランタイム ( Common Language Runtime ) C L I M icrosoft 社の「 M icrosoft.Net 」のプログラム実行環境の仕様。M icrosoft.NET:動作環境を提供するシステム基…

CTSとは

共通型システム Common Type Systsem プログラム言語に依存しない言語共通のデータ型を提供する為の仕組み。 中間言語 ( MSIL ) ならびに共通言語ランタイム ( CLR ) の中核となる機能。 C# のデータ型もこの共通型システムを基盤としている。 スタックメモ…

C++/CLIとは ( 追記 )

Managed C ++ の後継言語。 Managed C ++ とは .NET Framewor k は Microsof t が設計した、共通中間言語( Common Intermediate Language / CIL ) と呼ばれる、言語を実行する仮想マシン 環境 ( ランタイム ) のこと。 ネイティブシステムを抽象化するシステ…

Visual Studio_ソースのウィンドウを縦に分割

C#

横しかできないと思っていたが、よく読んだら方法が記載してあった。 ショートカットで操作するなら 1.「 Alt + W 」を押しつつ「 N 」 2.「 Alt + W 」を押しつつ「 V 」 1.で分割したいソースの新規ウィンドウが立ち上がる。2.で垂直タブが作成され…

C#_Image と Bitmap の違い

System.Drawing.Image ベクタ画像、ビットマップ画像問わず、画像を扱う為のクラス。png、jpg、gif 等、さまざまな画像形式ファイルを読み書きできる。 ベクタ形式:画像を円や直線などのような幾何学的な「図形」の集まりとして表現する形式。 ビットマップ…

C#_画像を保存

PictureBox に 表示されているイメージを保存。Bitmap でも同様。bmp.Save でOK。 //using System.Drawing.Imaging; 必要 pictureBox1.Image.Save(@".\test.jpg", ImageFormat.Jpeg); Save ( ) 第一引数:保存先のファイルパス。第二引数:保存する画像形式…

C#_テキストファイルから読み込んだデータの型変換

ファイルを読み込み変数に代入しても、それは String 型。int 型に変換して代入したい。 下記のようなファイルを読み込んで、型変換し変数へ代入するコード。 //using System.IO; 必要。 using (StreamReader st = new StreamReader(@"パス\ファイル名.txt")…

C#_二次元 List と List の配列

List<int> listA = new List<int>();List<int[ ]> listB = new List<int[ ]>();List<List<int>> listC = new List<List<int>>(); List<int>[ ] listZ = new List<int>[n]; の違いについて。 箱は List 型List<int> → 中に入っている小箱は int 型List<int[ ]> → 中に入っている小箱は int 型の配列List<List<int>> → 中に入っている小箱は int</list<int></int[></int></int></int></list<int></list<int></int[></int[></int></int>…

C#_自動でスクロールバーを一番下に持ってくる

動的にpanel の中にコントロ ールが増えていき、スクロールする領域が増えた時、自動で一番下にバーの位置を設定。 ソース //スクロールをpanel1の底へpanel1.AutoScrollPosition = new Point(panel1.AutoScrollPosition.X, panel1.Height + panel1.Vertical…

C#_スクロールバーの連動

Panel 1 ~ 4 のどれか一つの Panel のスクロールバーを動かしたら、他のスクロールバーも連動して動くようにする。 Panel 1 ~ 4 のプロパティにあるイベントのアクション「Scroll」でスクロールされたら呼ばれるメソッド名を入力。下では panel_Scroll と…

C#_abstract とは

・abstract キーワードで宣言する。 ・abstract 宣言されたならば、派生クラスで必ず実装。 ・派生クラスにて足りない機能を実装した上で、インスタンスを 生成しなくてはならない。 抽象クラス インスタンス化できないクラス。他のクラス ( 派生クラス ) の…

C#_拡張メソッド

静的メソッドをインスタンスメソッドと同じ形式で呼び出せるようにしたもの。 特徴 前置き記法である静的メソッドを後置き記法でかける。 あたかも新しいクラスにメソッドを追加したかのように見せる。 定義側:第 1 引数の前に this を付ける。 利用側:イ…

C#_Panel 設置の順と Dock 設定

※ デザインからの設定。 Panel を設置する時 ・Panel は設置した順に Dock プロパティに準じて 親コントロ ール領域を埋めていっている。 ・設置できるのは未使用領域の箇所。 とイメージしながら行っている。 ex ) 以下のような Panel 配置にしたい時、どの…

C#_Panel と Dock

Panel Form を分割し、部品( コントロ ール )のグループ化ができる。自身の中に部品を組み込むことのできる。Group Box と違い、周辺部は線で囲まれない。 ※ Panel 内に部品を配置した場合、 部品の Location (0, 0)は Panel の右上頂点となる。 ※親 Panel …

C#_Skip( n ).Take( m )

配列から、指定した要素を取得する時のメソッド。 配列.Skip( n ).Take( m ).ToArray( ); 配列 n 番目までの要素を飛ばし、 m 個分の要素を取得する。 ※ 前提:using System.Linq; 必要。 ex ) int[ ] ary = new int[ ] { 10, 11, 12, 13, 14, 15, 16, 17, 1…

C#_構造体に明示的なパラメータのないコンストラクタを含めることはできません の意味

( 自分が )探しやすいように構造体の記事からまるまるコピペ。 どういう意味かというと、 各構造体には、オブジェクトをゼロに初期化する既定のコンストラクタが既にある。したがって、構造体に対して作成するコンストラクタでは 1 以上のパラメータを受け取…

C#_構造体とは

関連性のあるデータをひとくくりにして名前を付け、「型」にしたもの。 struct hoga{ int itemA; double itemB; char itemC[10]; } J ava はC ++をベースに設計された。 C ++ のいらん部分をばっさり捨てたのがJavaの長所。 Jav aが切り捨てた中に構造体があ…

C++ と C# と C++/CLI

C ++ C 言語の拡張として開発されたプログラミング 言語。C 言語との互換性がある。故に開発で一緒によく使われている。C ++を使うためには、C 言語の知識は必須。 標準C ++・ネイティブC ++ (上記の C ++ のこと) C 言語とネイティブC ++ がプログラミング …

C#_GetEncoding( ) の引数

SJIS を指定したいのだが、"SJIS"でいいのか、"sjis"なのかと迷うので。 下記リンク先、「備考」に記載されている表の 「Code page」か「Name」を指定する。 https://msdn.microsoft.com/ja-jp/library/system.text.encoding(v=vs.110).aspx どちらでも、OK …

C#_StreamWriter と AppendAllText の速度

良さげな記事を見つけたので、memoという名の引用。 1 ファイルに書き込む時、StreamWriter の方が断然早い。 StreamWriter は 5 ~ 10 ミリ秒。 AppendAllText は 34000 ミリ秒。 AppendAllText は、このメソッドを呼ぶ度にファイルのオープンとクローズを …

C#_テキストファイルへの簡単な書き込み ( WriteAllxxx と AppendAllText )

ファイルを開く ( 作成 )、内容を書き込む、ファイルを閉じるの 処理を1 つのメソッドで済ませる。 メソッド 説明 File.WriteAllText 既存の内容を完全に削除して、新たに書き込む。 File.AppendAllText 既存の内容を残したまま、末尾に内容を追記する。 Fil…

C#_テキストファイルの簡単な読み込み (ReadAllxxx)

ファイルを開く、読み込む、閉じる を一つのメソッドで可能としているのが、 ReadAllText と ReadAllLines。 ReadAllText:テキストファイル全体を一つの文字列に読み込む。 ReadAllLines:各行を要素とする配列として読み込む。 abcdefABCDEFghijkGHIJK ex)…

C#_テキストファイルの読み込み ( StreamReader )

下記のようなCSVファイルを読み込む。 a, b, c, d, e, fA, B, C, D, E, Fg, h, i, j, kG, H, I, J, K ※テキストファイルがUTF-8 の場合、第二引数の Encoding を省略できる。 //ファイルの読込みusing (StreamReader sr = new StreamReader(@"ファイルパス\…

C#_対応する括弧にジャンプするショートカットキー

ctrl + ] 指定行へのジャンプは ctrl + g サクラエディタだと、ctrl + j こちらから。 公式ドキュメント ↓ にテキスト移動ショートカットキー一覧が載ってた。 https://msdn.microsoft.com/ja-jp/library/ms366755(v=vs.90).aspx http://kiracchi.com/2012/0…

C#_switch 文

・受け取った値の結果を元に、実行処理を変えたい時に使用する。 ・switch 中で使える変数は、整数型 or 文字列型 のみ。 ・条件が 多分岐なら、 if 文でなく switch 文を使用する。 ( 自分的には、4 分岐以上なら使おうかと) 多分岐では、 if 文より switch…

C#_実行ファイルとDLL

本当のメモ程度。 ・実行ファイルや DLL はビルドされるごとに 「 bin\Debug 」or「 bin\Release 」に作成される。 ・DLL が作成されるのは、 C# のコードと C++/CLI で書いたライブラリが存在する場合。 bin (binary data): コンピュータが見て分かるデー…

C#_パスを指定しない時のディレクトリ

パスを指定しないとカレントディレクトリになる。 カレントディレクトリはどこか、というと下記のパス。 このパスに、実行ファイルが作成される。 ※ x64 bit 版 プロジェクト作成場所 \ プロジェクト名 \ プロジェクト名 \ bin \ or プロジェクト作成場所 \ …

C#_名前空間と using ディレクティブ

とある名前空間の型を参照したい時は以下の様に書く。 名前空間.型名 ※ C# では名前空間を指定せずに、クラスを利用することはできない。 ex) System.Math.Pow(2, 3); using ディレクティブ 名前空間.型名 と明示的に指名した場合を、完全限定名という。Syst…

C#_名前空間とは

同じ名前のクラスが存在した時、名前の衝突を回避するための仕掛け。 また クラスを種類ごとに分けて管理するするための仕掛け。 ex) 部署 会社に佐藤さんが複数人いる場合、社内便で「To 佐藤さん」とあて名を書いても どこの佐藤さんかわからない。 「To …

C#_Form の内側サイズを取得、設定

Form や PictureBox などの Control には外サイズと内サイズがある。 ウィンドウ領域 :クライアント領域 + 非クライアント領域 クライアント領域 :自由に Control を配置できる領 非クライアント領域:タイトルバー、境界線 サイズ取得 クライアント領域 i…

C#_int 同士の計算結果が小数点付きにならないので

double 型に変換する。または 1.0 をかける。 ex ) int a = 1;int b = 3; double x = (double)a / b; //または double x = 1.0 * a / b; ちなみに int と double の計算結果は double になるので、問題なし。 double 型 変数に代入しているから、double にな…

C#_プログラム内からイベントハンドラを呼ぶ

Click の場合 button1_Click( ) メソッドをプログラム内で呼び出すときは、下記を使う。 button1.PerformClick(); ただし、CanSelect プロパティが True であることが必要。 例えば、Visible プロパティが False だとCanSelect も False になり使用できない…

C#_using( )とは

言われるままに使っていたので。調べた。 using のスコープを抜けると、自動的に確保したリソースを解放してくれる。 -- もう少し詳しく ↓ -- ・using でインスタンス化されたオブジェクトは、 using スコープを抜けると解放される( 自動で Disposeしてくれ…

C#_NetOffice シート名変更、シートの追加

シート名変更 sheet.Name = "シート名"; シート追加 book.Worksheets.Add( Before, After, Count, Type ); Afterでシート追加する時、第一引数指定なしを意味するType.Missing が必要。 Count を省略すると 1。 Type を省略するとワークシート( xlWorksheet …

C#_NetOffice セルへの書き込み

シートを取得して書き込むセルを指定する。 書き方は二通り。 シート.Cells[ 行番号, 列番号 ].Value シート.Range( " セル番地 " ).Value sheet.Cells[3, 1].Value = 1; sheet.Range["A3"].Value = 100; 下記はbook新規作成 ver。 sheet の取得・セル書き込…

C#_NetOffice ファイルの読み込み

インスタンスを作成までは新規作成と同じ。 読み込みは book を Opne 。後は保存して終了すれば完了。 using (var excelApp = new NetOffice.ExcelApi.Application()){ //book追加 var book = excelApp.Workbooks.Open(@"ファイルパス\ファイル名.xlsx"); //…

C#_NetOffice Excelの作成と保存

インスタンスを作成し、bookを追加したならば新規に作成される。 処理後に、保存して終了すれば完。 using (var excelApp = new NetOffice.ExcelApi.Application()){ //book追加 var book = excelApp.Workbooks.Add(); //書き込みなどの処理 //保存 book.Sav…

C#_NetOffice のインストール

NetOffice というライブラリを使用してC# で Excel を操作する。 インストール手順 メニューバーの「ツール」をクリック。 「NuGet パッケージマネージャー」の「ソリューションの Nuget パッケージの管理」をクリック。 「参照」タブをクリックし、検索ボッ…

C#_form の OK ボタン Cansel ボタン設定

子フォーム( form2 )にOK ボタンやCansel ボタンを設定する方法。 つまり、以下において form2 のDialogResult を設定する方法。 親フォーム(form1)の関数内form2.ShowDialog() == DialogResult.OK デザインのプロパティで設定 ソースで設定 button2.DialogR…

C#_form.ShowDialog

form1.ShowDialog(); フォーム1 を開いて待機状態。 form1.ShowDialog() == DialogResult.OK フォーム1 を開き、フォーム1 でOK ボタンが押されるまで待機状態。 押されたら閉じる。 以上。

C#_Timer の使い方 ( スレッドについて )

Windows.Forms.Timer は、別スレッドから呼ぶと動かない。 では、何故動かないか。 ans 実行に必要なメッセージループ ( シングルスレッド処理 ) は メインスレッド上で動いているから。 もう少し詳しく。 Timer を利用するには、イベントハンドラ呼び出し (…

C#_小数点の桁数指定

四捨五入される。 int a = 50.123456879; a.ToString("f4");//50.1235 String.Format("{0:f4}", a);String.Format("{0:0.0000}",a);//50.1235 F または f:Float (浮動小数点数)を表す書式指定子。 String.Format("{0:f4}", a);はstring str = $"{a:f4}"; //…

C#_Forms.Timer の使い方

Windows.Forms.Timer の使い方。 用途は、 ループが完了するまで特定の間隔で実行するプロシージャ( 処理 )などを 作成したい時に使用。 Timer は 3 種類ある。 精度 同期 / 非同期 Windowdフォームでの利用 Windows.Forms.Timer 低 同期 ○ Threading.Timer …