[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 04/08 11:46 / Filesize : 273 KB / Number-of Response : 1029
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ふらっと C#,C♯,C#(初心者用) Part141



1 名前:デフォルトの名無しさん [2018/12/15(土) 11:07:07.89 ID:0aSEF/I+0.net]
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
https://mevius.5ch.net/test/read.cgi/tech/1538646998/
■コードを貼る場合は↓を使いましょう。
ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

231 名前:デフォルトの名無しさん mailto:sage [2019/01/11(金) 18:49:12.65 ID:1+lzGhU1M.net]
イニシャライズコモンコントロールズイーエックス構造体

232 名前:デフォルトの名無しさん mailto:sage [2019/01/11(金) 18:51:24.03 ID:zVvjOIcHa.net]
>>223
構造体名で検索したらInitCommonControlsEx関数が出てくるじゃろ

233 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 00:09:08.43 ID:iaJ8ArIE0.net]
VS2017でC#のプログラムを組んでます。

はじめてVS2017を使うのですが、画面の下に


準備完了 ↑ソース管理に追加

という邪魔なバーが表示されてます。
VS2010にはありませんでした。目障りなのでこれを消したいのですが何か方法はありますか?

234 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 00:20:55.22 ID:Fl9Ups4U0.net]
>>228
ツール->オプション、環境->全般、ステータス バーを表示するのチェックを外す

235 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 00:21:44.23 ID:iaJ8ArIE0.net]
>>229
ありがとうございます!!目障りだったんですよね。

236 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 01:04:45.40 ID:CChJ5ept0.net]
色々迷ったけど
オートフォーマットはOFFにした

237 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 03:22:33.67 ID:S1bCJ3S10.net]
例外処理(に限らず、エラー処理)ってどこまで徹底して行うべきなんでしょうか?
下みたいに、使うインスタンス片っ端から毎回nullチェックとかしてたら、凄まじいコード量になるんですが・・・・・
if(obj == null)
{
return msg;
}

238 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 03:53:00.80 ID:ejfouP+Ya.net]
>>232
さあ。
でもバグと例外は区別した方がいいんじゃないか。

そのコードは多分バグを想定してるんだよね?
絶対にとは言い切れないが、バグを想定してそれを検出するifは書かないのが普通じゃないか
いやライブラリみたいなものを作ってるならバグを想定して例外を投げるのは普通だけど

239 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 03:58:46.63 ID:ejfouP+Ya.net]
最後の行は引



240 名前:数のチェックの話ね []
[ここ壊れてます]

241 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 04:03:08.28 ID:2xT9w9620.net]
return msg
してるから まず例外をちゃんと使えてないんじゃ疑惑

242 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 04:04:51.50 ID:DC6KrvaN0.net]
デザインパターンでnullオブジェクトパターンみたいの参考にするのは?

243 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 04:12:05.96 ID:DC6KrvaN0.net]
nullが入るケースがあることを想定している場合にnullチェックを全部書くのがめんどいならnullオブジェクトパターン適用すればいいし
本来はnullが入ってたらおかしいケースならエラーを起こして拾わせるのが正しい構造って回答でいいのかな?

244 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 04:17:50.15 ID:2xT9w9620.net]
・nullが来ない想定ならチェック不要
・nullケース考慮したくないならnullオブジェクトパターン
・null来た場合にぬるり以外で知らせるならチェックする
・nullのネスト面倒ならnull条件演算子

こんな感じやろか
null非許容参照型使うという手もあるが

245 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 08:05:30.51 ID:VHzQIvd20.net]
読んでる入門書のLINQとラムダうんたらってのが分からなくて
手がstopしてしまっているのですが入門者向けに分かりやすく解説されてるページなど教えていただけないでしょうか?
メソッドの使い方はある程度分かったのですがそれじゃ駄目なんすかね…

246 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 08:39:26.90 ID:0dPYYJK00.net]
>>239
LINQやらラムダ使えなくても動くものはつくれるからまぁまずは作ってみよう

247 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 10:13:12.90 ID:iaJ8ArIE0.net]
最近は、自分でプログラム組まずにランサーズでハイスキルな奴に外注してるわw
中抜きでうま〜〜〜

248 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 10:35:45.31 ID:e9xF8Gpoa.net]
>>232
チームの方針次第
うちの場合は

nullを許可しない引数と返り値は基本的に全てチェックして例外を投げてる
めんどくさいと思うかもしれないがFluentAssertionのようなライブラリを使えばそこまで大きな負担にはならない

nullオブジェクトパターンはやればわかるがチェックするよりも手間がかかる
また必ずしもnullの場合の適切な動作を定められるとは限らない
適切でない場合にパターンを適用するとそれがnullオブジェクトかどうかチェックするといった本末転倒なことになりかねない
なのでこれが最も適切と確実に判断できる場合を除いて使用しない

C# 8.0が待ち遠しいね

249 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 10:44:33.52 ID:CChJ5ept0.net]
>>232
仕様と設計で解決する問題
エラーが出たときどうしたいの?
エラー出たときに別に原因とかわからんでええなら一連の処理をtrycatchで囲ったらええやん
なんか起きたらcatchに入ってくるで



250 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 17:18:08.40 ID:XDHakXaX0.net]
>>232
外部とのやりとりの場所は結構厳重にチェックを入れる。
自分で書いているところは適当に流す。

外部とは当該館数のパラメータや、呼び出す関数とかの戻り値ね。
try catch で囲んで、チェックして例外発行して、catch 内でまとめてトレース情報込みでログ出してスローするくらいなら大した手間じゃないじゃない。
その例なら if( obj == null ) throw new ArgumentNullException("ぼーっと生きてんじゃねーよ!"); で済む話じゃん。

>>239
コピペでもいいからたくさん書いてみる。で解決するよ。
やってるうちに理屈が分かるようになる。

251 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 17:23:52.90 ID:iaJ8ArIE0.net]
昔は開発現場でこっそりExcel型の2chブラウザでネットサーフィンばかりしてたな〜
座ってるだけで月70万むっちゃらくやった

252 名前:デフォルトの名無しさん mailto:sage [2019/01/13(日) 00:23:58.00 ID:X0+RFgX60.net]
>>239
駆け出し時代オー

253 名前:vンソース改造してた時にLINQはパフォーマンス悪いと思って見つけ次第foreachに手直しするという逆工程でLINQとラムダ式マスターした []
[ここ壊れてます]

254 名前:デフォルトの名無しさん mailto:sage [2019/01/13(日) 00:46:53.42 ID:IIPQpabmp.net]
使えば勝手にlinqの快感にハマって抜け出せなくなる

255 名前:デフォルトの名無しさん mailto:sage [2019/01/13(日) 04:21:19.42 ID:qwE0jZig0.net]
麻薬のような機能だなw

256 名前:デフォルトの名無しさん mailto:sage [2019/01/13(日) 09:07:48.83 ID:Xn8IPTP50.net]
LINQもRxも使いだすと元に戻れなくなる

でも性能気にしてstructとforeachに書き直し始めると時間足りない

257 名前:デフォルトの名無しさん mailto:sage [2019/01/13(日) 09:32:12.32 ID:Z+h8nfOL0.net]
>>246
パフォーマンスのためならなんでforにしなかったん?

258 名前:デフォルトの名無しさん mailto:sage [2019/01/13(日) 18:27:15.40 ID:X0+RFgX60.net]
>>250
Listはしてたよ
あとラムダ式はLINQ→foreachより行数減らす意識持って1行メソッドを見つけ次第ラムダ式に直す工程で習得したな

259 名前:デフォルトの名無しさん mailto:sage [2019/01/14(月) 23:20:39.35 ID:3wGjtMyb0.net]
ComboBoxに例えばA〜Dと4つ項目が入っていて、A〜Cは同一計算方法でDのみ特別な計算方法でコード内容が異なり且つ色んな計算をする為コードが長くなる場合の見やすくする為の最初の分岐方法とか書き方とかありませんか?
今はifで分岐した中にあれこれ結果を取ってきて結果を出してるのでifがやたら長く見辛いです。なんかいい方法があれば教えて頂きたいです。



260 名前:デフォルトの名無しさん mailto:sage [2019/01/14(月) 23:31:33.99 ID:CBheeOs80.net]
LINQ使うと元に戻れなくなるのはわかるんだけどデバッグしづらくね?
デバッグを想定する時点で初心者なのかな...教えてエロい人

261 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 00:45:24.53 ID:DUfu4s9fa.net]
>>252
4っつぽっちの分岐で何がそんなに見づらくなるのかちょっと理解できんよ。
いや、煽ってるわけじゃなく本当に

各分岐先のコードが長くなるっていうのならそれぞれメソッドに切り分けるだけじゃないの?

262 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 02:09:17.70 ID:gvlEsXBIp.net]
>>252
if(value == d){
d用処理またはメソッド
}else {
a〜c用処理またはメソッド


これじゃダメなの?

263 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 04:09:30.23 ID:Vsgk6Uc3K.net]
>>252
ComboBoxにブチ込むためのクラスを書いてDは継承

264 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 06:09:12.86 ID:rjgxVR8i0.net]
LINQはなかなか身につかんなあ。
とりあえずforで書いといて見直してこれLINQで一行になるんじゃね?と気付いたらいそいそと書き直す感じ。
LINQ脳になってない

265 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 06:39:49.84 ID:OSSPo6bD0.net]
例えば処理順を意識しなくて良い場合、通常のforまたはforeachで処理するのと、Parallel.ForEachで並列処理するのはやはり並列処理の方が早い?

266 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 07:24:38.34 ID:ohj/8QmzM.net]
>>255
質問者の意図とは違うかもしれんがそういうコード書くと怒るやつがいた職場がある
わざわざ継承してうにゃうにゃやらんと怒る
んでできたコードが何がいいのか考えてもさっぱり意味がわからん
本人にメリットを聞いてもさっぱり理解できんというかメリットの話になると必ずボケた返しをする
ありもしない改修を想定してキチガイとしか思えない発言を連発する
そもそも仕様書や設計書に処理がその数で分岐するってあるのに
なんで普通に書いたら怒るんだよ
もうお前とはやってられん
ってとこまでいって仕様書や設計書通りに組んでるのに工数が増えてるのはあんたのせいだ
って会社間の会議になってもまだグチグチ言ってる
その場にいる全員?な状態だった

267 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 08:37:28.18 ID:biF ]
[ここ壊れてます]

268 名前:9zsRRd.net mailto: 環境次第 []
[ここ壊れてます]

269 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 08:41:56.04 ID:AEHaNlhRa.net]
>>259
条件分岐が減るとかじゃないの?
それだけ不具合が減る理屈だが、工数が増えてるんじゃ意味ないな



270 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 08:50:45.78 ID:OahWWfOzM.net]
普通のケースでは継承にしても
条件分岐が別の場所に移動するだけだべ

271 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 09:24:06.17 ID:n85zJfLmM.net]
>>258
Parallel.ForEachはオーバーヘッドが大きい
一周に数百ミリ秒かかるくらいの粒度の大きなループでない限りは普通のforeachより確実に遅くなる

272 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 10:26:04.16 ID:fix0rts+0.net]
多態性は手間がかかる割に恩恵が少ないよな

273 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 16:18:48.41 ID:R0UqBAnw0.net]
>>257
foreachならともかくforで書いているなら苦労するだろう

274 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 16:22:04.50 ID:R0UqBAnw0.net]
>>259
逆のパターンなら数多見てきたけど、そのパターンは珍しいな
if分岐が10以上になるからなんとかしてと言われて継承使ったプロトタイプ渡したら、なぜか基底クラスでif文復活してたことならあるけど

275 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 16:36:00.01 ID:0qvQfApDM.net]
C#のforeachってpythonみたいに定義しないでindex取得出来ませんか?forにするしかないでしょうか?

276 名前:デフォルトの名無しさん [2019/01/15(火) 16:37:26.00 ID:Oh+57Mh2M.net]
[_]

277 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 16:53:35.12 ID:XrO54/Dg0.net]
>>267
foreach単体じゃ無理

Enumerable.Select Method
https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.select?view=netframework-4.7.2

278 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 17:42:13.30 ID:AbSveg4gd.net]
>>267
上のSELECT使った実装例はこんな感じ

foreach (var x in items.Select((item, index) => new { item, index }))
{
Console.WriteLine($"index: {x.index}, value: {x.item}");
}

Listか配列かIEnumerabelどれでやってるかは知らないけどもこれで行けるはず

279 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 17:49:07.53 ID:u2JtKhAa0.net]
forが完全上位互換なのになんで
foreach使うのか?
って今でも思ってるよ俺は
ループにインデックスが必要になったというただそれだけで変更するんだぜ



280 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 17:55:58.21 ID:AbSveg4gd.net]
indexが必要でCountもできる時はわざわざindex生成してforeach使う必要無いと思うけどもLinq使いたい時とかIEnumerabelに実装してるものにわざわざfor使わない派

281 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 17:58:55.44 ID:AbSveg4gd.net]
というか戻り値をIEnumerabelにして抽象化しておく事が多いから余計にforeach使うのはあるかもしれない
Linq拡張メソッド作る時とか諸々

282 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 19:24:57.54 ID:Kk36dR3w0.net]
とりまLINQ使って富豪的に組むだろ

283 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 20:11:07.93 ID:LAAyKIEna.net]
>>252
int CalcDefault();
int CalcSpecial();
int Calc() {
if (IsSpecialCase()) return CalcSpecial();
else return CalcDefault();
}
bool IsSpecialCase() => combo.SelectedValue == "D";

とりあえず最初はこれでいいよ
似たような条件分岐が増えてきたらリファクタリングしてポリモー対応できないか検討
最初からポリモーは大げさだからやらなくていい
でも後でリファクタリングしやすいように責務指向でメソッドを切っておくぐらいはやっておいたほうがいい
このへんのさじ加減は経験則だな

284 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 20:18:43.20 ID:ToRrrvnYa.net]
switchを無くすのに多態

285 名前:なんか使う必要ないね。
すくなくともC#にはデリゲートがあるんだから多態使うぐらいならComboBoxのアイテムに
デリゲート持たせた方がいいよ。

個人的にはこれも本当に可読的か疑問だけど。
分岐素直に分岐で書いた方が分かりやすいって
[]
[ここ壊れてます]

286 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 20:29:43.48 ID:u2JtKhAa0.net]
テストするときに圧倒的にわかりにくいコードになんの意味があるの?
バカのやることは本当にわからない

287 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 20:31:56.84 ID:LAAyKIEna.net]
確かに
分岐が多いとテストしにくい
少しならいいけど限度がある

288 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 20:50:47.00 ID:u2JtKhAa0.net]
設計書で分岐が100個あったらswitchcaseかifで100個書けよ
それが気に入らないなら設計書直せよ

そういう当たり前の手続きを無視してコード書いてる雑魚に俺は超えられねぇ

289 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 20:54:23.73 ID:ShjRgn6y0.net]
switch vs 多態って結局プログラムがDRY & SOLIDになってるかどうかって問題に帰着すんだよな

>>255はDRYでもSOLIDでもない
>>275はSOLIDではあるがDRYではない
多態までいけば完全にDRYでSOLIDなプログラムになる

そのコードが一回こっきりで重複がないという前提だと、DRYのありがたみを実感しにくい
だからswitch派が一定数居るのだろうね



290 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 20:58:26.66 ID:AbSveg4gd.net]
インターフェイス厨だから似たような分岐はインターフェイスで分けて個別実装か本当に共通してるなら継承でなんとかしたくなる
それと見返したら俺酷いスペルミスしててワロタ

291 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 22:25:49.08 ID:rPJfKlkHp.net]
cしか知らないのです
vsをダウンロードして独学でc#勉強し始めたのですが、どうにもなりませんです
オブジェクトだのラムダ式だのデザインパターンだの文法的な要素以外に勉強しないとなにを言ってるのかわからない事が多くて、勉強の進め方が間違ってるのだろうと思いました。
初心者丸出しの質問で恐縮ですが、どんな順で何を勉強したら良いでしょう?
また、良書、良いウェブページなどご存知でしたら、ご教示いただければ幸いです
よろしくお願いします。

292 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 22:32:18.90 ID:2N1r/ZHN0.net]
>>282
物まねでもなんでもいいから何か作りまくれ
用語とかから勉強しなくていい。色々調べるうちに覚える
わからなくなったらやりたいことの頭にC#+スペース入れて検索

293 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 22:33:11.37 ID:p93FMJH30.net]
必要性がわからない概念を理解するのは難しい
それはコード書いた経験が少なすぎるから
Cもほぼ入門書読んだだけでしょ
とりあえず自分が理解できる範囲の知識でなにか作りたい物つくった方がいい

294 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 22:52:10.98 ID:qux9+5740.net]
>>282
主にオブジェクト指向関係が分からないみたいだから
オブジェクト指向入門系の本やウェブサイトを探せばいいんじゃないか?

あるいはC#にこだわらないのであればC++の入門書はC言語との違いとして
オブジェクト指向向けの機能に触れているものが多いと思う

実際にプログラム作ってオブジェクト指向の感覚掴みたいなら
個人的にはちょっとしたゲーム作ってみるのもオススメだな 
UnityならC#使えるし

295 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 23:25:56.04 ID:Zm1dLYXR0.net]
>>282
勉強の進め方というか基本的な理解が浅いのでは
Cでも構造体ネストして疑似継承くらいするだろうし
ラムダにしてもクロージャ要素はともかく匿名関数

とりあえずクラスは関数を纏めているのではなく
型を作りデータと結び付けているという事だね
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/index
翻訳が割と酷いが公式にもドキュメントはあるよ

296 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 23:31:48.76 ID: ]
[ここ壊れてます]

297 名前:grH+sReD0.net mailto: ご教示ありがとうございます
いわゆるコンソール用のアプリケーションなら、cで充分私が必要とする程度のものは作れるので、わざわざ新しい言語なんか習得したいとは思わないんですが。
やっぱり、GUIのアプリケーションの方が使うとき楽だとら思いまして、なんとかc#勉強して作れるようになりたいなと言うのが発端なんです

vsで参考になるようなところを参照してつまみ食いで作ったのですが、少しでも自分で機能を追加しようとすると、マイクロソフトのクラスライブラリなんか知らないので、なかなか困難で。
おまけにクラスというかオブジェクト指向って奴だと、無闇矢鱈と真似すれば良いという手法が私では通用しなかったのです。

どのようにクラスを作って良いのか基準もわからないですし。
オライリーのc++の本があるので読んだのですが、そこでは電子レンジをモデルにしてオブジェクトの説明をしてくれたのですが、なかなか良く分からず

デザインパターンとやらを先に勉強しておくべきなのかとチラホラ読んだのですが、これもまた実装とは程遠い座学の世界でピンと来なくて泣きそうです。

みなさん、ある程度使えるようになるまでどんな順序でなにを学んだのか、ご教示いただければたすかります
[]
[ここ壊れてます]

298 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 23:33:48.23 ID:grH+sReD0.net]
図々しいお願いで恐縮です

299 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 23:35:09.56 ID:opRVBBPd0.net]
デザパタは経験積まないと有り難味が判らないから放置でいいよ
作りたいものを完成させるにはどうすれば近道かだけ考えろ



300 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 23:40:43.54 ID:grH+sReD0.net]
>>289
デザイパターンはある程度蓄積が出来てないとありがたみがわからない、だから、後回しでも良いと言う意見ですね
クラスを作る定石集のようなものだと思ったので、先に勉強した方が良いのかとも思っておりました
定石知らなくても、楽しく将棋はできるのだから、後回しでも良さそうですね

ご意見ありがとうございます

301 名前:デフォルトの名無しさん mailto:sage [2019/01/15(火) 23:50:54.16 ID:u2JtKhAa0.net]
vector3Dクラスの内部に
vector2Dクラスは普通は作らないんだぞ
知ってた?
しかし、両クラス共にメンバx,yを保持する
そう、お前らの大っっっっっっっ嫌いな重複だw
しかし、極上のバカでもない限り
vector3Dをvector2D+zで作るやつなんてこの世にいないんだよ
わかるな?

この例ではわかりやすく
XYZで説明してやったが
世の中ってのはこういうもので満ち溢れてるんだよ
xyでもyzでも計算するときがあるのさ
わかりにくいだけで
xyをvector2Dで作ってしまったオブジェクトのyzの計算は不格好なのさ
オブジェクト指向は破綻している
そこをわかった上で付き合うんだ

302 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 00:03:56.21 ID:9UhWNW230.net]
>>287
物に例えるってのは常々ダメだと思うわ、関係ない要素が絡んできて
人に依ってはマイクロウェーブとか出るの?とか思うだろうし
クラス設計としちゃフィールドは構造体と一緒だけどメソッドは…
うん、とりあえず手続き型っぽく作っても良いだろう\(^o^)/
多態性は+演算子の数値なら加算が文字列だと連結になるとかね

C経験はCUIのみという事かな?.NET Frameworkなんか知らん!という事であれば
Visual C++ Windows デスクトップアプリを従来通りWin32で作っても良いと思うけど
手っ取り早くダイアログベースで作成してメッセージハンドラに渡ってきたIDで振り分ける

ぶっちゃけ.NET FrameworkもWin32 APIをラップしてるだけなのでC#も基本は変わらない
フォームデザイナーで弄くってコントロールにイベントハンドラ割り当てるだけ

303 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 00:44:36.48 ID:RsJGf8R10.net]
>>292
制御系のプログラムばかり書いているのです
どうかするとロジアナ見てる方が多いかもしれませんが
パソコンの世界はほとんどわからないです

304 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 01:02:27.00 ID:NripHWV9a.net]
>>293
制御系ならCでも自然とオブジェクト指向的な設計でコード書いてたはずだと思う。

「キーをスキャンしてデバウンス処理を担当するコード」とか「LCDドライバーへの表示データの転送を担当するコード」
とか、そういう仮想機械をコード上にいっぱい作ってたはず。

オブジェクト指向のオブジェクトって要はこの仮想機械のこと。
クラスはそれを書きやすくするための仕組みに過ぎん。
だからたぶん心配してるよりずっと簡単な話だと思うよ

305 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 01:07:11.33 ID:RsJGf8R10.net]
>>294
私の頭の中はオブジェクト指向とは無縁です。

設計そのものに、そんな考え方を取り入れていないので、どこまでも手続き型で考えてしまうのです。
強いて言えば、状態遷移を作るときに少し似たような考え方になるだろうか、という程度ですね

なにをクラスとすれば良いのか、そういうところがピンとこないので、わからないのです。

306 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 01:13:49.60 ID:9UhWNW230.net]
いわゆる組み込み系か、それだと逆にこっちが経験乏しいけど、Cライブラリなら馴染みはあるのかな
するとまずはVisual C++からWindowsコンソールアプリをC/C++ライブラリで作ってみるとかかねぇ?
APIとかはC#にしろMSDN…今はMicrosoft Docs?を見るしかないね、C#ならIntelliSenseにも詳細出る

でもC#からなんか制御するとかだと結局プラットフォームのネイティブAPIや専用ライブラリになるか?
とりあえずオブジェクト指向とかを学びたいのであればC++や他スクリプト言語とかでも良さそうな

307 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 01:15:08.32 ID:NripHWV9a.net]
>>295
でもキュー(リングバッファー)ぐらい実装したことあるでしょ?
端的に言えばあれがオブジェクトの一例っすよ。

データ(配列 + 読み出しポインタ + 書込みポインタ)と、
それをリングバッファーに見せかけるコードの組み合わせ

簡単でしょ

308 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 01:30:35.70 ID:RsJGf8R10.net]
>>296
言語そのものはどれでも良いと考えています
vsのヘルプを読む限り、同じことができてるようですから
どうせなら、c#を勉強してみたいなと考えております

309 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 01:36:56.53 ID:RsJGf8R10.net]
>>297
リングバッファがオブジェクト指向の考え方なのですか。
なるほど。
仮装化したデバイスのようなもの、ということなのでしょうか。ハードディスクのドライバやNICのドライバは確かにアプリケーションからみると仮想的で、実際のハードウェアの持つ機能とは関係なくつかえるようにしますね
少し例えがわかった気がします

ありがとうございました
今日は遅いので、この辺で失礼します



310 名前:デフォルトの名無しさん [2019/01/16(水) 02:56:08.32 ID:JSfUU2TA0.net]
private Task<int> hoge{....}
というメソッドがあって

var t=hoge();
でタスク走らせた後、ちょっと別の処理してから
t.ContinueWith(()=>...);
と継続タスクを付け足した場合、
付け足した時点でhogeが終わってれば
すぐ継続タスクの処理を開始してくれますか?

311 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 08:32:38.24 ID:vAlWKxD3a.net]
>>300
はい

312 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 09:09:41.77 ID:CvIYGZ/W0.net]
なんならTask.CompletedTaskからでもContinueWithできる

313 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 11:29:57.72 ID:O5e9hp9mM.net]
>>299
オライリーのヘッドファーストオブジェクト指向がおすすめ

314 名前:デフォルトの名無しさん [2019/01/16(水) 16:28:16.62 ID:UcQqPOFa0.net]
ついでに、ユニットテストを身につける本をだれか教えてくれんかな
どの入門書もテストについて全く教えてくれんがどうなってんだ・・・・

315 名前:デフォルトの名無しさん [2019/01/16(水) 16:40:21.97 ID:vTKVQdGXF.net]
そのうちテストのテストも書きたくなってくる

316 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 18:30:37.61 ID:rdmn+dmd0.net]
なかなかゲームの自動プレイを実装するの難しいな〜

317 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 19:00:09.87 ID:uHZTYjv/a.net]
>>241 >>245 >>306
>>1

318 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 19:04:33.77 ID:rdmn+dmd0.net]
1は俺の書き込みちゃうでぇ

319 名前:デフォルトの名無しさん mailto:sage [2019/01/16(水) 20:32:03.28 ID:LiM0dr73p.net]
>>303
どうもありがとうございます
java c#を習得している人が前提の書籍のようですね
オブジェクト指向の勉強には良さそうな本で助かります
javaも知らないので、今度丸善にでも行って太刀打ちできそうか、少しみてから判断しようと思います



320 名前:デフォルトの名無しさん [2019/01/16(水) 21:05:07.42 ID:wbo0XsPzd.net]
>>301
>>302
ありがとうございました

321 名前:デフォルトの名無しさん [2019/01/18(金) 05:08:46.83 ID:bjcECFHM0.net]
すまんが、VisualStudio2017についてる.NET Core2.1って、2.2にするにはどうすればいいの?
勝手に入ったんだからVisualStudio周りからアップグレードする方法があって良いような気がするものの・・・・どこにあるんだろ!?
https://dotnet.microsoft.com/download
それともこっからダウンロードしてきて入れちゃえば良いのかな?

322 名前:203 mailto:sage [2019/01/18(金) 07:03:56.21 ID:3+zdHjT80.net]
>>287
動物スーパークラス作って猫クラスと犬クラス作って猫にニャーニャー 犬にワンワンと鳴かせるプログラム作りな
完成したらオブジェクト指向習得

これで月18万の8次請非正規になれるよ
面談では経験8年で勘定系COBOLの経験有りと答えてね

323 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 07:26:09.39 ID:UV6kIYNk0.net]
>>311
VSのインストーラから入れられるのはLTSだからか知らんが今のところ2.1まで
2.2はSDKで入れてプロジェクト毎にターゲットとして指定すればおk

324 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 07:46:49.16 ID:tSI143EMa.net]
>>312
意地が悪いな

325 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 09:51:47.00 ID:LKOsIFRz0.net]
オブジェクト指向は色々勉強するより
ちょっとしたゲームでも作ったほうが分かりやすいと思うわ

モンスターとヒーローを作って相手を攻撃するメソッドと攻撃を受けたときにダメージを受けるメソッドを書いて 終わり

326 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 11:05:46.51 ID:OxZoH0bi0.net]
非同期のファイル検索処理を途中でキャンセルしたいのですが
時間がかかる処理はDirectory.GetFilesなので
CancellationPendingをどこに書いても処理が終わるまでキャンセルされないのですが
どう書けばよいでしょうか
https://dotnetfiddle.net/xYNYrk

327 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 12:09:48.64 ID:FhyCLWa9d.net]
>>316
こういうやつ?
https://qiita.com/Kosen-amai/items/20868649f10b119ceb40

328 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 12:11:43.78 ID:70siMoMg0.net]
>>316
Directory.GetFiles()の代わりにDirectory.EnumerateFiles()を使う

329 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 13:00:12.01 ID:Xg90leRQM.net]
>>315
ゲームはオブジェクトと環境との間のインタラクションが多すぎるからオブジェクト指向を学ぶには適さない
プロでも結局全部グローバルスコープでアクセスできるようにしとけみたいな設計にしかならん



330 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 14:06:54.39 ID:LKOsIFRz0.net]
じゃあやっぱ>>312がベストアイディアだな

331 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 17:53:25.90 ID:3+zdHjT80.net]
俺が先輩なら新人に自動車クラスとタイヤクラス作らせて型継承でタイヤ交換






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<273KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef