C#

論理演算の使い道メモ

左シフトやら右シフトすれば bit 変換 ( 記事最後のヤツ ) できるのか疑問だったので調べた。コピペ。 ビット数が違うデータ同士の計算 10 bit と 12 bit で出力された同値の数を int 型変数 16 bit に入れると、以下のようになる。|| は論理和ではなくただ…

C#_ LockBits と UnlockBits メモ 02

メモ 01 の関数やプロパティ調べ。 LockBits ( Rectangle, ImageLockMode, PixelFormat ) Rectangle:ロックする部分を指定する Rectangle 構造体。 ImageLockMode:アクセスレベル ( 読み取り / 書き込み ) を指定する ImageLockMode 列挙体。ex ) ReadOnly…

C#_ LockBits と UnlockBits メモ 01

画像を扱う時に LockBits を使った方がいいらしい。ポインタに展開されている画像データを配列に入れて、変更して再度ポインタに戻す的な。 LockBits :Bitmap をシステムメモリにロックする。UnlockBits:システムメモリから Bitmap のロックを解除する。 -…

C++_PictureBox.Image に代入しスクロールをすると赤バツ の続き

C++ でもらった Bitmap^ を PictureBox.Image に代入しスクロールをすると赤バツ の続き。 cv::Ptr<IplImage> ipImag が、System::Drawing::Bitmap^ bmp = gcnew の時は生きているがスコープ抜けると解放されるのが原因。多分。浅いコピーだろうから深いコピーにしたか</iplimage>…

C#_C++ からもらった Bitmap^ を PictureBox.Image に代入しスクロールをすると赤バツ

OpenCV_画像を IplImage型 で読み込んで System::Drawing::Bitmap^ に変換 の続き。 Debug で動かしてたが、ネイティブコードのデバッグを有効にしていなかった。有効にすると下記のエラー。 Application.Run(new FormMain());読み取り中にアクセス違反が発…

C#_ PictureBox.Image のロック

赤バツに関係あるかと思ったがなさげ。 PictureBox1.Image = System.Drawing.Image.FromFile(@"./\test.bmp"); この方法で表示した画像ファイルはロックされ、削除できなくなる。Image プロパティで画像を表示している間は、その画像の削除・名前変更・上書…

C#_フォルダを指定してファイル名を取得

Directory.GetFiles とか覚えられん。 ※ デザインから folderBrowserDialog 設置済み if (folderBrowserDialog.ShowDialog() != DialogResult.OK) { return; } string folderPath = folderBrowserDialog.SelectedPath; string[ ] getFiles = Directory.GetFi…

C++ C++/CLI の配列の書き方

分からなくなる。 C++ int p[ 10 ]; int p[ ] = { 1, 2, 3 }; // 初期化 or int* p = new int[ foo ]; // 要素数を変数とする場合。int foo = 5; C++/CLI // unmanaged int* p = new int[10]; int p[ ] = { 1, 2, 3 }; // 初期化 // managed array< int >^ p…

C#_DisplayMember と ValueMember

「セレクトボックスに自作の Value と Key を設定したい」記事のソース解読。 DisplayMember コントロールに表示するプロパティを取得・設定する。既定値は空文字。 表示項目を ToString でなく、あるプロパティが返す値を表示したいのであれば、そのプロパ…

C#_セレクトボックスに自作の Value と Key を設定したい

DisplayMember と ValueMember をつかうもよう。 経緯 セレクトボックス ( コンボボックス ) の SelectedIndex は上から自動で採番されるので、Value に応じた値が欲しい。Memo:コンボボックスは文字を直接入力することが出来る。 ex) ※同じファイルに記述…

C#_オーバーライド virtual と override

基底クラスのメンバが隠蔽されている場合、どのメンバが呼び出されるかは変数の型 ( 静的な型 ) によって決定する。 だが、ほとんどの場合メソッドの呼び出しは動的に決定した方が都合がいい。動的な型 に基づいて呼び出されるメソッドを選びたい場合の記述…

C#_基底クラスの隠蔽

派生クラスで、基底クラスの public メンバと同名のメンバを再定義すると基底クラスのメンバが新しく追加されたメンバに隠れる。 派生クラスで基底クラスと同じシグネチャのメンバを宣言することを「基底クラスのメンバを隠蔽する」という。 基底クラスのメ…

C#_継承 と オーバーライド のMemo コード

virtual と override の使い方が分かっていなかった…。多態性とごっちゃになっていた。オーバーライドは親メソッドが上書きされる。多態性はオブジェクトが複数の型に属することを許す性質。 親クラス class BaseHoge { public BaseHoge() { Console.WriteLi…

Visual Studio_オブジェクト参照がオブジェクトインスタン​スに設定されていません

Debug がきかない ( Release のみ ) でコード書いていてこのエラーで悩む。 原因は、null を参照しようとして例外が発生している。 書いたコードをよく読んだら Null を参照してた。ソースいろいろ略。 Hoge = null; auto get = Hoge[0]; Debug だとNullRefe…

C#_TabControl 内の TabPage 順序を変えたい

自力で解決方法見つけたはずなのに忘れた。 デザインで TabControl を選択し、プロパティ [ Tabpages ] の右にある [ ... ] をクリック。 TabPage コレクションエディターが開かれるので、「 ↑↓ 」で順序替えやプロパティ値を編集などして OK 。 終わり。 ↓ …

Visual Studio_入力候補がでない

急にでなくなった。 Visual Studio を再起動する。 でた。無事解決。 こちらから。 http://yuzukimikado.blog.jp/archives/33212547.html 以上。

C#_Func<T, TResult> ( ラムダ式 ) 02

デリゲートの書き方変遷。ただのソースコピペ。 従来 FuncDelegate function = new FuncDelegate(hoge); delegate int FuncDelegate(int a); private int hoge(int a) { return a * a; } function(10); で 100 が返る。 C# 2.0 以降 new を用いずにかけるよ…

C#_Func<T, TResult> ( ラムダ式 ) 01

急に出てきたので調べた。 用意されたデリゲート。 ラムダ式復習の次に Func 記載。 ラムダ式 ラムダ式は匿名メソッドの記法簡略化。 ・delegate や { return } などの記述を省略できる。・型推論機構が働く。 ex ) // C# 2.0 まで delegate ( int n ) { ret…

C#_全てのチェックボックスに対しての操作

以前書いたコード見直したら意味が分からなかったので。 グループボックスを親としたチェックボックスを作成すれば for で操作できる。 foreach (Control item in groupBox1.Controls) { if (item.GetType().Equals(typeof(CheckBox))) { ((CheckBox)item).C…

Visual Studio_改行コードを一括返還

CRLF で書いていたはずなのに、気づいたら全てのファイルが LF になってた。 メニューバー の [ ファイル ] をクリック。 [ 保存オプションの詳細設定 ] をクリック。 [ 行の終わり ] の下にあるセレクトボックスから[ Windows (CR LF) ] を選択して OK 。 …

C#_キャスト ( アップキャスト・ダウンキャスト )

アップキャスト:親クラス変数に派生クラスを代入すること。 Base b = new SubClass(); ダウンキャスト:逆がダウンキャスト。 SubClass s = new Base(); アップキャストは常に安全に行うことができるが、ダウンキャストは危険な時もある。 ex ) Base s1 = n…

C#_自作例外の書き方

Exception クラスを継承し、コンストラクタを作成。 コンストラクタには複数あり、出力されるメッセージが異なる。 1) 引数なし2) 引数が文字列3) 引数が文字列と、発生済みを例外オブジェクト 3) は、既に発生した例外を表示することができる。tyr cathc 文…

C#_List の深いコピー

ソースは色々略。 コンストラクタを使う。 var fugaList = new List< int > ( hogeList ) ; これにより、hogeList の中身を複製して fugaList に渡している。 以下は NG 。List や配列は参照型だから。 var fugaList = new List<int>(); fugaList = hogeList; こ</int>…

C#_継承とは

ポリモーフィズムに関係。 MainForm : Form 的なやつ。 継承とは、あるクラスの持つ機能をそっくり引き継ぎ、さらに機能を付け加えた新しいクラスを作る機能のこと。C# では : ( コロン ) を用いて表現する。 MainForm : Form MainForm クラスは、Form クラ…

C#_特殊キーをクリックしたら処理を走らせる

ProcessDialogKey をオーバーライドするもよう。以下ただのコピペした記事。 以下の ProcessDialogKey を Form1 のコードに記述したら、特定キーを押したときの処理が走った。なお、イベントの KeyDown などは書いていない。 namespace Hoge { public partia…

C#_Task 関連一覧

↑ が投稿日付 new

C#_Task の処理を止める

Task.Run の外から止めたい。中からなら Task.Run(() => { // 処理 ;}); の { } の中で条件分岐をかいて return すればよい。 ・CancellationTokenSource.Cancel( ) を使う方法、・ContinueWith でキャンセル処理を行う方法、・CancellationTokenSource.Canc…

C#_Task を Wait は NG

デッドロックするから。 デッドロック:互いが相手の作業を終わるのを待っていて、どちらも身動きが取れなくなっている状況のこと。 ex ) public void HogeNG( ) { HogeAsyncNG( ).Wait( ); // 対応しない。死ぬ。 } private async Task HogeAsyncNG( ) { aw…

C#_async / await と UI

UIはシングルスレッド。このリソースを内部処理で長時間専用させたくない。 故に非同期メソッドには「まるで同期処理のような書き方で非同期処理を行えて、自然に UI 処理に組み込める」というものが期待された。 よって、 async / await は「非同期メソッド…

C#_戻り値が void と Task の違い

戻り値が void だと await がついた処理がいつ完了するかわからない。 await :Task 完了まで待つ、という意味なので同期的。 await しない場合、「誰かこの仕事実行して」と命令を投げるだけなのでタスク実行中に自分は本来の仕事の続きをこなせる。戻り値 …