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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7bde-MYX9)
垢版 |
2017/11/07(火) 21:11:25.20ID:LeQqgpmT0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part132
http://mevius.5ch.net/test/read.cgi/tech/1507543256/

■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/

■コードを貼る場合は↓を使いましょう。
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/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
590デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/19(日) 07:19:50.08ID:5IbV37Zg0
すまん、これは間違い
591デフォルトの名無しさん (ワッチョイ f9b3-AWKa)
垢版 |
2017/11/19(日) 09:53:15.87ID:RgqRbH7C0
RubyはPerlより優れていてPythonより劣っている。
592デフォルトの名無しさん (ワッチョイ 9171-jqfw)
垢版 |
2017/11/19(日) 12:26:49.81ID:/vA5wcYG0
>>581
これで同じことやってる
https://github.com/zabaglione/ObjectRotateClamp/blob/master/ObjectRotateClamp.cs
2017/11/19(日) 12:35:27.94ID:E5DVFTo40
もう、自分でゴリゴリロジックを書くのが馬鹿らしくなってきた。

何処かの偉い人が言っていたが今のプログラミングは工学じゃなくて科学だと。
nugetか何処かでライブラリを拾ってきて、ひたすら実験を繰り返し、
自分の期待通りの結果が得られるかどうか判定するのみ。
2017/11/19(日) 13:13:49.58ID:CpArH3DxM
ドメインロジックもそれでできるならいいけどね
できないでしょ
2017/11/19(日) 13:23:38.14ID:4mwAxl/ka
>>593
むしろそれのどこが科学なのかとw

電気屋も建築屋もパーツや材料がスペック通りの性能を持ってるか
実験するけど、それを科学とは言わないと思うよw
2017/11/19(日) 13:31:47.12ID:T31pkR2W0
今週はずっとlockとかMoniterとかManualResetEventSlimとか
new Thread(new ThreadStartとかTask.Factory.StartNewとかTask.Run
などなど書いていて頭痛くなってきた、やり方いろいろありすぎ
2017/11/19(日) 13:34:25.58ID:CpArH3DxM
今だとほとんど使わないよねその手の非同期ライブラリ
2017/11/19(日) 13:39:52.27ID:+rKwXo5m0
>>592
ひとまずこれをブチ込んでみたら思った通りに動いた!
よく見つけてくれましたね!ありがとうございます!

いまから一個ずつ理解するため勉強します。


他のみなさんも親切にどうもありがとうございました!
今回の件はとりあえず一件落着です。
2017/11/19(日) 13:40:17.88ID:E5DVFTo40
>>595
現代のプログラミングは科学だって言ってるのオレじゃないけどねw

ソフトウエアってパーツや材料みたいなきちんとしたスペックなんかは無いし
ソースが巨大でブラックボックス化しているので
自然科学の実験と観察のようだと皮肉って言ってるんだと思う。
2017/11/19(日) 13:42:55.02ID:E5DVFTo40
>>598 の人も実験と観察の世界だw
2017/11/19(日) 13:44:15.53ID:Plho4dsNM
>>597
いや全部使うだろ
マルチスレッドといえば、社内にParallel厨がいてうざいわ
ボトルネックになってないのに無駄に並列化するのやめろ
オーバーヘッドを増やすだけで全く速くなってないんだよ
2017/11/19(日) 13:47:26.35ID:CpArH3DxM
>>601
いや使わんよ
スレッド間の結合が強くなりすぎる
2017/11/19(日) 13:49:44.71ID:CpArH3DxM
Taskは使う
他は保守性下げるから使いたくないし使わなくても問題ない
2017/11/19(日) 13:52:13.40ID:E5DVFTo40
>>601
そういうヤツに限ってLockがなんだか分かってなくて共有リソースのロックが放置プレイ。
たまたま動いているような状態だ。
2017/11/19(日) 15:22:20.18ID:k+hZMr200
Taskは普通に使うけど、わざわざThreadを使うケースってなんかあったっけ?
2017/11/19(日) 15:32:26.34ID:E5DVFTo40
>>605
Task.Runってメインスレッドより早く終わるのが前提でしょ
メインスレッドと同時に立ち上げて上がりっぱなしのだとThread.Startでしょう。
2017/11/19(日) 15:44:54.87ID:k+hZMr200
>>606
LongRunningじゃダメなの?
2017/11/19(日) 15:55:49.72ID:E5DVFTo40
>>607
へぇ〜、スレッドプールを消費しないオプションがあったんんだ。
でも、Thread.Startを使わないでTask.Factory.StartNewに
TaskCreationOptions.LongRunningを付けて実行するメリットって何があるのだろ?
2017/11/19(日) 15:58:44.65ID:k+hZMr200
顔真っ赤やんけ・・・もういいわ
2017/11/19(日) 15:59:36.35ID:Ay/cPvn90
最近こういう下らねープライドで食い下がる奴多いな
2017/11/19(日) 16:00:15.24ID:Ay/cPvn90
もちろんid真っ赤な方に言ってるんで誤解せんといて
2017/11/19(日) 16:09:07.36ID:E5DVFTo40
>>609
真っ赤とかどうとかじゃなくて素直に聞いているだけなんだけどな。
Task.Runはお手軽だけどTask.Factory.StartNewにそれほどのメリットを感じないので聞いてみた。
2017/11/19(日) 16:54:48.98ID:CpArH3DxM
やれやれ
2017/11/19(日) 16:57:32.50ID:0lccfPn/r
過去の遺物
今はTask.Run一択
2017/11/19(日) 16:59:16.27ID:CpArH3DxM
使いたいなら使えばいいよ誰も文句は言わん
仕事で遭遇しなきゃ害はない
616デフォルトの名無しさん (ワッチョイ 917e-jqfw)
垢版 |
2017/11/19(日) 17:17:53.28ID:YUYxzc/40
なんだこいつら...
その人は普通にThreadでいいものを無理してTaskでやる意味聞いてるだけじゃん....
なんで突然キレ出したのか謎すぎる...
2017/11/19(日) 17:23:28.67ID:E5DVFTo40
>>613-614
だから、メインスレッドと同じ寿命のスレッドはTask.Runでどうするんだよ。
答えられないのなら、煽るような真似をするな。
2017/11/19(日) 17:39:24.07ID:nV3+UDVnM
>>614
過去の遺物
今はasync/await一択
2017/11/19(日) 17:46:38.44ID:jnbFiabv0
>>618
Taskとasync awaitってめっちゃ紐付いてるじゃん
切り離して考えるのはおかしいぞ
620デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/19(日) 17:53:11.85ID:5IbV37Zg0
>>619
Task.Runを自分で書くのは過去の遺物ってことじゃね?
2017/11/19(日) 18:39:57.70ID:CpArH3DxM
>>616
逆ってこと
2017/11/19(日) 18:51:04.39ID:T31pkR2W0
過去の遺物と断言できるのはThread.suspend
623デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/19(日) 19:30:29.96ID:5IbV37Zg0
Unityとか出て来たから初めて使ってみたけど楽しい��
2017/11/19(日) 19:34:33.51ID:2mKNwU/B0
.net4.0までの環境で仕事してるおれにも同じ事いえんの?
2017/11/19(日) 20:01:28.15ID:8FVAlHGr0
>>624
なぜサポート切れを使うんだ?
2017/11/19(日) 20:08:02.55ID:NX3L6kgWa
XP使ってるエンドユーザーを切り捨てできなきゃそうするしかないね
2017/11/19(日) 20:33:47.12ID:+rKwXo5m0
>>623
今更感はあるのでしょうが、僕も数日前に初めてUnity(C#も)触ったんですけど
すごいですよね!今ってこんな感じにゲーム作れるんですね・・・

僕の場合3Dモデラーなんで、覚える事いっぱいだけど
プログラム出来る人なら無料のアセット入れたらすぐさまゲーム作れそうですね
2017/11/19(日) 22:46:03.87ID:a21FIb9I0
>>608
キャンセルや例外の処理などを他のタスクと同列に扱える。
それらが必要無いなら特にメリットも無いけど、Threadクラスに拘るメリットも無い。⇒Taskで一本化
2017/11/19(日) 23:06:57.29ID:E5DVFTo40
>>628
ありがとう!
そう言う答えが欲しかった。
メインスレッドと同時に起動しっぱなしになるスレッドをTaskで起動すると
Task内で発生した例外がTask終了時に一気に飛んでくるという解釈でよいのかな?
それだと使いにくいな。
2017/11/19(日) 23:10:42.79ID:E5DVFTo40
プログラム終了時に例外が発生することがあるが
ひょっとして.NETライブラリ内のTaskが災いしてる?
2017/11/19(日) 23:22:19.54ID:kef1Qlbp0
普段の行い
2017/11/19(日) 23:27:16.64ID:KzEdu68P0
えぇ……
2017/11/19(日) 23:32:38.48ID:rl2qpTKV0
>>630
自分で作った立ち上げっぱなしのスレッドorタスクの後処理をしてないんだろ
>>631で合ってるなw
2017/11/19(日) 23:40:03.47ID:rl2qpTKV0
立ち上げっぱなしかどうかは関係ないか
そこは訂正しとく
635デフォルトの名無しさん (ワッチョイ 9102-jqfw)
垢版 |
2017/11/20(月) 00:18:59.27ID:i2xgyqGp0
ダッセ
2017/11/20(月) 04:47:41.41ID:LQqpoEbp0
>>625
知らんがなw上があほなんだよ
2017/11/20(月) 06:17:01.54ID:U7p2GA3b0
>>631
この業界定番のギャグだな。
2017/11/20(月) 06:17:56.26ID:U7p2GA3b0
>>633
nugetで拾ったライブラリの中の人の行いが悪いからだな。
2017/11/20(月) 07:14:49.97ID:nPsSyBEn0
>>636
お前も同類だけどな
2017/11/20(月) 08:04:56.95ID:XyKfixC2r
>>629
逆で未処理の例外があればTaskが終了する
それはThreadと同じ
2017/11/20(月) 08:07:46.65ID:FVq6Osty0
よくあんなゴミに声をかけようという気になるものだ
類は友を呼ぶからか?
2017/11/20(月) 08:09:30.80ID:XyKfixC2r
上の人からの
古い方が安心だから
と訳が解らない理由で.Net3.5を採用しようとしてる新規プロジェクトがあるw
当然現場は猛反対しているが
2017/11/20(月) 08:30:36.23ID:OymZQAJWM
>>642
変化を極端に恐れるジャップ体質どうにかしてほしいな
2017/11/20(月) 08:37:53.75ID:phc3FRBoM
>>640
wait, resultのとき以外でも落ちるのか?
2017/11/20(月) 08:40:57.62ID:1G6nIlxwM
民族性じゃなくて契約の問題
それでコストが少し増えたとしても成果じゃなく工数で金取るから不利益にならないし、
客の事業じゃなく作業に対して責任を負う以上はもどうしてもオーバークォリティにならざるを得ない
自社サービスの会社だと軽いノリでバージョン上がるぞw
2017/11/20(月) 08:43:07.45ID:phc3FRBoM
>>642
多分、安心と言っている意味が違うかも。
.NET3.5はMSが終了宣言できないバージョンになる。
vb6の様にゾンビの如く生き残り安泰w
647デフォルトの名無しさん (ガックシ 0666-jqfw)
垢版 |
2017/11/20(月) 08:49:09.41ID:Kfz9fY2x6
>>641
思い通りならなくてドンマイw
2017/11/20(月) 08:55:17.32ID:FVq6Osty0
ゴミが染るから触んな
2017/11/20(月) 09:02:42.76ID:phc3FRBoM
>>645
受託じゃNode.jsなんて使う機会は無いもんね
自社サービス会社のがプログラマーは楽しそう
2017/11/20(月) 09:38:42.97ID:zQ7I4hEQM
PCLって美味しいの?
2017/11/20(月) 11:44:42.83ID:bl/e+CdyM
>>639
おまえは開発環境変更できる権限あるのか。いいな。
2017/11/20(月) 11:46:23.27ID:bl/e+CdyM
>>642
async await使えないの
2017/11/20(月) 11:58:13.80ID:QH5eJXusM
ギョーミーなアプリでasync/await使う?
2017/11/20(月) 12:14:21.61ID:UOv8Me/NM
>>653
使わない
というかawaiasyncってなんだ?って連中の方が多数派なので使えない
冗談みたいなホントの話
2017/11/20(月) 12:18:41.10ID:QH5eJXusM
>>654
使ってても待たせてるだけで何も出来ないとか
意味ないじゃんw っての
2017/11/20(月) 13:24:27.66ID:Q9UPjx7d0
>>650
デスクトップだけなら共有プロジェクトでいい
2017/11/20(月) 17:43:42.18ID:XyKfixC2r
>>653
バリバリ使ってる
知らない人でも説明すれば大体は解ってくれる

こんな便利なものがあるんですね!と感動する人
ふーんな人
非同期何それ美味しいの?な人
説明では解ったと言いながら実装では悪戦苦闘してる人
反応は様々だね
2017/11/20(月) 18:00:51.43ID:bl/e+CdyM
>>657
おれなんかTaskで匿名メソッドシコシコ書いてるわ!
2017/11/20(月) 18:48:31.14ID:OyLLFCrh0
すげーでかい図を出力したいんですがフォーマットは何がオススメですか?
画像だとデスクトップより大きくなると表示できないようです
2017/11/20(月) 18:53:19.76ID:aqwGZvu20
>>659
>デスクトップより大きくなると表示できない
こういうこと?
スクロールバーを付けて画像を表示する
http://dobon.net/vb/dotnet/graphics/scrollimage.html#section1
2017/11/20(月) 19:22:27.44ID:OyLLFCrh0
>>660
あ、申し訳ないです
フォームでエラー出てました
2017/11/20(月) 19:33:32.37ID:aqwGZvu20
>>661
x64(AnyCPU)で動かす
それがだめなら自分で必要なだけ読み込んで部分的に表示するしかない
GDI+にはそんな機能無かったと思うから
2017/11/20(月) 19:34:30.92ID:U7p2GA3b0
>>654
知識が.NET2.0くらいで止まってる人が多いよ。
それ以上の言語拡張は開発者置いてけぼりのMSの自己満足かもね。
664デフォルトの名無しさん (ガックシ 0666-jqfw)
垢版 |
2017/11/20(月) 19:40:12.58ID:YF/poHTW6
>>661
なんのエラーが書けや
2017/11/20(月) 19:43:30.41ID:U7p2GA3b0
>>659
Open XML
2017/11/20(月) 19:55:19.01ID:U7p2GA3b0
>>657
非同期何それ美味しいの? 調理間違えても、お腹壊さない?
2017/11/20(月) 20:17:10.91ID:rFfN6JGKM
>>663
というか、アメリカは内製が中心だからバージョンについて日本ほど保守的にならなくていいんだと思うよ
2017/11/20(月) 20:19:38.39ID:aqwGZvu20
>>664
エラーは今回どうでもいい情報なんだよな
むしろ表示する用途・解像度・実行環境の方が重要
x64なら10000*10000 pixel*32bppのBitmapでも余裕で表示できるけど
2017/11/20(月) 20:23:29.97ID:e0aI6m0P0
ただのコーディングミスでNullReferenceとか最悪コンパイルエラーまである
2017/11/20(月) 20:34:17.67ID:U7p2GA3b0
>>667
実際の実装に無難で枯れた技術を使うのと
新しい技術に無知なのは違うと思うけど
2017/11/20(月) 21:10:30.74ID:LQqpoEbp0
>>659
ttps://qiita.com/bsh_tw/items/b8b2f845d85d1f1dc4e9
こんな感じ?
2017/11/20(月) 21:17:18.15ID:rFfN6JGKM
>>670
そういう問題じゃないの
内製だと、選んだ技術について組織の中でノウハウを蓄積しやすい
また、開発も運用保守もユーザーも同じ主体なのでJVMのバージョンアップでベンダーに億単位でぼったくられるようなことにはならず、
更新の障壁が比較的低いんだよ
673デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/20(月) 21:25:02.39ID:UI9vB3qq0
>>668
いや、、フォームのエラーだけじゃわかんねえだろ、、、
本当にお前の思ってるのが原因か、、?
2017/11/20(月) 21:25:54.16ID:U7p2GA3b0
>>672
ま、見積もりありきの受託開発とリスクのある新技術の導入が合わないのはあるとは思う
なんでc#スレでJVM w
2017/11/20(月) 21:28:21.71ID:aqwGZvu20
>>673
考え方が逆だと思うんだよな
エラーだけ示されて解決できるのならそうしたらいいと思うけど、どっちにしても本人が何も言わないのならどうしようもない
2017/11/20(月) 21:28:24.50ID:y/6cZRj30
区別が付いてないんでしょ
2017/11/20(月) 21:28:54.04ID:2/KPMrVLr
内製じゃないけど開発の各関係部署にプロトタイプを配るのにクレームがつかない為に.NETのバージョンを下げてた人達がいたなあ
当然製品版も下げてたww
その話聞いて笑うしかなかった (´・ω・`)
2017/11/20(月) 21:31:06.19ID:EjockrVW0
ライセンス料ケチってVS2010とか使ってるのが原因の場合もあるぞ
2017/11/20(月) 21:47:30.51ID:Rfx0F+NsM
>>672
内製は銀の弾丸じゃねーぞw
680デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/20(月) 22:00:54.42ID:UI9vB3qq0
>>675
なら聞けよ
何言ってんだ
2017/11/20(月) 22:03:17.71ID:U7p2GA3b0
落ち着いて ( ´・ω・`)_且~~
2017/11/20(月) 22:12:04.01ID:gpmTl3Lx0
LINQの書き方で質問ですが
特定の教科の赤点の人数を調べるとした場合
数が少なければ↓のような処理で済むのですが

public class Test
{
public string  名前 { get; set; }
public int 国語 { get; set; }
public int 数学 { get; set; }
}

List<Test> ListTest = new ListTest ();
string Kyouka = "国語";
int akaten = 0;

if(Kyouka == "国語")
{
akaten = ListTest.Where(x=>x.国語 < 30 ).ToList().Count;
}
if(Kyouka == "数学")
{
akaten = ListTest.Where(x=>x.数学 < 30 ).ToList().Count;
}

数が増えるので↓のような書き方がやりたいんですが無理ですか?

akaten = ListTest.Where(x=>x.Kyouka < 30 ).ToList().Count;
2017/11/20(月) 22:15:11.19ID:ThNisUZnM
>>678
dotnet cli + VSCodeでいいじゃん
商用無料で最新バージョン使えるぞ
SCDなら配布も楽だし
なんで流行らないんだろ
旧バージョンもう要らんでしょ
684デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/20(月) 22:16:16.66ID:UI9vB3qq0
種類が増えるなら教科ごとにプロパティ作るんじゃなくて教科名+点数の辞書のリストにするのが自然だと思う
2017/11/20(月) 22:21:19.53ID:rFfN6JGKM
>>682
データ設計が悪い
テスト結果(生徒ID, 科目, 点数)
生徒(生徒ID, 名前)
この方がSQLフレンドリー
2017/11/20(月) 22:30:41.09ID:ThNisUZnM
>>682
C#じゃないけどSQLアンチパターン読んだほうがいい

var map = new Dictionary<string, Func<Test, int>() {
["国語"] = t => t.国語,
["数学"] = t => t.数学,
};

var ans = map.Select(e => new {
科目 = e.Key,
赤点人数 = TestList.Count(t => e.Value(t) < 30),
});

foreach(var a in ans)
Console.WriteLine($"{a.科目}: {a.赤点人数} 人");
2017/11/20(月) 22:40:41.76ID:aO8f69d6a
>>682
それ、LINQいっこも関係ないような気が...
Func<Test, int> getScore = (x) =>
{
  if (Kyouka == "国語") return x.国語;
  if (Kyouka == "数学") return x.数学;
};
akaten = ListTest.Where(x => getScore(x) < 30 ).ToList().Count;
2017/11/20(月) 22:50:14.07ID:rFfN6JGKM
>>687
それは毎回無駄な科目チェックが入るから非効率
せっかくデリゲート使うんなら最初にgetScoreを科目に応じたものに差し替えるのがスマート
もちろんそれ以前にデータ設計が間違ってるけど
2017/11/20(月) 22:51:04.11ID:aO8f69d6a
>>688
そりゃそうでしょうけどストレートにオーダーされたものを出してるだけなんでw
690デフォルトの名無しさん (ワッチョイ 4175-jqfw)
垢版 |
2017/11/20(月) 22:52:45.76ID:UI9vB3qq0
var akaten=ListTest.Count(x=>(int)(typeof(Test).GetProperty(Kyouka). GetValue(student))<30);
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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