しがない学生の雑記

吐けども吐けども毒を吐く。

お勉強32日目 バカな学生がC#の迷宮に入るとこうなる

こんばんは。

 

今日から真面目に卒業研究のKinectを用いたWPFアプリケーションの開発をはじめました。研究室で支給されたパソコンは学校のそこら辺にあるパソコンよりも格段にハイスペックのため、とにかくサクサク動いてストレスフリーで素晴らしいですね!

 

しかしまぁ、はじめてC#を扱うせいもあって非常に難航しております。今まで扱ったことがある言語がCとC++しかない私がそもそも残念な学生なんでしょうけれどね。

 

ほんとC#ってなんでこんなに難しいんですか。。。

 

おそらくプログラミングをもっと理解していれば「これめっちゃ便利じゃん!」といえるような仕様になっているんでしょう。しかし私はまだまだ半人前、いやむしろ8分の1人前ぐらいの人間です。それらを使いこなせるわけもないです。理解するので精一杯です。

 

まず第一段階として私は横文字の用語を全然理解できていませんでした。今日はそのうちの一つ、匿名メソッドに関連した内容について思ったことを書きます。決して解説をする記事ではありませんのでご容赦ください。というか、大体はてブの方しかこの記事読まないだろうから、むしろ間違い指摘されそうで怖い。

 

てかまずこれですよこれ!

 

メソッド

メンバ関数のこと。

 

メンバ関数って書けよめんどくさいな。

 

で、本題。

 

匿名メソッド

まずこんな文章を読みました。

 

 例えばC# 2.0では、ソース・コードのあちこちを移動しながら定義を書き込まねばならないような、回りくどいことはあまり経験しない。C++ならヘッダファイル (.h)とソース・コード本体(.cpp)の定義を一致させるであるとか、ほかのOOP(Object Oriented Programming:オブジェクト指向プログラミング)言語ならインターフェイスの定義と実装の定義を整合させるであるとか、そういった離れた場所の 定義を整合させる作業が減ったような気がする。それらは、書きたいことと実際のコードの間に入り込んでくる不純物のような存在だったのかもしれない。

 

連載:C# 2.0入門
第5回 匿名メソッドとデリゲート

http://www.atmarkit.co.jp/fdotnet/csharp20/csharp20_05/csharp20_05_01.html

 

いやいやいや、不純物じゃないよ!それでいいよ!かっちり一つ一つ書かせてよ!なんかすっ飛ばしてるせいで何が何書いてるかさっぱりわからないんだけど!

 

でいろいろ調べてみたんですが、そもそもデリゲートってものを私は分かっていないのでまずはそこから勉強してみます。

 

デリゲート

参考文献はこちら。すごくわかりやすかったです。なんというか、引数の組み合わせたものというわけでもないですし、やっぱりデリゲートはデリゲート、という言葉で説明するのが正しい気がする内容でした。ただこれ使うメリットってやっぱり私個人で開発するぐらいじゃ大して感じないですね・・・。

 

で、匿名メソッドですよ匿名メソッド。

 

参考文献はこちらです

 

率直な感想を。だからなんでそこ省略するの?わかりやすいかもしれんけど気持ち悪いんだけど!いやまぁ、プログラミングは以下に手を抜くかに重きをおいてすることは重々承知しているつもりですよ。でもなんでこう、分かりづらいかなぁ・・・。あとで読む自分のこと考えて書くというか・・・なんだろう、わかりづらくならないんですかね・・・。やっぱり経験不足か・・・。

 

とおもって読んでみたら、どうやらデリゲートにも便利なものがたくさんあるということ。こっちをしっかり理解すれば匿名メソッドの汎用性がわかってくるんでしょうね。こちらも勉強する必要がありそう。

 

でもですよ、上位スコープの変数にアクセスできるってどういうことなんですか?私の知っているプログラミングの常識がぶち壊れているんですが・・・。これ使おうとすればするほどわからなくなりそうな気がするんですけど。

 

しかもその後読んでいったら外部変数のキャプチャによって消えていると思った変数アクセスできる事が判明。もうわけわからなくなってきたぞこれは。あぁ、だからC++で開発したいって先生に言ったのに・・・てかだれだC言語ができれば後なんとかなるって言ったやつ。全然そんなことねぇじゃないか。

 

 

それとラムダ式とかいう謎の用語も出てきましたが、今日は眠いので明日にします。あとサブスクライブについても明日感じたことを書くつもり。てか新しいこと覚えすぎてパンクしそう。何とか頑張って理解せねば。

 

それではおやすみなさい ノシ