C#
あっさり 5~6時間。プログラミングに触れてると頭が痛くなってきますね。
書籍で基本的な部分は抑えてますが
圧倒的に実戦不足。
でもなー。
Webの情報って便利なんだけど噛み砕くのみめっちゃ時間がかかるんだよなー。
一応メモにしてるけどしんどいのには変わりないねー。
とはいえ基本的な部分を理解しさえすれば別の本で
あー。こういうことかーってなったりするからある程度は
この段階踏まないといけないのが辛い所。
//メソッドの定義
public int GetX()
{
return x;
}
public int GetY()
{
return y;
}
public void Set(int a, int b)
{
x = a;
y = b;
}
メソッドの定義これなんだけど、書籍だとプロパティ。みたいなこと書いてたなー
どう違うんだろう?
だいぶ違うんですねw
じゃぁ上のやつなんだよw
とりあえず、、プロパティのGet と Set は凄く便利でJavaよりも優れてるってことはわかったw
<現状の理解>
プロパティ
=オブジェクト(クラスでインスタンス化されたもの)の状態
参考から
プロパティ→オブジェクト内のフィールド(変数)の値を取得。または、設定する。
フィールドの値を返す = Get
値を代入する = Set
で構成されている。
変数 = null;
インスタンスを後で使う時用の値。
メンバ変数
→クラス内で設定する変数。
対比してグローバル変数とかになるのかな?
グローバル変数は基本的に設定しないように書かれてますね。
オブジェクト指向の考え方が
クラス単位で分割。クラス内での変数での処理を念頭においているために、
どこからでもアクセスできてしまうグローバル変数は極力しようせず。
メンバ変数で型をつけろ。というありがたいお言葉。
結局メソッドってなんなんだろう?
この質問と解答は非常にいい。
プロパティ
→クラスのメンバ変数のようにアクセス管理が可能。
(処理内容を自分で記述できる。)
読んだ感じ、setによるフィルターの用に感じた
仮に、
int code;
で 0~1000
の値を扱いたいとした時、仮にpublic int code
としてしまうと、数字が好き勝手にいじれてしまう。
なんとなく、メンバ変数に対する
詳細条件の設定のように感じる。
setで条件を記載し
この時、メンバ変数をプロパティとして隠蔽化します。
private int code;
public int Code
{
get
{
return this.code;
}
set
{
if(0 <= value && value <= 1000)
this.code = value;
}
}
できたー。
単純だけど、解決できると嬉しいw
private void button1_Click(object sender, EventArgs e)
{
Class1 person = new Class1();
person.Code = Convert.ToInt32(textBox1.Text);
MessageBox.Show( Convert.ToString(person.Code));
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindowsFormsApplication1
{
class Class1
{
private int code;
public int Code
{
get
{
return this.code;
}
set
{
if (0 <= value && value <= 1000)
this.code = value;
}
}
}
}
技術レベル的にしゃあないけどなー。
処理順。たぶん
クラス。定義
code 変数
code変数にひも付けてプロパティ Codeを設定
仮に変数code の値を0とする
ボタン
new でインスタンスを呼び出す
インスタンス.プロパティ = textBoxデータ
実際
person.Code = Convert.ToInt32(textBox1.Text);
こうやっておいてプロパティにデータを送る。
プロパティに例えば32が送られた場合。
Get が現在の変数の値 0 を取得。
でもなんで return いるんだろう?
プロパティCodeに送られた 数値を
setで数値の条件を確認。
valueを代入。
んで後は、引数としてプロパティCodeを呼び出す。
・・・とあれ?
じゃあ、 メンバ変数 code 呼び出せばよくね?
引数codeにしたらアクセス権ないって出て表示できねえwwww
そりゃそうだよなー。w
アクセスさせないために、プロパティ噛ましてるのか。
あーなるほど。
納得いったwwwww
うーん。
テキストボックスに、数字以外。
例えば、アルファベット、全角
放り込んだ場合。ハンドルできません。で
途中停止するなー。
プログラムとして考えるならば、
if
{}
else
{}
を使って、エラー以外の対処にするか、
全自動で変換するか・・・
といったところか。
発想を出そうにもまだ、パターンがいるなー。
ここの
と
サンプルプログラム
ほしいぃ