C#, C♯, C#相談室 Part93©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
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
2018/05/12(土) 18:33:40.32ID:RvuVG0qm0
>>276
全部ではないけどほぼご指摘あってます・・・。
本に書いてある小さなプログラムはほとんどform.csに放り込んでたので、そんなものかと思ってた。
2018/05/12(土) 18:34:30.46ID:RvuVG0qm0
>>277
ありがとうございます。
今ようやっと設計の大事さを学習しました。
レベル0から0.01ぐらいには成長できた気がします。
2018/05/12(土) 18:35:15.53ID:RvuVG0qm0
>>280
そもそもこれが分かってなかったから一つのフォーム画面にいろいろ機能を盛り込みすぎたんだと。
2018/05/12(土) 18:37:29.64ID:RvuVG0qm0
>>280

間違いました。

あれ、根本的なことが分かってないことが分かりました。

B DataHolder
C ゲーム
D スコア記録

CからBのインスタンスを生成
DataHolder dataHolder1=new DataHolder();
すればCのpublic変数aにアクセスするときはthis.a=dataHolder.a;とかでいいけど、
DからBのdataHolder1の変数aにアクセスってできるんですか?

CからDにdataHolder1の参照を渡すってこと??
2018/05/12(土) 20:01:02.99ID:9rdAnFG4a
まあなんだよ
今の君に必要なのは鉛筆と紙だ
なんたらチャートのお作法なんぞ知らんでいいから、まずは機能を書き出して丸で囲め
それからどの機能が何処から必要になるかを線引っ張って繋げ
めちゃくちゃ線がごちゃごちゃするだろう?
それをなるべく少ない線で済むように書き直すんだ何回でも
2018/05/12(土) 23:33:51.06ID:RvuVG0qm0
>>285
自分で書いててこんがらがってきますね。
でもまずやってみます。
2018/05/12(土) 23:36:15.36ID:RvuVG0qm0
Aフォームのメンバ変数、メソッドを
BCフォームからも使用できるようするにはどうすればいいのでしょう。

Bだけで使用するならB内でAのインスタンス生成→ShowでAフォームを表示させればいいと思うのですが、
Cフォームでも使用するとなると、Cフォームで新たにAのインスタンスを生成するわけにもいかないですよね。
2018/05/12(土) 23:44:08.44ID:7v9y2RSd0
>>287
ググるなりして調べた?そろそろ初心者スレでやって
インスタンスを渡せばいいだけなのに
2018/05/13(日) 11:04:57.10ID:ySggkKZM0
>>288
すいません。
ググってもよくわからなかったので質問したのですが安易に人に頼りすぎてましたね。

昨夜からわからないところを実際にコードで打ち込んでみて実験重ねて理解できました。
インスタンスの参照渡すって言っても

フィールド渡し
プロパティ渡し
メソッド渡し

と色々方法あるんですね。インスタンスの参照を渡す方法が分かってなかったから一つのクラスに一杯盛り込むことになってたんだと理解できました。
2018/05/13(日) 11:06:37.40ID:ySggkKZM0
こういうのってCやってれば常識なんですね。
どこからC#でどこまでCの質問か分からずこちらで何でも聞いていました。

次から初心者板に移動してみます。

でも、みなさんのおかげでだいぶいろいろなことを学べました。
ありがとうございます。
2018/05/13(日) 13:59:35.41ID:23x2pXKw0
〇〇する機能みたいにして、重要だと思う機能ほど大きく書いて相関関係を、ドラマの登場人物の関係図みたいに描いたらなんとなくクラス図の基本が出来上がる。
2018/05/13(日) 14:41:31.02ID:ySggkKZM0
>>291
ありがとうございます。
クラス図についても勉強してみます。
293デフォルトの名無しさん (ワッチョイ 89fa-9WOx)
垢版 |
2018/05/23(水) 19:32:08.48ID:Au5e7VGg0
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

094C5
2018/05/25(金) 17:55:34.06ID:kaJ5fQAg0
あくまでわかりやすくするために分けるのであって、クラスを分けることが目的になってしまってはいけない
余計わからん構造になる可能性があるからね
2018/05/25(金) 23:51:50.59ID:q1degsPf0
わかりやすくする為にわけるのではない
問題が適切に表現される様に自ずとにわかれるのだ
それが本質的にわかりにくい問題であるならば
わかれた結果わかりにくいのは当然の帰結である
己の能力をわかるまで高めるしかあるまい
わかめ
2018/05/26(土) 08:31:56.50ID:Mb7u4pS+0
なんか偉そうなこと言ってる
2018/05/26(土) 10:29:20.38ID:Qkk0DhfZM
ナイーブすぎ
2018/05/26(土) 16:16:32.23ID:nVIiMXOl0
桃とアロエのカネボウ
299デフォルトの名無しさん (JP 0Hcd-ftu6)
垢版 |
2018/05/28(月) 11:28:40.07ID:vRphuiRoH
ゲームくんのゲームは完成したのだろうか?
そもそもGameManagerクラスみたいなゲームを管理するクラス作ってないのが不思議
ゲーム管理クラス通して設定画面開いたり設定値を取得すればいいのに
2018/05/28(月) 18:36:44.90ID:rzi0Cqlc0
どんだけ連打してんだよ
2018/05/29(火) 12:36:07.71ID:0Vp36Os40
C#の勉強を講習会なりでお金を払う方式でレクチャーを受けたいのですが、どういった所が良いでしょうか?
ドットインストールやプロゲートの様な既にある動画を有料で見るのではなく、
欲を言えば1対1で即座に質問できる方式が良いのですが探してみたところ見つけられず、
初心者〜中級者を対象にした評判の良い講習会の様なものがあれば教えて頂けないでしょうか
東京都の渋谷区に住んでいます
2018/05/29(火) 13:37:15.19ID:dUPfr/v4M
もったいないね
マンツーマンで一時間5千円〜1万はらって12〜36時間でC#を勉強するくらいなら
入門書を3冊ぐらい買って1週間で何度も読めばいいのに
2018/05/29(火) 13:45:33.86ID:iBcg+dk20
しかし新しいC#の作法にのっとった良い入門書なんてあるかね?
2018/05/29(火) 13:47:56.92ID:dUPfr/v4M
新しい作法にのっとった講師のほうが少ないと思うよ
2018/05/29(火) 17:24:32.50ID:0Rufp4wm0
>>301
趣味目的なら金余っているバカだし就職目的なら手に負えないバカ
そんなことで身につかないからパソコン教室にでも通ってろ
2018/05/29(火) 18:15:54.45ID:5CF0lkGw0
パソコン教室じゃ、最高でエクセルの使い方くらいしか教えてくれねーだろ。
2018/05/29(火) 18:33:40.52ID:/62QaXdPa
>>301
金と時間の無駄って意見に俺も一票。

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

子供の習い事みたいにモティベーション不足を金で補うっていうのはありかもしれないけど。
2018/05/29(火) 18:38:51.88ID:5CF0lkGw0
何とか教室や何とかスクールって、出逢いを求めて通うものだろ?
2018/05/29(火) 18:39:33.21ID:iBcg+dk20
云うてもプログラムって何すんの状態だと独学とか無理やん
まあ講習受けて出来るようになるかったら確率低いが
2018/05/29(火) 18:51:29.09ID:b3SRNDoC0
>プログラムって何すんの状態だと独学とか無理やん
そんな人はプログラムを触ることはないので問題なし
2018/05/29(火) 19:02:37.30ID:bwgc0PeYa
C#プログラマの求人いきゃいい
マンツーマンでみっちり教えてくれてしかも金ももらえるぞ
2018/05/29(火) 21:20:40.23ID:Zh8oS8xcM
>>302
>>307
でもさ、メンターがほしい気持ちは解るよ。独学で始めて今でこそイメージしたアプリは大体作れるようになったけど。
2018/05/29(火) 21:22:39.57ID:tOEtldFh0
教えてくれる人がいなくてもできるぐらいのやる気は持ってないと
教えてくれる人がいてもできない気がする
314デフォルトの名無しさん (アウアウカー Sa95-9DOT)
垢版 |
2018/05/29(火) 21:30:02.17ID:+v4yesMaa
独学でやってると自分のやり方が正しいのか確認が出来ない不安があるのはわかる
とにかくプログラムを書くこと、実務を重ねるとその不安は経験値でだんだん消えていく
とにかく経験を積むしかない
2018/05/29(火) 21:34:05.00ID:T0OOxyUA0
>>313
スレ違いになるけどモチベーション保つのが一番大事だからな
わからなくなるとやる気無くすから誰かに教えてもらいたい、って気持ちはわかるが
2018/05/30(水) 01:10:37.65ID:eBpQDrsU0
メンターってか、語れる仲間がほしい・・
だが人付き合いはめんどくせーw
2018/05/30(水) 01:15:01.88ID:9LsQ0F9t0
だから皆ここへ集うのですね
2018/05/30(水) 11:53:56.18ID:8D7UWmqma
メンター(導師)ってリアルで言ってる人を見ると笑うけど
意識高い系ですかって
メンターは技術面より精神的な面のよりどころだな
わけわからんけどこの人は正しい導いてくれるって人って思いこむ相手

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

入門者には導師より同志が必要かな
2018/05/30(水) 12:12:53.49ID:qVo0G4AWa
メンターなんて初めて聞いた
グルなら知ってる

jai guru deva om
2018/05/30(水) 12:16:35.68ID:4fnC318RM
>>318
とりあえず中途半端な改行やめたら?
2018/05/30(水) 12:53:27.56ID:2+ZWaFznd
メンター初耳って…
そりゃ昔はあまり使わなかったが今の20代なら大学で大方耳にしたことあるんじゃない?
2018/05/30(水) 13:06:00.57ID:tkaPgK/fa
ゲームの初心者指導機能以外で聞いたことない
2018/05/30(水) 14:44:19.09ID:zGXcDYuB0
ちょまど神に帰依するべきです
2018/05/30(水) 15:57:46.68ID:OvgslO8CM
CodeMentorっていう英語のメールニュース取ってるんだが?
2018/05/30(水) 17:39:32.49ID:zRdb0GuK0
ぼくはメンタリストですが、何か?
2018/05/31(木) 18:07:05.50ID:ZDpw5PAMd
引数ありのdelicateでデリゲートをnewする段階で
関数に引数渡しておくことはできますか?

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

delicateじゃなくてもそういう方法があれば教えてほしいです
2018/05/31(木) 18:49:53.75ID:YepGdlhS0
ない
2018/05/31(木) 19:21:37.82ID:mNqG/VKAa
>>326
たとえばこれを、
Action<string> a = Console.Write;

こうするだけと違うの?
Action a = () => Console.Write("Hage");
329デフォルトの名無しさん (アウアウカー Sa5d-SvXf)
垢版 |
2018/05/31(木) 20:29:05.32ID:XpaqSCj3a
>>328
普通に考えたらそうなるわな
何がいいたいんやろ
2018/05/31(木) 21:18:37.12ID:ZDpw5PAMd
>>328
わかりづらくてすみません
Actionですね
これでちょっとやってみます
ありがとうございます
2018/06/01(金) 00:56:14.18ID:v9HhHj/a0
もしかして delegate? > delicate
2018/06/01(金) 01:50:30.82ID:Kjs/aFNB0
痒くなってきた
333デフォルトの名無しさん (ワッチョイ fa23-i+D0)
垢版 |
2018/06/02(土) 01:19:12.37ID:te+Rl8LG0
もうふらっとと統合しろよ
2018/06/02(土) 14:30:29.50ID:sz40x79U0
隔離用のスレを本スレに統合って斬新だな
2018/06/05(火) 14:10:31.00ID:kDP+/j8RM
デリケートって結局なんねことなんや
336デフォルトの名無しさん (ワッチョイ 7ad2-OufX)
垢版 |
2018/06/05(火) 23:17:30.29ID:vNq9k7GF0
>>335
関数ポインタ
2018/06/06(水) 11:05:26.21ID:kgKhbEIB0
わかるように説明しろや!
2018/06/06(水) 11:13:20.04ID:Glbjy1Oa0
赤ん坊が庖丁持ったからと言って何かを生み出せるわけでは無し
2018/06/06(水) 13:00:14.82ID:/mNmPD5La
>>337
「〜とは何か」って哲学論争はたぶん時間の無駄w
実際の使われ方を見て何に使えるかを理解するのがいいよ

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

デリゲートの使えない従来の言語は、コードの中にdoubleのリテラルしか書けず
doubleの変数が作れないようなものだった
2018/06/06(水) 22:58:53.30ID:x4kBoo940
>>330です
Actionでできました!ありがとうございます。
クロージャー(?)っていうんですかね?
関数の外の値を引数で渡さずに関数内で使うやり方が知りたかったんです。
2018/06/07(木) 21:28:18.26ID:HziEaPXa0
デリゲート型の変数?????
デリゲート型にすると何かいいことあるのか?
デリゲート型にすると何がいいんだ??????何が使えるんだ?????
2018/06/07(木) 21:34:22.85ID:9x16GWRr0
>>341
ここ読め
http://ufcpp.net/study/csharp/sp_delegate.html
343デフォルトの名無しさん (アウアウカー Sa2d-SmnY)
垢版 |
2018/06/07(木) 21:34:36.55ID:uqa5AZHUa
あーこういうの出来たら便利なのにー
って思ったら調べて使えばいいよ
使わんと頭入らないし
2018/06/07(木) 21:41:39.12ID:muNvrUxm0
デリゲート、デリゲートって、おまえら
青空球児・好児かよ。
2018/06/07(木) 23:38:02.20ID:p05PC41Ra
>>341
そうじゃなくて、上に書いたように、もしdoubleのリテラルしかコード中に書けなくて
doubleの変数が使えなかったらどう困るか考えて
2018/06/07(木) 23:51:09.11ID:HziEaPXa0
図にしてくれ
2018/06/08(金) 00:56:57.47ID:057UgUqy0
数値を格納する変数は int 型
文字を格納する変数は string 型
メソッドを格納する変数が デリゲート型
2018/06/08(金) 01:01:01.34ID:7BdVtDm70
なんで
メソッドを
格納する
必要が
あるんだよ
2018/06/08(金) 01:20:20.47ID:vel+6yPba
だから、どうして実数を変数に入れる必要があるの?
入るのはメソッド自身ではなくその参照だけどね
2018/06/08(金) 07:41:09.77ID:V2PqzfzLd
>>348
自分の場合はある関数にある処理を追加したい場合とか

ある処理は呼び出しもとによって変わったり
2018/06/08(金) 07:54:30.62ID:VEbWNRWu0
>>350
ピンとこない

処理を追加したいならメソッド自体に書くか、overloadとかを考えちゃう
呼び出し元で処理変えるなら引数で、みたいな
352デフォルトの名無しさん (アウアウカー Sa2d-SmnY)
垢版 |
2018/06/08(金) 07:59:48.51ID:FRxZCKgGa
メソッドを引数にして渡してあげられると、実行する側は何をするか気にしないでいいじゃない
2018/06/08(金) 08:15:18.51ID:H4l6t16fM
なぜデリゲートがあるか?
君も大人になったらわかるよ。
ママ、なんでボクはおチンチン付いてるの?
この疑問、時間が解決したろう。
2018/06/08(金) 08:30:05.85ID:V2PqzfzLd
>>351
今までの処理は極力変えたくない

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

なんでこうするかってテストするのがめんどいからとか色々
2018/06/08(金) 10:53:38.20ID:p6dJfT33M
>>354
さっぱりわからない

処理変えたくないメソッド実行
 ↓
その結果次第で別のメソッド実行

何故これで済まないの?
2018/06/08(金) 11:07:03.52ID:jzbZ53uGa
それでも済むよ

例えば繰り返し処理
forなくても書けるだろ。だからforなんて要らないって言ってるようなもん
なくてもプログラミングできるが、あれば楽できる
2018/06/08(金) 11:49:27.44ID:SrLrQXUUa
済まないw

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

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

っていうかこの質問者、本当は分かってて質問してる変な奴だろうね8割方w
たぶん2chの他の板によくいる、サヨクを演じて自作自演やってる頭のおかしいネトウヨと似たようなメンタルの持主なんだろうと想像
2018/06/08(金) 13:02:11.32ID:V2PqzfzLd
>>355
voidだったら"その結果"ってどう受けとる?
2018/06/08(金) 13:04:11.27ID:7BdVtDm70
図にしろ・・・・・・・・・ッッツ!!!
2018/06/08(金) 13:14:18.16ID:0qxXZgjd0
アウアウアーの見本市
2018/06/08(金) 19:39:57.11ID:tyJ42miy0
なんか揚げ足取りしようとして引っ込みつかなくなってる感
2018/06/08(金) 19:42:51.67ID:sQqhvtlW0
http://ufcpp.net/study/csharp/misc_delegate.html
2018/06/08(金) 20:48:10.00ID:7BdVtDm70
つまりメソッドにラムダ式を渡して処理した結果を使ってメソッドの処理をさせるのか?
364デフォルトの名無しさん (アウアウカー Sa2d-SmnY)
垢版 |
2018/06/08(金) 20:53:34.63ID:KYYD9BLCa
ごめん。ちょっと何言ってるかわかんない
365デフォルトの名無しさん (ワッチョイ ebe8-LHz9)
垢版 |
2018/06/08(金) 21:00:06.62ID:E4qbFGXm0
結局デリゲートの非同期処理BeginInvokeを使用するってのが
従来大きな役割だったんじゃない?
でも今Taskクラスできたから必要なくなった
2018/06/08(金) 21:19:27.49ID:txACZHnFp
つまりクラス間通信。
2018/06/09(土) 12:11:29.33ID:VOfp/P7BM
デリゲート(委譲)って名前が悪いのかな
メソッドを他に渡しておいて適宜実行してもらうから委譲ともいえるけどそれは機能の一面しか表してない
MVPの人も過去にデリゲートいらねえって言ってたけど理解力が足りてない

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

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

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

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

でも重要なのは、「デリゲートとは何か」なんか分からなくてもデリゲートは使えるってこと。
「何か」なんか理解しなくていい。それを使って何が出来るかだけ理解すればいい。
2018/06/09(土) 12:58:26.33ID:54mp5fzVM
そう。ホビープログラマならね
2018/06/09(土) 13:02:40.19ID:Cz/ni8by0
ホビーじゃないプログラマ「c#は結構いろんなものがオブジェクトだけどメソッドはオブジェクトじゃない 」
2018/06/09(土) 13:05:05.70ID:oQlrsJoz0
それは無能プログラマ
2018/06/09(土) 13:31:49.04ID:kvLDmgw/0
>>370
この文何か変か?
メソッドはobject型から派生したクラスではないっていう当たり前のことを言ってるだけだろ
2018/06/09(土) 13:40:09.88ID:VOfp/P7BM
>>368
他の言語ではメソッドもオブジェクトとして扱えるものもある
c#はメソッドはオブジェクトじゃない

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

機能的には似たようなものに見えるけど全然別物だ
2018/06/09(土) 13:51:37.94ID:MhKfyDgC0
>>368
文系学生もプログラミングする時代になったって事だよ。

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

「デリゲート」は失敗作だから新言語を作る気がないのなら理解する必要はない。
あれはthis+関数ポインタで、一番近いのはC++の「メンバ関数ポインタ」だが、
無駄に「クラス」「関数ポインタ」「ラムダ」を抽象化しようとしておかしくなってる。
結局ラムダを導入してしまったし、当初の方針は間違いだと認められたことになる。
今後「デリゲート」を採用する言語はないだろうよ。
2018/06/09(土) 13:57:35.17ID:1jan2CXL0
.NET Core で過去の遺産が全て無くなるかと思ったけどそんなことはなかったぜ
2018/06/09(土) 13:59:17.43ID:VOfp/P7BM
>>374
誤解したままで最後までつづけるんか?
2018/06/09(土) 14:07:54.32ID:VOfp/P7BM
もともと関数がオブジェクトである言語はデリゲートを導入するメリットは少ない
c#にデリゲートが無かったらjavaの様に専用のインターフェイスを継承した無駄なクラスを作らなければならなかった

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

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

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

>>377
Javaみたいなそもそも「関数ポインタ」がなかった糞言語と比較したら駄目だよ。
Cには関数ポインタはあった。
C#はそれを「デリゲート」として拡張した。
他言語は「第一級オブジェクト」として拡張した。
今のところ、後者の方が正解っぽいだろ。
(俺自身にはイマイチ「第一級オブジェクト」である利点/必然性は見えないのだが)
2018/06/09(土) 14:24:48.97ID:VOfp/P7BM
関数がもしobjectクラスから派生したオブジェクトになるとメンバーを持てることになるんだけど
A.B().ToString()のToStringが
B()というメソッド自体に係ってるのか
B()の返した戻り値にかかってるのかがよくわからないことになる
2018/06/09(土) 14:25:53.62ID:54mp5fzVM
Javaってstaticメソッドを関数インターフェースに渡すときは最適化してくれんの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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