したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

C#やっぞ

32つれづれなるままに:2021/05/22(土) 21:48:07 ID:FTDUrn/c0
動いているコードを読めないと、自分でそれを書くことは出来ない。
英作文と同じ

33つれづれなるままに:2021/05/22(土) 22:07:45 ID:FTDUrn/c0
スクールとか入門書とかってどうなんだろう。
入門レベルであればネットに落ちているものとそう変わらないのでは。

34つれづれなるままに:2021/05/23(日) 00:31:51 ID:FTDUrn/c0
使い方さえ覚えればどんなソフトよりも自由に使える。
無料で公開するなんて素晴らしい。

35つれづれなるままに:2021/05/23(日) 13:07:09 ID:FTDUrn/c0
戻り値を宣言時に記入することに違和感が強いらしい。
疑問を感じたところを調べると、戻り値であることが多い。

今まで使っていた言語が、戻り値をはっきりとは意識していなかった。
最後に吐き出される数値が結果的に戻り値になるというだけ。
したがって、戻り値は必ず最後になる。
それを最初に持ってくるところに違和感があるらしい。

36つれづれなるままに:2021/05/23(日) 13:12:46 ID:FTDUrn/c0
コントロールやそのプロパティなどはC#が用意してくれてる。
自分がまだその引き出し方に慣れていないだけ。
またこれに慣れることは、人によっては難易度が高すぎる。

アプリケーションを作るとは、必要な機能をより簡単に、直感的に呼び出せるように整えること。
プログラミング言語がスラスラ理解できるから、アプリケーションにまとめる必要はない。

また、スラスラ理解できるようになれば、
アプリケーションを使うのも言語の機能を呼び出すのも難易度は同じ。

37つれづれなるままに:2021/05/24(月) 10:22:48 ID:FTDUrn/c0
デリゲートが少し分かってきた。
メソッドを代入できる変数などと説明されていることがあるが、まさにそのまま。
int a =1; などと書くように、
右辺にメソッドを持ってこられる。

メソッドに別のメソッドをくっつけたり剥がしたりするのに使うらしい。

38つれづれなるままに:2021/05/24(月) 13:37:50 ID:FTDUrn/c0
デリゲートは、変数だけ決まっていて、処理だけ変えたい時に使うっぽい。
変数が2つ用意することは決まっているが、その2つを足すのか引くのかは後から決めたい、みたいな

39つれづれなるままに:2021/05/24(月) 13:53:19 ID:FTDUrn/c0
ああ、分かった。デリゲートはメソッドを入れる変数と言うより、
メソッドに型を与えているのだと思う。
そして何のために型を持たせるかと言うと、そのメソッドを引数として扱うため。

method というメドッドに整数値の引数を与えようとすると、method (int a,int b) のように、
引数の型と変数名が必要になる。
しかしただのメソッドだと型がないためこれが出来ない。

そこで、
delegate void Dele(); //宣言
Dele dele = new Dele; //インスタンス化
などしてインスタンス化すれば、型を持ったメソッドが生まれる。
これで他のメソッドで引数として使える。

中身が入替自在なのは、
型を持たせるために入れ物に入れるような形になるためだと思う。

40つれづれなるままに:2021/05/24(月) 14:11:40 ID:FTDUrn/c0
今まで経験のないことだったので分かり辛かったが、慣れると便利そう。
処理をするために数値を引数として渡すのは分かるが、処理ごと渡す。

41つれづれなるままに:2021/05/24(月) 15:47:29 ID:FTDUrn/c0
public event DemoDelegate DemoEvent = delegate(string name) {};

event は単純に delegate の一種だと思って良さそう。
一種と言うか制限。そのクラス内でしか使えなくしている。
それ以外は使い方も性質も delegate と同じ。

42つれづれなるままに:2021/05/24(月) 21:34:40 ID:FTDUrn/c0
メソッド(Main)内でフィールドを宣言するとエラーが出た。
というか、クラスで宣言する変数をフィールドと呼ぶらしい。
なんで?

43つれづれなるままに:2021/05/25(火) 10:33:51 ID:FTDUrn/c0
コンストラクタを作ろうとしたのだが、「メンバー名をそれを囲む型の名前と同じにすることはできません」とエラーがでた。
public と void を消すと、エラーが消えた。
仕組みを十分理解していれば、public や void はつくはずがないということなのだと思う。
多分、>>42も似たような感じ。

44つれづれなるままに:2021/05/25(火) 14:05:42 ID:FTDUrn/c0
いや、よく見るとクラスの中にクラスを入れてしまっていた。
調べると「入れ子クラス」とか呼ばれている。
こういったことは一応可能らしいが、普通とは違う動きをすることがあるのだと思う。

45つれづれなるままに:2021/05/25(火) 14:34:56 ID:FTDUrn/c0
ある程度読めるようになってきたつもりでいたが、書くとなるとまた話が違ってきた。
細かい知識を取り損ねているらしい。

またクラスとメソッドは、入門サイトでは設計図とか入れ物とか言われているが、
実際書いてみると goto を使っている時の感覚に近い。そこに処理を飛ばしているだけ。
またこうなると、クラスやメソッドをどのくらいの単位で区切るかに疑問を感じる。
書こうと思えば、全て Main に書けそうな気がする。多分それだと見づらいんだろうけど。

46つれづれなるままに:2021/05/25(火) 20:36:33 ID:FTDUrn/c0
コンストラクタは別に作らなくてもいいっぽい?
基本的には変数の初期値を入れて正しく初期化するためのものらしい。
ここで複雑な処理を行うためではないため、戻り値は不要。
コンストラクタの書き方で戻り値を入れるとエラーになる。

47つれづれなるままに:2021/05/26(水) 00:42:12 ID:FTDUrn/c0
新規のプロジェクトを作る段階でコンソールアプリケーションとして開始すると、後からwindowsフォームを足すのは難しいらしい。
using System.Windows.Form; とやっても、アセンブリがどうとかエラーが出る。

調べたところ、参照の追加をすれば解決できるらしいのだが、
VSのバージョンで差があるのか、アセンブリの項目がない。

*.csproj(プロジェクトファイル)を書き換えることで対処できるのだが、
ビルド中によく分からない注意書きみたいなのが出る。


コンソールアプリケーションのセットが一番シンプルみたいなので、練習がてらこれをベースにwindowsフォームを手書きしようと思ったが、
windowsフォームアプリケーションとして開始して余計な機能を削る方が良いらしい。

48つれづれなるままに:2021/05/26(水) 10:15:56 ID:FTDUrn/c0
と思ったが、windowsフォームで始めたプログラムでコンソール画面、
特にReadKeyを出そうとするとエラーが出る。
なにこれ

49つれづれなるままに:2021/05/26(水) 10:18:23 ID:FTDUrn/c0
ハンドルされていない例外
System.InvalidOperationException: 'Cannot read keys when either application does not have a console or when console input has been redirected. Try Console.Read.'

50つれづれなるままに:2021/05/26(水) 10:51:35 ID:FTDUrn/c0
コンソール画面かフォームか、一つのプロジェクトではどちらかしか使えないと思った方が良さそう。
一応、[プロジェクト]>[プロパティ]から、出力の種類を変更することは出来る。
これによってフォームで始めたプロジェクトでもコンソールを出すことは出来たが、
動作がぎこちない上、閉じる時に何か注意書きみたいなのが出た。

51つれづれなるままに:2021/05/26(水) 12:01:57 ID:FTDUrn/c0
C#にグローバル変数はない。
同じクラス内だと省略出来るだけで、変数には全てクラス名がついている。
static をつけても同じ。外部から呼び出すときはクラス名が必要。

52つれづれなるままに:2021/05/26(水) 14:12:47 ID:FTDUrn/c0
メソッドの内部では static は使えない?
メソッドは private なのにその内部に static があるとややこしいからだと思う。

53つれづれなるままに:2021/05/26(水) 16:17:19 ID:FTDUrn/c0
マイクロソフトのDocsにクラスとそのコンストラクタ、プロパティ、メソッドが網羅してある。
その上に説明文がついているが、英語を翻訳ソフトで訳しただけのような文章で、初心者には厳しい。

網羅してある部分も、アルファベット順に全て並べているため、どれが重要なのか分かり辛い。
慣れてくれば自然と分かるのだろうけど、よく使うものとその使い方を自分でまとめておきたい。

54つれづれなるままに:2021/05/26(水) 16:25:56 ID:FTDUrn/c0
どこに何を書くのかがある程度決まっている気がする。
まとまった情報は一か所にまとめて置きたいが、文法上散らばらざるを得ない部分が出てくる気がする。

55つれづれなるままに:2021/05/26(水) 16:38:06 ID:FTDUrn/c0
goto で別のフラグに飛ばす場合、そのフラグに情報をまとめて置いておける。
C#のクラスの場合、これとは少し違うように思う。
似たような作業を何とも行う可能性があるため別に分けるのは同じだが、
文法上、同じクラス・同じメソッド内に書かざるを得ない部分が多い気がする。

56つれづれなるままに:2021/05/26(水) 16:54:27 ID:FTDUrn/c0
クラスA
 実際の作業
クラスB
 パーツの設計図

クラスとしてコードを別の場所に分けると、
そのインスタンス化と数値設定はもとのクラスで行う必要がある。
上の図で言うと、パーツに関する記述が煩雑だからと言って、そのすべてをクラスBに移すことは出来ない。
むしろ記述が散らばって見づらくなるかもしれない。
クラスAに全てまとめて書いても良いが、区切りがない文章のようで、今の自分には見づらく感じる

57つれづれなるままに:2021/05/28(金) 17:32:04 ID:FTDUrn/c0
指定のフォルダを読み込んでそれ以下のツリービューを表示させることは出来た。
しかし、ノードがクリックされた瞬間を検出することが出来ない。
起動時に全て読み込んでしまうのではなく、クリック時にそれ以下のフォルダを読み込む形にしたい。

それらしい記事に書かれているコードを写しても、クリックが検出されない。
おそらくこれはクリックの感知ではなく別の処理なのだと思う。
しかし感知がどういう形になるのかは分からない。

58つれづれなるままに:2021/05/29(土) 16:39:59 ID:FTDUrn/c0
既存のフォルダを読み取ってツリービューで表示させることは、VSのdesignerだとできないように思えてきた。
Form1.Designer.csはVSが自動で書き込むもので、通常は手書きでは書き換えないものらしい。
実際、手書きで書き換えるとデザイナーが上手く表示されなかった。

上記のようなツリービューが必要なら、全て手書きするしかない?

59つれづれなるままに:2021/05/30(日) 16:16:05 ID:FTDUrn/c0
動いたああああああ!
デザイナーを使う場合、プロパティから上の雷のマーク(イベント)を開き、
使用するイベントをダブルクリックすると、中身のコードを書く部分が自動生成される。
全て手書きしようかと思っていたが、とりあえずこれを使うと選ぶだけなので分かり易い。

そしてTreeView.AfterSelectイベントだが、これはノードを選択したときに飛ばされるイベント。
起動時に飛ばされるので「?」だったが、これはノードの一つが選択された状態で起動されるため。
また練習なのでノートを一つしか用意していなかったが、これだとそのノードを何度クリックしても飛ばされない。
ノードAとノードBがあるとき、ABABだと飛ばされる。AAAAだと飛ばされない。

60つれづれなるままに:2021/05/31(月) 17:34:35 ID:FTDUrn/c0
デザイナでアプリを追加した場合に、後でそれを消そうとするとき、
Form1.csの方だけ消すとエラーが出る。
Form1.Designers.csにもそのイベントに関する記述("new")があり、これも消すとエラーが消える。
基本的にはDesignerのコードは手で書き換えないものらしいので、フォーム上から消す方法はあるのだろうけど。

コードを全て手書きする場合、イベントの受信側だけ書いても意味がないということでもある。
あらかじめ new でインスタンス化しないと動かないらしい。

61つれづれなるままに:2021/06/01(火) 11:03:33 ID:FTDUrn/c0
デリゲートは型の設定とその変数の宣言を別々に行うらしい。
クラスをインスタンス化するのに似ているが、型の宣言は(今見ているサンプルの中では)クラスの中で行っている。

多分、引数の種類や個数、戻り値の有無を変更する場合のために、二段階にしている。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板