読者です 読者をやめる 読者になる 読者になる

インクリメントについて

 

++fuga ; (前置演算)

fuga++; (後置演算)

fuga に 1 を加える、という意味。

 

インクリメント単独で使用した時は ++fuga と fuga++ に違いはないが、
代入演算子と一緒に使うと異なる結果になる。

hoga = 0;
t = ++hoga;
//t は 1 となる。hoga は 1
//++hoga先に処理し、t へと代入

 

hoga = 0;
t = hoga++;
//t は 0 となる。hoga は 1
//先に t へと代入し、その後に hoga++ を処理

 

こちらから。
http://www9.plala.or.jp/sgwr-t/c/sec03.html

 

以上。
hoge だとリンク貼られるので、hoga に。

クラス と インスタンス

 

クラス:何かしらの責務を持つモノ。性質を表す

インスタンス:クラスの性質を持つ実体実際のモノ )。

class:種類、分類
instance:実例、具体的な事物。特定のもの。

クラス

フィールド:情報を保存する場所 ( 変数のようなもの )
メソッド:情報を処理する方法 ( 関数のようなもの )

を持つ。

クラス名は名詞で命名。
インタフェースは形容詞で命名。クラスの持つ性質を説明的に見ることができる。
インスタンスは特にないらしい。
形容詞:名詞に情報を加えるもの。

 

ex )

A クラス
a インスタンス  があるとする。

a インスタンスは A クラスに属している。
すべてのインスタンスはクラスに属しており、そのクラスの性質を持つ
( A クラスから作成された a インスタンスと aa インスタンスは共通の性質を持つ。)

 ex)
犬クラス:嗅覚が鋭い、穴を掘る、肉球が硬い。

インスタンス:柴犬
インスタンス:秋田犬
インスタンス樺太犬

これらのインスタンス は犬クラス の性質を持っている。
( 犬クラスから作成された柴・秋・樺インスタンスは共通の性質を持つ。)

 具体的なソースコードサンプルはページ下部

 

インスタンスはどこにつくられているのか

 A型 a ;

と宣言されている時、

A クラスのインスタンスを参照する領域が確保され、
そこに a という名前がつけられるということ。
A クラスのインスタンスが作られたわけではない。

 

A型 a = new A();

の様にした時初めて、A のインスタンスが作られ、変数 a に代入される。
A のインスタンスが作成され、変数 a はそのインスタンス指し示している
という状況。

変数 a が確保されている領域をスタック ( stack ) と呼び、
A のインスタンスが確保されている領域をヒープ ( heap ) と呼ぶ。

stack:[ 可算名詞 ] 積み重ね、干し草。( 整然に積み上げるイメージ )
heap:[ 可算名詞 ] 積み重ね、かたまり、山。( 乱雑に山積みイメージ )

 

■ 

A クラスから作成された a インスタンスと aa インスタンスは共通の性質を持つ。
の サンプルコード。

ex ) 作成したインスタンスは以下の共通の性質を持つ。
・文字列の長さを得ることが出来る
・指定した位置にある文字を得ることが出来る
・指定した文字列を別の文字列に置換することが出来る

文字列は全てインスタンス
「" "」で書けば、全て String クラスインスタンス

String sA = "ABCDE";
String sV = "VWXYZ";

//文字列の長さを得ることが出来る
int sAL = sA.Length;
int sVL = sV.Length;

//指定した位置にある文字を得ることが出来る
var sAS = sA.Substring(0,3);    //ABC
var sVS = sV.Substring(3,2);    //YZ

//指定した文字列を別の文字列に置換することが出来る
var sAR = sA.Replace("D", "ディ");    //ABCディE
var sVR = sV.Replace("Z", "ぜと");    //VWXYぜと

 

↓ 【おまけ】 Char 配列から文字列作成。

char[] carArray = new char[5];
carArray[0] = 'あ';
carArray[1] = 'い';
carArray[2] = 'う';
carArray[3] = 'え';
carArray[4] = 'お';

//string型のインスタンスを生成
String carString = new string(carArray);
int cAsL = carString.Length;
Console.WriteLine("{0}と{1}", cAsL, carString);
//↑「5 と あいうえお」と表示される

 

 以上。

↓ 参考
http://qiita.com/KeithYokoma/items/ee21fec6a3ebb5d1e9a8
http://xz4u.com/adjective-and-adverb/
http://www.kumei.ne.jp/c_lang/cs/cs_08.htm

 

C#_Form や Panel にスクロールバーをつける

Form や Panel において、

プロパティの 配置 にある「AutoScroll」を True にする。

f:id:koshinRan:20170329203849j:plain

AutoScroll:
コントロールコンテンツ  ( Form や Panel に載せたBottonなど )が
表示可能範囲より大きい場合に、スクロールバーを自動的に
表示するかどうかを示す。

 

PictureBox にスクロールバーをつける際の注意 (ハマった)

  • Form ( Panel ) のAutoScroll を True
  • PictureBox は 載せた Form ( Panel ) と Dock させない
    ( サイズは Form > PictureBox や Buttonなど )
  • PictureBox の Location は ( 0,0 )
  • PictureBox の SizeModeAutoSize

この設定で、下記の様にスクロールバーがつく。
f:id:koshinRan:20170329204134j:plain

 

以上。

--Memo--
Dock:2つのものが結合すること。

例えば、
PictureBox の Dock を Fill にすると、 Form ( Panel ) == PictureBox となり、
PictureBox の SizeMode が AutoSize でも、
親であるForm ( Panel ) とPictureBox全体がドッキングしているので、
( PicutreBox は親である Form ( Panel ) コントロールに随従する形 )
PictureBox は拡大されない。

AutoSize: 画像全体を表示させるようにPictureBox が拡大

 

C#_配列やListの要素を取得

for 文や foreach 文を使わない。
LINQ の Select や Where を用いる。

 

Selectすべての要素に対して処理。

型 要素の取得用変数 = 変数.Select( 要素 => 要素に対する処理 ).ToArray();

↑ で配列(など)から一つずつデータを取り出して処理してくれている。

 

Where条件を付け、一致する要素を取得。

 型 要素の取得用変数 = 変数.Where(要素 => 条件).ToArray();

 

 ex )

int[ ] numbersA = new int[3];
numbersA[0] = 10;
numbersA[1] = 20;
numbersA[2] = 30;

 

//各要素に 100 を追加
//data の箇所はなんでもよい。( x でも fuga でも)
int[ ] add = numbersA.Select(data => data + 100).ToArray();

//コンソール(出力)に0:110 1:120 2:130 と表示される
Console.WriteLine("0:{0} 1:{1} 2:{2}", add[0], add[1], add[2]);

 

//20 以上の要素を抽出
int[ ] extract = numbersA.Where(x => x>=20).ToArray();

//0:20 1:30 と表示される。
Console.WriteLine("0:{0} 1:{1}", extract[0], extract[1]);

コンソールへの表示は、メニューの「表示」にある「出力」から。

 

こちらを参考
http://dobon.net/vb/dotnet/programing/arraymap.html
http://dobon.net/vb/dotnet/programing/arrayfilter.html

以上。
LINQ についていまいち分かっていないので後ほど。

Excel_曜日の取得

いつも直に打っていた・・・。

日付を打った後に、
ユーザ定義aaaa または aaa を入力する。
英語表記の場合は、dddd または dddd

aaaa:月曜日
aaa :月
dddd:Monday
ddd :Mon

 

↓ もう少し詳しく

  1. 日付を入力
  2. ホーム タブ → 数値のグループにあるセレクトボックスを開く。
    セレクトボックスは日付、またはユーザ定義が表示されている(多分)
  3. セレクトボックスの「その他の表示形式」を選択
  4. 表示形式タブの分類から「ユーザー定義」を選択
  5. 種類( T ) 」のテキストボックスに aaaa などを追記
  6. OK をクリック
  7. 完了

 

以上。

↓ キャプチャ
1.~  3.

f:id:koshinRan:20170327224746j:plain

4.~  5.

f:id:koshinRan:20170327224851j:plain

7.

f:id:koshinRan:20170327224932j:plain

C#_配列の書き方

何故書けないんだ、と調べるまで混乱していたのでメモ。
Array inA = new Array[5]; みたいなことやっていた。php の array() とは別物のよう。

 

[ ] 変数名 = new [ 配列の長さ ]

 

ex) int 型の配列

int[ ] numbersA = new int[3];
numbersA[0] = 10;
numbersA[1] = 20;
numbersA[2] = 30;

//以下の様にも記述できる

int[ ] numbersB = new[ ] { 10, 20, 30 };
int[ ] numbersC = { 10, 20, 30 };
//C は Bの new[ ] 省略したもの。(new[ ] は略せる)

 

以上。

ちなみに、
PHP の場合は以下の様に書く。

$numbers = array(10, 20, 30);
$numbers[ ] = 40;
$numbers[ ] = 50;

//以下も可
//$numbers[3] = 40;
//$numbers[4] = 50;

//これも可
$numbers = array(10, 20, 30, '四十', '五十');

 


 

 

サクラエディタ_折り返し桁数の変更

それっぽいところで変更するんだろ、と思っていたが見つからず時間かかった。

 

  1. メニューバー の設定から「タイプ別設定(Y)...」を選択
  2. 「折り返し桁数」で任意の数値に変更
  3. 「OK」で完了

 

以上。

↓ キャプチャ
1.
f:id:koshinRan:20170326200317j:plain

2. 3.
f:id:koshinRan:20170326200542j:plain