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

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

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

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part138
https://mevius.5ch.net/test/read.cgi/tech/1528194762/
■コードを貼る場合は↓を使いましょう。
http://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
http://referencesource.microsoft.com/
613デフォルトの名無しさん
垢版 |
2018/09/18(火) 02:11:14.63ID:6Xg+Nv26
>>611
進化続けてるし、余裕であると思う。
614デフォルトの名無しさん
垢版 |
2018/09/18(火) 02:21:27.54ID:Ito09mAU
そんでC++みたいにバージョンが制定年になると
正直機能的には3.0くらいであまり困らんのだけどね
簡潔に書けるとかはあるけど
ライブラリだけ拡充してくれれば
2018/09/18(火) 05:59:52.79ID:GWyG2DaA
await無しで非同期処理書きたくないな
2018/09/18(火) 08:10:13.67ID:gblGntZ1
LINQがないと死ねる
というかLINQがないとC#のアドバンテージを全く感じない言語になってしまう
それとawaitもそうだけど、C#はJavaに対してコンカレントプログラミングの能力に
まだまだ欠けていると思う
Javaの強みはjava.util.concurrentにあると思う
2018/09/18(火) 08:19:55.28ID:O8EaoTgS
java.util.concurrentってほとんど.NETにも同じのあるぞ
Javaのあの〇〇Queueとかクッソ使いづらい並列フロー制御系に対応するのはTPL Dataflowがある
2018/09/18(火) 08:39:24.89ID:PTaE8gsW
>>616
メソッドにした方が2回目同じ処理するときにいいよ
619デフォルトの名無しさん
垢版 |
2018/09/18(火) 09:03:15.68ID:X6vi7zjN
python如きには負けんよ
2018/09/18(火) 10:06:07.53ID:ml+9R6/h
負けてるんだよなあ
621デフォルトの名無しさん
垢版 |
2018/09/18(火) 10:10:26.45ID:JkFBL6IZ
結局Windowsアプリケーションにしか使われてなくて
VBの代わりくらいのポジションなんですかね・・・
2018/09/18(火) 10:24:42.25ID:Z0oFh/rY
>>617
そんなんどこにあったっけ?
実際java.util.concurrentパッケージの充実度は凄いぞ
2018/09/18(火) 10:52:42.36ID:9AO9WU5h
UnityとかTypeScriptとか、色々と使われているでしょ
2018/09/18(火) 10:58:02.59ID:PTaE8gsW
>>620
連想配列分負けてる気がするね
c#には付けないで欲しかったけど
ちょっと前に付いた?
2018/09/18(火) 11:04:50.17ID:9sIU0wgT
>>624
大昔(2.0)からある
System.Collections.Generic.Dictionary<TKey,TValue>
でなくて?
2018/09/18(火) 12:05:26.41ID:ONx2VSk9
>>621
iOSやAndroidアプリにも使われてますよ
627デフォルトの名無しさん
垢版 |
2018/09/18(火) 12:54:57.79ID:/G1owK98
C#でカードゲーム作るため
テキストファイルに保存した
一行分をカードデータにしたいのですが

行指定はどうやるのでしょうか
2018/09/18(火) 12:59:13.48ID:2NhqeWSI
1行ごとにList<string>に入れる
2018/09/18(火) 13:34:02.44ID:Z0oFh/rY
jsonか何かにしたほうが楽だと思うけど…
630デフォルトの名無しさん
垢版 |
2018/09/18(火) 13:39:50.95ID:X6vi7zjN
.Net4.0までの環境で、Task.Runが使えないのですが
Task.Factory.StartNewを使う場合、戻り値を処理するContinueWithに該当する書き方はあるのでしょうか?
2018/09/18(火) 14:06:00.86ID:OtLk5TCg
>>622
System.Threading
System.Threading.Tasks
System.Threading.Tasks.Channels
System.Threading.Tasks.DataFlow
System.Collections.Concurrent
ちゃんとこの辺りを見よう
2018/09/18(火) 14:25:25.74ID:G1Vdk7ct
>>630
Task<T>を作るのが.Runだろうが.Factory.StartNewだろうが
その後の記述は特に変わらないけど
2018/09/18(火) 14:29:51.48ID:OtLk5TCg
最近の.NETってMS製の公式な標準ライブラリですら平気でNuGetだけで提供されるようになったけど
ビルドにインターネットからのダウンロードが必要なのはギョウムワールドだと問題になるところが多そう
ジャパニーズドカタは氏ねってことかな
2018/09/18(火) 14:38:44.61ID:XSFiXPPc
>>625
タプルと合わせないと似たような機能にならない気がする
2018/09/18(火) 14:50:46.95ID:VPT0VaYi
ぎょうむわーるどなんてなおさら最近の開発環境とは縁がないのでへーきへーき
636デフォルトの名無しさん
垢版 |
2018/09/18(火) 15:15:36.23ID:X6vi7zjN
async await使わせてくれー
2018/09/18(火) 15:31:00.86ID:ml+9R6/h
>>633
世界平和に繋がって最高だね
2018/09/18(火) 15:39:57.73ID:XSFiXPPc
>>636
気軽に使うと問答無用でバグ票切られる機能だろそれ

まず待ちたいならタイムアウトを設定しないと
そもそも何がどんな状態で終了することを想定している?
リトライはいらない?
お前は何もしなくてよかったの?
自分の次の動作は待ってるタスクの結果次第だから待ってたのに何も受け取ってるように見えないけど?

ってぐらいは考慮してないとだいたいバグってる
2018/09/18(火) 20:45:48.05ID:PujpLEtU
>>621
Google Cloud Platform Japan Blog
ポノス株式会社の導入事例: eスポーツ対応の対戦型ゲームを Compute Engine ベースで構築、レイテンシーの比較で最大 2 倍の差が採用の決め手
https://cloudplatform-jp.googleblog.com/2018/08/ponos-esports-compute-engine.html

> 特長的なのは、バトルサーバーで、アプリケーションが C# で書かれています。
>「Windows 上で C# を動かすのではなく、.NET Core を使って CentOS の上で C# を動かすという珍しい構成になっています。」
2018/09/18(火) 22:17:49.42ID:xEaDxwfq
>>633
ローカルのリポジトリ立てればいいやん
2018/09/18(火) 22:40:10.00ID:mQbB6K+e
Javaと比べるとビルドから実行時までサクサク動くから気持ちいい
2018/09/19(水) 01:24:11.00ID:4W6jsUF3
uiスレッドって1個だけ?
datagridviewのデータソースにdatatable突っ込んで何十万件も表示させてます
高速化する方法ないですか?
2018/09/19(水) 06:12:31.75ID:JwM3WN1L
その設計が間違ってる
何十万件も一度に表示www
2018/09/19(水) 08:06:04.74ID:4W6jsUF3
それが一億とかのときもあるんです
2018/09/19(水) 08:12:17.74ID:SZbHS6KX
Form1.csに書くコードに対し、これは別クラスに書いとけってコードは例えばどんなものですか?
2018/09/19(水) 08:25:39.24ID:eYANVd+E
動作にフォームのインスタンスが要らないもの
2018/09/19(水) 08:26:54.31ID:eYANVd+E
>>644
頭から改良した方がいい
皮肉じゃない
真面目に言ってるぞ
2018/09/19(水) 08:45:08.99ID:KwEqagqF
そこまで行くと高速化よりも
コルーチンで徐々に表示したりしてuiスレッドを止めないようにしたほうがいい
どう考えても設計見直したほうがいいけど
2018/09/19(水) 09:10:17.79ID:wQAi5nmu
>>644
1億を一度に欲しいの?
1億のレコードを画面に表示すんのか?
2018/09/19(水) 10:10:10.94ID:CHaa5XJ7
>>644
日付の期間指定を無制限にしてるなら、最大90日にするとか
2018/09/19(水) 10:12:39.12ID:buYyvBpb
DataGridViewってクッソ重いのと、DataTableとDataSetとDataViewもあるし、そもそもその先にはデータベースもあるわけで
DataGridViewとデータベースだけでいいんじゃね?って思うことがよくある
2018/09/19(水) 10:18:16.90ID:y7jhKYXL
webで作ったら普通に一億件表示しようなんて思わないよね
どうしてdatagridviewだとそのまま突っ込むのか
2018/09/19(水) 11:04:13.47ID:9VikJa+v
Webも最近はページングが廃れてきて遅延読み込みが増えてる
ついに時代がVB厨に追いついた
2018/09/19(水) 11:22:39.36ID:Ei/RIVZy
それも程度問題

数千件ならそれでいい(というかそうしなかったのはただの技術側の都合であって
ユーザーの利便性を追求してたわけじゃない)けど、件数が千万のオーダーになれば
話は別に決まってるよ
2018/09/19(水) 13:53:52.66ID:1pViUBUC
DataGridViewは面倒でも仮想モードでやらないとデータ増えると加速度的に遅くなる
2018/09/19(水) 15:20:13.47ID:buYyvBpb
仮想モードってなんだっけ?
単に列追加時は描画止めて、追加終わったら表示するやつ?
2018/09/19(水) 17:12:21.14ID:ayfJChiE
画面内にいないやつはそもそもUIに載せないやつじゃない?
2018/09/19(水) 19:06:07.56ID:wQAi5nmu
スレが異なるかもしれんけど、SQLの結果を分割して取れなかったっけ?
2018/09/19(水) 23:52:56.59ID:fl19i0BJ
SQLのページングやね
2018/09/20(木) 03:55:03.13ID:v2140bTt
すいませんC#を始めてみようと思うんですが
基礎からしっかり学ぶC#の教科書か独習C# 新版どっち買うか迷ってます
全く0からの学習の場合どちらが適してると思いますか?又これよりいい本があれば是非教えてほしいです
よろしくお願い致します。
2018/09/20(木) 03:57:43.51ID:ZeDJ2vHp
他の言語を少しでも知ってたら独習c#やね
2018/09/20(木) 04:16:44.52ID:v2140bTt
>>661
ありがとうございます
スッキリわかるjava入門と苦しんで覚えるC言語を読んだことがある程度です。ロベールのCきつくてクラスのとこ詰んだ状態です
少し知ってたら"に当てはまりそうですか?後C#独習って山田って人が書いた新版とハーバートって人が書いたやつの2つありますが
どちらも一緒ですかね、
2018/09/20(木) 04:21:46.90ID:ZeDJ2vHp
>>662
JavaとCに理解あれば余裕ですよ
ハーバートの方が評価高いけど古いです
c#は進化が目まぐるしく2年経つと大きく変わるので新版をオススメします
2018/09/20(木) 06:18:13.84ID:v2140bTt
>>663
どっちも薄い入門書なので理解があるかはちょっと自信ないですが……大丈夫かなぁ
C#は比較的新しい言語みたいですがそんなに内容に違いあるんですか
分かりました。新しい方取り敢えず買ってみます。ありがとうございます。
665デフォルトの名無しさん
垢版 |
2018/09/20(木) 07:16:44.73ID:lp8Y5Sjf
>>664
独習を進める。新しい技は使われていないが、これだけ基礎を抑えた本は少ない。逆に独習にあるような基礎を抜かして最新技術だけ学ぶと高確率でコピペプログラマーになる。
2018/09/20(木) 08:28:38.09ID:OZxd0eW0
1. Ruby, Python, JavaScript などの動的言語
2. Java, Kotlin, C# などの静的言語
3. C/C++ などのポインタのある言語

この順番で、勉強する。
例えれば、123 は、小中高大学の順番

君は小学生だから「たのしいRuby 第5版、2016」始めた方がよい。
まず動的言語で、プログラミング・オブジェクト指向を、かなり固めた方がよい

レベル1から、10, 20, 30と進める人は、考え方を自分のものにしていってる。
30から勉強を始めても、進歩しない。
だから、レベル20に落とす。
それでも難しかったら、10に落とす

つまり、伸びる人は、自分のレベルを知っているから、それに勉強のレベルを合わせる。
逆に伸びない人は、自分のレベルに関係なく、C++ などにこだわる

自分を馬鹿だと認めた人の方が、プライドが低いから、
低いレベルから勉強するから、結局は伸びる!

一番ダメな人は、プライド・理想が高くて、方向転換せず、現実的に成果がない人!
この手の人は、どこへ行っても嫌われる。
口では大きい事を言うけど、一定期間で、成果が出せない人

こだわりとかじゃなくて、勉強とは上達する道筋を探すもの!
C++ 一つの勉強時間よりも、動的言語3つを軽くこなせる!
しかも理解力が飛躍的に上がる

これが上達する道筋。勉強のコツ
2018/09/20(木) 09:12:10.06ID:4jxtU7uW
入門ならideががっつりコード補完してくれる静的言語の方がよくない?
2018/09/20(木) 09:20:26.88ID:5eDdLMhs
>>666は書籍の宣伝のために開発されたAIボットだから相手にしちゃダメ
2018/09/20(木) 09:21:01.85ID:OZxd0eW0
C# は、共変性・反変性とか、概念が難しい

まだ、Ruby のダックタイピングとか、オープンクラスの方がマシ
2018/09/20(木) 09:30:56.78ID:SE3y3kP3
ここにもRubyキチガイが
671デフォルトの名無しさん
垢版 |
2018/09/20(木) 09:36:06.18ID:lp8Y5Sjf
>>666
C#もポインタ使えるよ
2018/09/20(木) 09:41:50.01ID:kFoauySG
ガイジに触るなよお前素人か
2018/09/20(木) 09:51:05.51ID:fnf4DFpj
たのしいRubyはもう古いし楽しくない
パーフェクトRubyのほうがマシ
674デフォルトの名無しさん
垢版 |
2018/09/20(木) 12:27:04.89ID:lp8Y5Sjf
>>672
すんません
675デフォルトの名無しさん
垢版 |
2018/09/20(木) 15:07:08.67ID:7FqSQ4ZO
次世代言語スレから追い出されてこんなところで自演してたのかアンチ君
Pythonのステマを封じられたぐらいで発狂しすぎだろ
2018/09/20(木) 16:29:05.65ID:qiFS9yA6
そのスレ見てないからよくわからんけど他のスレにまできて粘着してるのかよ w
ごちゃんこええ
2018/09/20(木) 16:54:21.75ID:D2y+HKaB
>>660
C#に入門するだけなら高い本を買わなくてもWeb上の入門記事で十分。
(本には本でどこでも読めるメリットはあるけど、今時のプログラミングの本は
だいたい分厚くてどこでも読みたいサイズじゃない)

プログラミングに入門する言語としてC#が最適かどうかは微妙。
C#は上級者にはとっつきやすいよく出来た言語だけど、何せ覚えることが多過ぎる
2018/09/20(木) 17:53:22.89ID:KIaLDywn
代案ださんと
2018/09/20(木) 19:03:15.03ID:fnf4DFpj
図書館でc#の本を借りてこればいい
で良さそうなのがあったら本屋で買う
2018/09/20(木) 19:26:38.71ID:CgrjUHeB
初めてのC#でいいだろ
2018/09/20(木) 19:28:26.04ID:iJVr7ybn
ハーバート・シルト氏は独習C++でも名高い、これを超える書籍はまだ生まれていない
682デフォルトの名無しさん
垢版 |
2018/09/20(木) 19:34:07.37ID:DBWB48iV
>>681
でもそれ読んだ結果のおまえな訳やろ?
信憑性ないわー
683デフォルトの名無しさん
垢版 |
2018/09/20(木) 20:26:13.94ID:rVGxs5dI
独習読むなら3版だよな!
2018/09/20(木) 20:31:13.21ID:WCWCO/OJ
C#でDBプログラミングを勉強するのにおススメの資料を教えて下さい。
接続/切断/クエリ送信などの処理をする際に、鉄板といえる手続きがどんなものなのか分かりません。
685デフォルトの名無しさん
垢版 |
2018/09/20(木) 20:35:41.42ID:WlS4D6o/
>>684
https://docs.microsoft.com/ja-jp/ef/core/index
686デフォルトの名無しさん
垢版 |
2018/09/20(木) 21:31:37.32ID:IHzBiPD0
C#でDB扱うならネットで検索した方が早い
687デフォルトの名無しさん
垢版 |
2018/09/20(木) 21:35:22.37ID:DBWB48iV
嘘つくな絶対普通にDBつこた方が速いわ
2018/09/20(木) 21:37:16.90ID:gGegNzBj
>>687
おまえは何を言っているんだ
2018/09/20(木) 21:38:48.49ID:h4Dr8zIJ
ワロタ
2018/09/20(木) 21:52:09.03ID:xtibJYVp
efはsql出来ない人が使うものってことですか?
2018/09/20(木) 22:04:35.37ID:1gZefLOg
クラウドのdbにしてもgoogle関連の超速dbには勝てないんだよなぁ
692デフォルトの名無しさん
垢版 |
2018/09/20(木) 22:07:31.56ID:8NN5YAN4
>>684
書籍でいうとまとめて書いてあるのは
10年前のこれくらいしかないが
https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-MS-ADO-NET2-0-%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%BD%E3%83%95%E3%83%88%E5%85%AC%E5%BC%8F%E8%A7%A3%E8%AA%AC%E6%9B%B8/dp/4891005491
詳しすぎるので「接続/切断/クエリ送信」くらいなら
ネット検索で十分(基本変わってないので)

使えるならDapper使うのがおすすめ
Entity Frameworkはもうちょっと理解が進んでからかな
2018/09/20(木) 23:46:48.16ID:BBvoO4H7
>>690
efはsql知っている人が楽するためのものなので、
sqlやRDBを知らないと訳わからんと思う
2018/09/21(金) 01:51:23.59ID:e4o674sK
ef知ったらもうsql書きたくなくなるぞ
2018/09/21(金) 05:22:27.48ID:IsynsslI
そしてEFが発行するSQLみて手書きしたくなる
2018/09/21(金) 05:49:36.03ID:ibfXzeqr
速度的にはEFもSQLセルフ発行も同じ?
SQLだと複雑な抽出も出来るし一長一短け?
2018/09/21(金) 07:30:51.31ID:mrJQQAUt
一長一短
efのSQLが嫌ならそこだけ直接発行にもできるから使い分けられる
efの生産性はぱねぇけどね
2018/09/21(金) 13:30:57.74ID:IsynsslI
SQLはサーバ側のオプティマイズがあるから、単純に発行した内容だけでは比べられんが
今のところまだEFよりちゃんとSQLできる人間が書いた方がマシなSQLになる印象

だからって、速度的には全て自分でSQL書けって言うほどひどくはない
簡単な選択程度なら誤差の範囲
普通はEF任せで、問題のあるとこだけ自分でSQLチューニングすれば良い
2018/09/21(金) 18:05:43.62ID:xQShnEjp
EFはオブジェクト指向というかリポジトリパターンを前提にした設計なんだよな
ドメイン側をキッチリ設計して複雑なSQLはそもそも必要ないってとこまで持っていけないとうまくハマらない
2018/09/21(金) 20:36:02.24ID:ibfXzeqr
>>699
理解した
noSQLみたいな設計が必要なのか
701デフォルトの名無しさん
垢版 |
2018/09/21(金) 20:46:33.71ID:fCjKI+bL
すみません質問なんですが
WPFってプログラム部分はC#で
GUI部分がXAMLということらしいですが
ということは
アプリとしてC#でできることはWPFでも当然できて
GUIはC#のフォームアプリより更に柔軟に凝ったことができる
という認識でよいでしょうか?
C#ではできてもWPFでは難しいってことはありますか?
漠然とした質問ですみません
2018/09/21(金) 20:56:54.12ID:d21LRhSC
>>701
WindowsFormとWPFの比較なら例えばWPFにはNumericUpDownコントロールがないとか
とりあえず「wpf windows フォーム 違い」で検索してみては
もしくは具体的にやりたいことがあってどっちにしようかという話なら、やりたいことを書いて質問してもらうほうが早い
2018/09/21(金) 21:01:41.42ID:YWBdXOYh
>>701
MSですら使ってないしもうとっくの昔にオワコンしてるから今さらやる必要ない
あとクッソ重い
2018/09/21(金) 21:18:14.63ID:2cEyH6cz
俺は一つのプログラム内でのモジュールの使い回しは無駄だと確信した
guiなんてアプリごと作り捨てろ
gui以外を使いまわすなら検討の余地はある
705デフォルトの名無しさん
垢版 |
2018/09/21(金) 21:30:13.81ID:MqKbhYRD
その前におまえが初心者やと確信してほしかったわ
ええんやけどね別に
2018/09/21(金) 21:57:18.69ID:qgyq16h9
>>701
WPFの基本の部分はc++あたりで作ったDLL
2018/09/21(金) 22:19:46.65ID:buJTAf7s
>>703
嘘は良くない
2018/09/21(金) 22:22:15.09ID:Q76cyRJI
クラス内の static メンバ変数の名称と値をすべて取得する方法はありますか?

public な変数ならリフレクションを使うと取れるのだけど、
クラスの中から実行するのでもよいので private や protected な変数もやってみたい。
ただ気になっただけなので、理由は問わないでください。
2018/09/21(金) 22:40:23.53ID:d21LRhSC
>>708
https://dobon.net/vb/dotnet/programing/typegetmembers.html
試してないけど、ここの改変で出来ない?
2018/09/21(金) 23:54:35.98ID:OrlkLn9C
>>707
事実なんだよなあ
2012年の.NET4.5リリースを最後にほとんど機能追加されてないんだぞ
MS自身新規プロダクトには全く使ってなくて完全にレガシー扱い
2018/09/22(土) 00:04:18.82ID:RA1YahyE
2年ぐらい前だったと思うけど、WPFに事実上の死亡宣告が出たってちょっと話題になったことがあったね

もっとも5年前の時点ですでにこんな記事が書かれてる
https://www.infoq.com/jp/articles/Win8-LOB-Options
2018/09/22(土) 00:04:20.13ID:VyQ6q8Hr
>>710
あれ、使ってないんじゃなかったのかい?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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