C# 色々
やっぱりネット情報だけだと厳しいね。
やりたいこと。
クラス設定 → ボタンイベントへのデータ呼び出し。
とりあえずわかったこと。
デリゲート → 関数とか記憶できる変数
delegate(委譲の意味)
現状。
クラスの概念はなんとなく。
nuget
→ライブラリが入っている。
なんというかVBAで触ったお馴染みの参照設定。
DOM とかはJavaScriptのJSONあたりで触ってるなー。
ただ、クラスとかメソッドの概要図的なものが欲しくなる。
名前空間とか。
あ!!これわかりやすい
using
→namespaceを利用する宣言。
こうしてみると、ライブラリにあるクラスの更に上の枠の概念ってことか。
引用
----------------------------------------------------------------------------------------------------------
さて、ここまでは、ネームスペースやクラスやメソッドを宣言する構文であった。ここからは、逆に、すでにあるネームスペースやクラスやメソッドを 利用する構文に関する話になる。19行目の“Console.WriteLine("Hello World!");”という部分は、ConsoleというクラスのWriteLineというメソッドを呼び出すという機能を記述している。このメソッドは コンソールに引数の文字列を表示するという機能を持つ。だが、ここで、「おや?」と思わないだろうか。このソースコードのなかには、Consoleという クラスもWriteLineというメソッドも宣言されていない。実は、このクラスは、Systemというネームスペースのなかに存在する。System ネームスペースは、標準のクラス・ライブラリのなかに含まれているもので、必ずあるものと仮定して利用することができる。しかし、クラス・ライブラリには 膨大な数のネームスペースがあり、任意のネームスペース内のクラスをも自由に利用可能にはできない。同じ名前のクラスが異なるネームスペースにあったりす るからだ。
そこで意味を持ってくるのが3行目である。“using”とは指定されたネームスペースを利用するという宣言である。ここでは“System”と いうキーワードを続けて記述することで、Systemネームスペースを利用すると宣言している。そして、終わりの印として最後にセミコロン(;)記号を必 ず書き込む。“using”は2行目から23行目までの中括弧の範囲内に記述されているので、この範囲内からSystemネームスペースを利用するという 意志を示したものと言える。当然、19行目の“Console.WriteLine("Hello World!");”はその範囲内なので、“using”の指定が作用する。Consoleクラスはここには宣言されていないので、“using”を指定 されたSystemネームスペースと仮定して処理されるのである。
-----------------------------------------------------------------------------------------------------------
でもまぁ、とりあえあずは機能を使って、実践するのが一番。
EventHandler
→とりあえあずデリゲード型の変数。
[C#]イベントハンドラとはなんぞや – gomokulog
→デバッグのやりかたの一つ。
コードの止めたい部分でクリック
F9 または、 ボタン。
多分、処理が一瞬しか走らない場合に確認のために使用する。
なんかよくわからん
Main()
return 0
まぁ、段階的にいけば分かるでしょう。
なんだかんだで勉強したことって無駄になってないなー。
実感として理解できていないのが、
コンストラクタ
メソッド
メンバ変数。
など。
クラスに設定する プロパティとそれを返す処理。
Mainの重要性。
Project.cs
Clas.cs
などの重要性
が微妙。
クラス→イベントボタンの順序としては
クラス定義 → ボタンの方で、クラスのインスタンスを定義
インスタン名はラムダ式
+= ってなんだ?
参考にしたやつだと
new EventHandler(this.SleepClass_Time);
private void SleepClass_Time(object sender, System.EventArgs e) { //イベントが発生したとき MessageBox.Show("OK!"); }
これがよく分からん。
・なぜ、後に書くのか?
・どういう処理順なのか
(推察)
基本的に上から下に処理されるはず?
this は実行中のオブジェクトを示すキーワード
+= は インスタンスで出てきたオブジェクトに対して、EventHandlerを加える処理?
Program.cs
→アプリケーション開始に必要な、(Main)が記述されたファイル。
あーなるほど、そりゃ絶対必要だわ。
JAVAにしろMain だけは記述しないといけないし。
ややこしいのは、複数のクラスファイルを簡単に作れちゃうことかな。
サンプルクラスの書き方も、ボタンでは動くけどクラスに放り込んだらうあく動かない
場合が多いなー。
まだ、基礎がたんないかな?
Program.csに記述するのが、いいのか
クラスファイルに記述した方がいいのか?
それともFormクラスに記述した方がいいのか
私気になります!!
C#って確かにややこしくはあるんだけど、なんというかやりがいのある言語だよね。
JAVA C とかの
かゆい所に手が届く系言語だそうなので
C# で数字を数字のまま 表示
// コード private void button1_Click(object sender, EventArgs e) { MessageBox.Show(100.ToString()); }
private void button2_Click(object sender, EventArgs e)
{
int i = 3;
int b = 5;
int s = i + b;
MessageBox.Show(s.ToString());
}
クラスで
int i = 3;
int b = 5;
int s = i + b;
やろうとするとなんか怒られるがなぜだ?
(C#)静的でないフィールド、メソッド、またはプロパティ で、オブジェクト参照が必要です
静的メンバ内のコードからインスタンスメンバにアクセスできないという言語仕様上の決まりごとです。
生成されている、されていないの問題ではありません。また、Main メソッドであることは間接的な原因で、直接的な原因は上記に書いた言語仕様上の決まりごとです。
よく分からんかったから 全部の変数(Filed)にstaticぶち込んだら
うまくいった テヘッっ
namespace WindowsFormsApplication1
{
class Class2
{
static int i = 3;
static int b = 5;
static int s = i + b;
}
}
ほんとにどういうことなの?
フィールド(メンバ変数)名
クラスのメンバ変数のことをフィールドと呼ぶといった具合です。
www.kanazawa-net.ne.jpとりあえず、クラス内の変数って理解でおkかな
フィールド=メンバ変数
オブジェクト = インスタンス
ややこしいんだよ!!
(厳密には意味違うんだろうけど)
んー?
次はクラスのメソッドの記述を調べてみるか?
一番よく分からんのがプロパティなんだよなー。
コンソールで記述すればいいのか?