X



C#, C♯, C#相談室 Part93©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 1e06-m8Mb)
垢版 |
2017/04/22(土) 08:52:00.93ID:iVvswOrb0
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part92
http://echo.2ch.net/test/read.cgi/tech/1485589613/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0299デフォルトの名無しさん (JP 0Hcd-ftu6)
垢版 |
2018/05/28(月) 11:28:40.07ID:vRphuiRoH
ゲームくんのゲームは完成したのだろうか?
そもそもGameManagerクラスみたいなゲームを管理するクラス作ってないのが不思議
ゲーム管理クラス通して設定画面開いたり設定値を取得すればいいのに
0301デフォルトの名無しさん (ワッチョイ b1d2-Du++)
垢版 |
2018/05/29(火) 12:36:07.71ID:0Vp36Os40
C#の勉強を講習会なりでお金を払う方式でレクチャーを受けたいのですが、どういった所が良いでしょうか?
ドットインストールやプロゲートの様な既にある動画を有料で見るのではなく、
欲を言えば1対1で即座に質問できる方式が良いのですが探してみたところ見つけられず、
初心者〜中級者を対象にした評判の良い講習会の様なものがあれば教えて頂けないでしょうか
東京都の渋谷区に住んでいます
0307デフォルトの名無しさん (アウアウオー Sa63-9v30)
垢版 |
2018/05/29(火) 18:33:40.52ID:/62QaXdPa
>>301
金と時間の無駄って意見に俺も一票。

学校の勉強でもそうだけど、だいたい独習の方が効率が高いよ。
分からないところを質問できる人がいるとはかどるのは確かだと思うけど、
そんなの今はネットで代替できるし(しかもタダ)

子供の習い事みたいにモティベーション不足を金で補うっていうのはありかもしれないけど。
0314デフォルトの名無しさん (アウアウカー Sa95-9DOT)
垢版 |
2018/05/29(火) 21:30:02.17ID:+v4yesMaa
独学でやってると自分のやり方が正しいのか確認が出来ない不安があるのはわかる
とにかくプログラムを書くこと、実務を重ねるとその不安は経験値でだんだん消えていく
とにかく経験を積むしかない
0318デフォルトの名無しさん (アウアウウー Sadd-DqgS)
垢版 |
2018/05/30(水) 11:53:56.18ID:8D7UWmqma
メンター(導師)ってリアルで言ってる人を見ると笑うけど
意識高い系ですかって
メンターは技術面より精神的な面のよりどころだな
わけわからんけどこの人は正しい導いてくれるって人って思いこむ相手

c#入門にメンターがいる必要はないね
中級以上ならまだしも

入門者には導師より同志が必要かな
0326デフォルトの名無しさん (スッップ Sd9a-faVr)
垢版 |
2018/05/31(木) 18:07:05.50ID:ZDpw5PAMd
引数ありのdelicateでデリゲートをnewする段階で
関数に引数渡しておくことはできますか?

使うときは引数関係なく実行するだけにしたい

delicateじゃなくてもそういう方法があれば教えてほしいです
0329デフォルトの名無しさん (アウアウカー Sa5d-SvXf)
垢版 |
2018/05/31(木) 20:29:05.32ID:XpaqSCj3a
>>328
普通に考えたらそうなるわな
何がいいたいんやろ
0333デフォルトの名無しさん (ワッチョイ fa23-i+D0)
垢版 |
2018/06/02(土) 01:19:12.37ID:te+Rl8LG0
もうふらっとと統合しろよ
0336デフォルトの名無しさん (ワッチョイ 7ad2-OufX)
垢版 |
2018/06/05(火) 23:17:30.29ID:vNq9k7GF0
>>335
関数ポインタ
0339デフォルトの名無しさん (アウアウエー Sa22-UB1l)
垢版 |
2018/06/06(水) 13:00:14.82ID:/mNmPD5La
>>337
「〜とは何か」って哲学論争はたぶん時間の無駄w
実際の使われ方を見て何に使えるかを理解するのがいいよ

禅問答みたいに聞こえるかもしれんが、デリゲートのメリットは
デリゲート型の変数を作れること。

デリゲートの使えない従来の言語は、コードの中にdoubleのリテラルしか書けず
doubleの変数が作れないようなものだった
0343デフォルトの名無しさん (アウアウカー Sa2d-SmnY)
垢版 |
2018/06/07(木) 21:34:36.55ID:uqa5AZHUa
あーこういうの出来たら便利なのにー
って思ったら調べて使えばいいよ
使わんと頭入らないし
0352デフォルトの名無しさん (アウアウカー Sa2d-SmnY)
垢版 |
2018/06/08(金) 07:59:48.51ID:FRxZCKgGa
メソッドを引数にして渡してあげられると、実行する側は何をするか気にしないでいいじゃない
0354デフォルトの名無しさん (スップ Sd73-x2t7)
垢版 |
2018/06/08(金) 08:30:05.85ID:V2PqzfzLd
>>351
今までの処理は極力変えたくない

引数にAction渡して関数はそれを実行
引数のActionはデフォルトにnullをいれておく
nullだったら処理しないようにすれば呼び出し元は必ずしも変更する必要がなくなる

なんでこうするかってテストするのがめんどいからとか色々
0357デフォルトの名無しさん (アウアウエー Sa23-SCrG)
垢版 |
2018/06/08(金) 11:49:27.44ID:SrLrQXUUa
済まないw

>>355-356は-π/2〜π/2の範囲の実数の数だけ、それに対応する
sinの値を返すメソッドを用意すれば汎用的なsin関数なんかなくて済むと言ってるのと同じ。

だから、どうしてdoubleの変数が必要なのかと。

っていうかこの質問者、本当は分かってて質問してる変な奴だろうね8割方w
たぶん2chの他の板によくいる、サヨクを演じて自作自演やってる頭のおかしいネトウヨと似たようなメンタルの持主なんだろうと想像
0364デフォルトの名無しさん (アウアウカー Sa2d-SmnY)
垢版 |
2018/06/08(金) 20:53:34.63ID:KYYD9BLCa
ごめん。ちょっと何言ってるかわかんない
0365デフォルトの名無しさん (ワッチョイ ebe8-LHz9)
垢版 |
2018/06/08(金) 21:00:06.62ID:E4qbFGXm0
結局デリゲートの非同期処理BeginInvokeを使用するってのが
従来大きな役割だったんじゃない?
でも今Taskクラスできたから必要なくなった
0367デフォルトの名無しさん (ブーイモ MM33-EqDK)
垢版 |
2018/06/09(土) 12:11:29.33ID:VOfp/P7BM
デリゲート(委譲)って名前が悪いのかな
メソッドを他に渡しておいて適宜実行してもらうから委譲ともいえるけどそれは機能の一面しか表してない
MVPの人も過去にデリゲートいらねえって言ってたけど理解力が足りてない

c#は結構いろんなものがオブジェクトだけどメソッドはオブジェクトじゃない
デリゲートを使えばメソッドをオブジェクト(変数)みたいな感じで扱える
普通の変数とは違って+=で複数のデリゲートをいれることができるのが特徴的

コールバックとして使えるしeventはデリゲートをもとに作られてるので基本的な使用範囲は広い
0368デフォルトの名無しさん (アウアウエー Sa23-SCrG)
垢版 |
2018/06/09(土) 12:44:45.38ID:DBY1R4Jva
>>367
真面目な話、そういう衒学趣味の文系学生みたいな
文章が一番人を混乱させる。

「c#は結構いろんなものがオブジェクトだけどメソッドはオブジェクトじゃない 」って何やねんw

関数ポインタが分かればデリゲートがどんなものかはその類推でだいたいイメージできる。
機械語をやった経験があれば、関数ポインタなんか、なんだこんなのただのcall命令の
アドレッシングモードのことかってすぐわかる

でも重要なのは、「デリゲートとは何か」なんか分からなくてもデリゲートは使えるってこと。
「何か」なんか理解しなくていい。それを使って何が出来るかだけ理解すればいい。
0373デフォルトの名無しさん (ブーイモ MM33-EqDK)
垢版 |
2018/06/09(土) 13:40:09.88ID:VOfp/P7BM
>>368
他の言語ではメソッドもオブジェクトとして扱えるものもある
c#はメソッドはオブジェクトじゃない

その類推が間違ってるからダメなんだけどなあ…
デリゲートは関数ポインタじゃない
callでもアドレッシングとも全然無関係だわ

機能的には似たようなものに見えるけど全然別物だ
0374デフォルトの名無しさん (ワッチョイ d19f-NuDx)
垢版 |
2018/06/09(土) 13:51:37.94ID:MhKfyDgC0
>>368
文系学生もプログラミングする時代になったって事だよ。

> 「何か」なんか理解しなくていい。それを使って何が出来るかだけ理解すればいい。
これな。最近の「○○って何ですか」っていう奴らは何なんだ?
お前らだって、日本語の全ての漢字を読めるわけでもないだろうに。

「デリゲート」は失敗作だから新言語を作る気がないのなら理解する必要はない。
あれはthis+関数ポインタで、一番近いのはC++の「メンバ関数ポインタ」だが、
無駄に「クラス」「関数ポインタ」「ラムダ」を抽象化しようとしておかしくなってる。
結局ラムダを導入してしまったし、当初の方針は間違いだと認められたことになる。
今後「デリゲート」を採用する言語はないだろうよ。
0377デフォルトの名無しさん (ブーイモ MM33-EqDK)
垢版 |
2018/06/09(土) 14:07:54.32ID:VOfp/P7BM
もともと関数がオブジェクトである言語はデリゲートを導入するメリットは少ない
c#にデリゲートが無かったらjavaの様に専用のインターフェイスを継承した無駄なクラスを作らなければならなかった

ActionやFuncやラムダがあればデリゲートが必要なかったと言ってるのは何かを誤解してる
0378デフォルトの名無しさん (ワッチョイ d19f-NuDx)
垢版 |
2018/06/09(土) 14:19:40.58ID:MhKfyDgC0
>>376
理解してなくても使えれば問題ないんだよ。
お前だってPCの起動方法(BIOSとか)知らなくてもPC使ってるだろ。
MSIL読めなくてもC#使えるだろ。
CPUの例外/割り込み機構を知らなくてもtry/catch使えるだろ。
一般プログラマにとってはプログラミング言語は道具であって、それ以上でも以下でもない。
新言語を作りたいのなら学術的に正確に理解することが必要だが、普通の人はそうではない。

それ以前にC#が死ぬ可能性を考えた方がいい。
C#専用の「デリゲート」の理解はつぶしが利かない。
他言語にもある「ラムダ」の理解のほうが重要だ。

デリゲートは「クラス」と「関数ポインタ+バインド」で対応した方が良かったと思う。
C#には未だに「バインド」がない=デリゲートでの対応になるが、
実際、後付でバインドすることが出来ないだけ不便だろ。

>>377
Javaみたいなそもそも「関数ポインタ」がなかった糞言語と比較したら駄目だよ。
Cには関数ポインタはあった。
C#はそれを「デリゲート」として拡張した。
他言語は「第一級オブジェクト」として拡張した。
今のところ、後者の方が正解っぽいだろ。
(俺自身にはイマイチ「第一級オブジェクト」である利点/必然性は見えないのだが)
0379デフォルトの名無しさん (ブーイモ MM33-EqDK)
垢版 |
2018/06/09(土) 14:24:48.97ID:VOfp/P7BM
関数がもしobjectクラスから派生したオブジェクトになるとメンバーを持てることになるんだけど
A.B().ToString()のToStringが
B()というメソッド自体に係ってるのか
B()の返した戻り値にかかってるのかがよくわからないことになる
0381デフォルトの名無しさん (アウアウウー Sad5-rZS7)
垢版 |
2018/06/09(土) 14:30:26.04ID:AO7Grx3Qa
1+2*3
こんな計算式があったときに1+2をしてから3かけて答えは9
こうはならないだろ。それは優先順位を定めてるから。(1+2)*3のようにかけば期待通りになる

それと同じで関数がオブジェクトでメンバー持ててもそれに合わせた処理の優先順位を定めればいいだけ
0382デフォルトの名無しさん (ブーイモ MM33-EqDK)
垢版 |
2018/06/09(土) 14:32:21.62ID:VOfp/P7BM
理解しないのと誤解してるのではわかっていないという点では同じだけど
理解してない場合は理解していない前提で行動できる
一方の誤解してる場合は悲惨だ
0385デフォルトの名無しさん (ワッチョイ d19f-NuDx)
垢版 |
2018/06/09(土) 14:36:40.18ID:MhKfyDgC0
>>382
お前は日本語を勉強しろ。

俺達は「理解しなくていい」=「完全に理解してはいないという自覚の元で使え」と言っているのであって、
それは「誤解」には繋がらない。
「誤解」ってのは、「理解してない馬鹿が理解しているつもりになっている」事を言う。
例えば、右結合と左結合を知らないお前みたいな馬鹿のことだ。
0386デフォルトの名無しさん (ワッチョイ d19f-NuDx)
垢版 |
2018/06/09(土) 14:39:35.51ID:MhKfyDgC0
>>384
意味不明。何を書いて欲しいのか分からん。

> A.B().ToString()
これはAのメソッドB()を呼んでその戻り値に対してToString()を呼ぶ。
少なくともJavaScriptではそう。

で、何をしたい場合の記述が欲しいんだ?
0388デフォルトの名無しさん (ワッチョイ d19f-NuDx)
垢版 |
2018/06/09(土) 14:54:44.86ID:MhKfyDgC0
>>384
エスパーすると、言いたいことは分かった。
お前は「第一級オブジェクト」も理解しておらず、「誤解」している。ちゃんと勉強しろ。

「第一級オブジェクト」ってのは、通常のオブジェクトと関数オブジェクトを区別しない。
だから書式は当然同じだし、正しく理解していればこの点が疑問になりようもない。


>>387
なら日本語を勉強しろ
> B()というメソッド自体に係ってるのか
これで何を表現しようとしたか言ってみろ。それは
> A.B.ToString()
ではないだろ。
0389デフォルトの名無しさん (ブーイモ MM33-EqDK)
垢版 |
2018/06/09(土) 15:04:32.47ID:VOfp/P7BM
>>385
誤解は悲惨
delegateを削除しろと言って削除してみたらActionもFuncも使えませんでした
eventも使えませんでした

もちろん言語レベルで変数としてのデリゲートの代わりになるものもありません

>>388
> > A.B.ToString()
> ではないだろ。
いやいやそこはそのままであってるし普通にそう理解できないのか?
A.B.ToString()が正解
逆にどう勘違いしたのか聞きたい
0393デフォルトの名無しさん (ワッチョイ d19f-NuDx)
垢版 |
2018/06/09(土) 15:18:29.92ID:MhKfyDgC0
>>389
日本語で言うと、
> B()というメソッド自体に係ってるのか
と理解したって事だよ。

>>390
お前がな。
他言語にはdelegateなんて無いが、何も問題ないだろ。
あれ?って思えないのか?
(今すぐ廃止していいかどうかはまた別だが)

>>387
> クラスにフィールドとメソッドを同名にできないから区別できる
これは先見の明があったかもな。
関数を「第一級オブジェクト」に昇格させるのに文法的制約がない。
Javaに対しての利点にはなり、生き残る道かも。
0394デフォルトの名無しさん (ワッチョイ d19f-NuDx)
垢版 |
2018/06/09(土) 15:25:50.19ID:MhKfyDgC0
>>391
JavaScriptではオーバーライドすれば出来る。
フィールド/メソッドの区別がなく、名前だけだから。
C#的には派生クラスで「プロパティ」「を同名の「メソッド」でオーバーライドだが、
これが型チェック的に無理なのか?
しかし名前の重複を許していないのだから、今後の拡張は可能のはずだが。

JavaScriptのデタラメ文法はどうかという奴もいるが、慣れてしまうと、
型あり言語の「型が違うだけ」で色々制約されるのも相当な糞だと気づけるぞ。
型検査はエラーではなく警告に留めるべきで、
プログラマがOKすれば型が不一致でも通してくれた方がマジで楽。
一番近いのはCってことになってしまうが。
0398デフォルトの名無しさん (アウアウエー Sa23-SCrG)
垢版 |
2018/06/09(土) 16:54:07.78ID:DBY1R4Jva
だからメソッドがオブジェクトかどうかなんて話はただの衒学趣味的な無益な話w
そんな話は「ではオブジェクトって何?」って不毛な議論になるだけでしょw
初心者がデリゲートを理解して使えるようになるための屁の役にも立たないよw

>>397
素直に考えればデリゲート自身にマルチキャストの機能を持たせるんじゃなく、
シングルキャストのデリゲートのリストとして実装する方法もあったはず

なんか理由があって「こういう」風になってるんだろうが俺には積極的理由はよくわからんね。
ジェネリックをデリゲートで制約できないことと関係があるのかもしれないが

なまじマルチキャストなんて機能があるせいで何だかわかりづらくなってる面は否定できないと思う
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況