ふらっと 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/
2018/09/15(土) 21:56:28.37ID:88GvsHdE
遅いと言えば遅いよ
余計な手数が増えてるから

気になるなら後からでも書き換えればいいだけ
549デフォルトの名無しさん
垢版 |
2018/09/15(土) 21:57:40.02ID:8rxpHkWL
>>547
それはリンキューさんの遅さとゆうより
有り合わせのアルゴリズムの組み合わせで勝負するか
はたまた最適化したアルゴリズムをシコシコ組み立てるか
の違いが大きいのや
2018/09/15(土) 21:58:32.54ID:iPPDwx/Y
その程度の差なんですね
よほど大きなオーバーヘッドでもあるのかと思ってた
2018/09/15(土) 22:09:29.85ID:j1sHLBNC
MSIL勉強したいのですが、参考になるサイトを教えてもらいませんか?
2018/09/15(土) 22:14:24.26ID:nm6j3SBT
MSDN
553デフォルトの名無しさん
垢版 |
2018/09/15(土) 23:09:21.09ID:elLmwu/2
>>542
やべえ
これを読む能力がない・・・
2018/09/15(土) 23:53:24.63ID:iPPDwx/Y
linqの中身はforeachで列挙子を回してる
それは
while(次の要素を取得するメソッド){
要素に対する処理のメソッド
}
に展開される

詳しくないから適当だけど
555デフォルトの名無しさん
垢版 |
2018/09/16(日) 01:03:15.10ID:uYUceUNT
アセンブラでもやってろよ
2018/09/16(日) 01:04:46.36ID:ANojdriP
がっつりパフォーマンスのチューニングしたことあるわけじゃないけど
unityの毎フレーム行われるような処理で使わない限りlinqの速度が問題になることはないんじゃないか?
2018/09/16(日) 06:05:13.06ID:75aeC/cD
プログラムによる
プロファイラで分析しろ
ボトルネックの分析前に100倍遅いのとか1000倍遅いとか言っても何の意味もねえから
2018/09/16(日) 08:07:06.87ID:HxZqM27H
ゲームで描画以外の処理が問題になることは少ない
559デフォルトの名無しさん
垢版 |
2018/09/16(日) 08:29:55.59ID:AZs5fz+o
アプリケーションのプロパティの中にある[設定]という項目で
Properties.Settings.Default.xxxでint型配列の変数を保存したいのですが
できませんでしょうか?
前回使ったパラメータ群を配列で保存して
次回に読み込んで再現したいのですが
別の方法でもいいのですが参考になる解説ページでもあれば教えてください
2018/09/16(日) 09:04:23.29ID:psXGYTXF
>>559
「,」でjoinして文字列で保存、取り出すときに「,」でsplitとかどうだろ?
561デフォルトの名無しさん
垢版 |
2018/09/16(日) 09:25:05.54ID:2ksH8VYk
>>560
まあこれが横道だよね
てか、今ならjsonで保存か
562デフォルトの名無しさん
垢版 |
2018/09/16(日) 09:42:20.10ID:AZs5fz+o
>>560
なるほど!配列を分解して文字列型にするのか!
それなら私の低スキルでもなんとかできそうです
ありがとうございました!
2018/09/16(日) 10:07:09.66ID:aJAMOBK/
例えばアプリケーション終了時に画面のサイズと位置を保存して
次回起動時に設定をロードするとしたら
なにで保存しますか?XML?INI?JSON?
2018/09/16(日) 11:04:54.55ID:rvnq8hQD
>>563
「どこに保存するか」を気にしないならすぐ上に出ているProperties.SettingsのSystem.Drawing.Pointで保存したら
MSの推奨なんだから
2018/09/16(日) 11:12:58.81ID:txQA20Wu
昔からあるVSの定型Tipsだけど
この上から目線な感じは
もっと高度な議論を吹っ掛けてるんじゃね?
くわばらくわばら
2018/09/16(日) 11:25:39.54ID:gTaOdbFs
>>563
俺はXMLで実行ファイルと同じ場所に保存してる
2018/09/16(日) 12:37:43.94ID:ksMt/4i/
>>566
実行ファイルと同じ場所は書き込み権限がなかったりするからMS的にはApplication.UserAppDataPathで得られる場所などを推奨
2018/09/16(日) 12:48:14.51ID:LixUwGN0
>>559
IDEでプロパティの型を選ぶところの中には配列ってなかったっけ
2018/09/16(日) 13:06:53.35ID:16Y59QgZ
場所や形式はなんでもいいけど
読み書きクラスを上手くカプセル化しないと後で変更効かなくなって泣くのでそっちのほうが重要
2018/09/16(日) 13:19:04.65ID:p+qyV3Lh
いや、場所や形式は重要だよ
2018/09/16(日) 13:23:10.99ID:aJAMOBK/
>>564
へーありがとう御座います
調べてみます
2018/09/16(日) 13:32:26.33ID:16Y59QgZ
>>570
重要になるのは後で
開発中はたいして重要じゃないし正解も定かではない
2018/09/16(日) 13:59:51.99ID:hCxE0E+A
>>566
実行ファイルのパスってProgramFilesのとこかな?
あのフォルダーって監視入ってるから、データアクセスでも色々遅くなるかも
2018/09/16(日) 14:01:52.05ID:w97F4Kz1
どこに保存するかはかなり致命的な問題になるから
今から学んでおいて損はないよ
2018/09/16(日) 14:10:32.40ID:uf7cGEex
>>573
ProgramFilesがなんで出てくるかもわからないし設定ファイルのデータアクセスのスピードが問題になるのはおかしい
2018/09/16(日) 14:17:56.47ID:gTaOdbFs
>>567
知ってる。でも自作のポータブルアプリだからそうしてる
インストールするようなもんはC#ではまだ作ったことないわ

>>573
違う。ポータブルアプリだからユーザーが置いた場所
USBのフォルダとかマイドキュメントとか
2018/09/16(日) 14:41:31.05ID:gTaOdbFs
>>569
同意。C#はXMLについては簡単にカプセル化できるのがいい
JSONも簡単なんだっけか?、使ったことないから分からんわ
2018/09/16(日) 14:41:58.58ID:ksMt/4i/
UACが出来てからディレクトリの書き込み制限が厳しくなってるから意識する事は大切ですね
>>574
2018/09/16(日) 19:10:33.14ID:PDDwZiUq
>>559
ここにかいてるやん
https://stackoverflow.com/questions/1766610/how-to-store-int-array-in-application-settings
2018/09/16(日) 19:10:39.97ID:8jdJAOdP
書き込み制限するだけならまだマシなんだが
勝手にリダイレクトしやがったりするからなぁ
それも同じOSでもUAC設定だけでしたりしなかったり
2018/09/16(日) 19:15:37.35ID:SnNXv25N
>>578
違う
どこにどんな形式で置くかを柔軟に変更できることが重要
これをおろそかにして最初から場所や形式を決めつけると後で致命的な問題が発生した時に困る
2018/09/16(日) 19:41:28.41ID:5YLu0Ky3
いやいや保存場所は最初から重視しないとだめだよ
あとで罠にはまるよ
2018/09/16(日) 19:50:02.93ID:SnNXv25N
>>582
情報が出揃ってない序盤で決定するのはNG
根拠の薄い判断に盲目的に従って進めるよりはわからないものはわからないと認識した上で進めるほうが良い
最初は良いインターフェイスを決定することに注力する
開発が進むと徐々に客が(隠していた|失念していた)情報を出してくるのでそうなってから検討すればよい
それまでは暫定で簡単な実装を置いておく
2018/09/16(日) 19:57:02.81ID:AeuhPaJN
よくわからないけど設定ファイルを柔軟にする必要はないよ
2018/09/16(日) 19:59:35.75ID:AeuhPaJN
実装方法を知りたい人にインターフェイス云々から始める人は無視
586デフォルトの名無しさん
垢版 |
2018/09/16(日) 20:03:32.45ID:oQtqL1qV
どの初心者スレでも明後日のレスしてドヤりたがっとるプロさんおるねw
2018/09/16(日) 20:14:16.80ID:AeuhPaJN
いいや
プロ的にもありえないだろ
2018/09/16(日) 20:31:15.27ID:Ka1tFSGh
具体例示さず「〜しなきゃいけない」とかいうのは「妄想お疲れ」って返しておけばいいよ
2018/09/16(日) 20:59:15.70ID:AeuhPaJN
今後は全部の質問にインターフェイスの決定に注力しろって答えたらいいんだな
2018/09/16(日) 21:19:05.23ID:Ka1tFSGh
>>589
批判をずるずる引っ張るのはやめてくれ
2018/09/16(日) 21:46:31.24ID:SnNXv25N
雑魚しかおらんかったか
初心者スレだからしゃあないか
2018/09/16(日) 21:47:28.61ID:PDDwZiUq
また余計なことを
2018/09/16(日) 23:49:26.08ID:EHluPWph
Buggy C# Code: The 10 Most Common Mistakes in C# Programming

https://www.toptal.com/c-sharp/top-10-mistakes-that-c-sharp-programmers-make

俺はあまり共感できないな…
2018/09/17(月) 00:28:42.00ID:+YOQSfB9
>>593
何が?
2018/09/17(月) 00:43:15.18ID:48O793oJ
英語読める人ホント羨ましい
リリース当日にリファレンス把握できちゃうわけでしょ
2018/09/17(月) 00:43:43.99ID:tnCTTc8C
>>591
お前が一番の雑魚
2018/09/17(月) 05:59:26.92ID:/N0hOtdj
>>593
1~2番目はまあそうだねと思ったけど
3番目がくだらなかったから読むのやめた
2018/09/17(月) 08:16:13.80ID:bk1Atddi
>>595
今からでも遅くないぜ。
2018/09/17(月) 11:20:21.31ID:SR+usNFF
対象文字列 "<xx><yy><xx>111</xx></yy></xx><xx>222</xx><xx>333</xx>"
があるとき、
xxの中を取り出す正規表現はどうしたらいいのでしょう?
ただし、xxが閉じる前にyyがあるときはそのxxは無視という条件付きです

例えば正規表現を @"<xx>.*?[^(</yy>)]</xx>" にすると
実行結果
 <xx><yy><xx>111</xx>  ←</yy></xx>が欠ける
 <xx>222</xx>
 <xx>333</xx>

欲しい結果は
 <xx><yy><xx>111</xx></yy></xx>
 <xx>222</xx>
 <xx>333</xx>
2018/09/17(月) 11:25:17.63ID:3TgxIbp4
内容はみてないけど
正規表現では検出できないパターンがある
それにあたるのかと
2018/09/17(月) 11:32:42.98ID:rJA1qwMQ
XMLとして要素抜き出したほうが確実じゃね
602デフォルトの名無しさん
垢版 |
2018/09/17(月) 11:38:46.01ID:dj7qSZnZ
オレだったらどうでもいいしょうもないこと考えたくないから
普通にxerces使う
2018/09/17(月) 11:40:49.96ID:3TgxIbp4
質問からはxmlなのhtmlなのかすら確定できない
2018/09/17(月) 11:42:17.99ID:3TgxIbp4
正規表現は括弧やタグの対応は苦手
中に再帰的構造があるものは苦手
その構造が特殊になるとさらに苦手
2018/09/17(月) 11:45:20.52ID:SR+usNFF
xmlだけど同じデータ格納するのに色々なフォーマットがあるごちゃついたのだから
文字列として処理したいんです。正規表現使わずに力技で読むかなぁw

すみません。>>599の対象文字列がミス

対象文字列 "<xx><xx><yy>111</yy></xx></xx><xx>222</xx><xx>333</xx>";
試した正規表現 @"<xx>.*?[^(</yy>)]</xx>"

結果
 <xx><xx><yy>111</yy></xx></xx><xx>222</xx>
 <xx>333</xx>

欲しい結果
 <xx><xx><yy>111</yy></xx></xx>
 <xx>222</xx>
 <xx>333</xx>
2018/09/17(月) 11:45:52.85ID:SBpxj18K
とりあえずこっちへ行け

Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net
http://mevius.5ch.net/test/read.cgi/tech/1489511075/
2018/09/17(月) 12:02:14.11ID:SR+usNFF
C#の正規表現だからこっちにしたんだけど、あっちに引っ越します
2018/09/17(月) 13:08:19.32ID:x9rlqJR2
したんだけどぉ
2018/09/17(月) 14:34:45.72ID:IzAnQMU8
XMLや正規表現を考えるよりもデータ構造がどうなっても対応できるようにインターフェイスを考えるべきだろ
2018/09/17(月) 16:03:32.30ID:KWfY0Z4o
>>609
正解
2018/09/18(火) 01:24:04.08ID:4ympWGJc
>>1
ぶっちゃけた話、C#って2030年まで生き残りますかね?
2018/09/18(火) 01:39:12.39ID:eM+9yNEO
生き残ってる定義による
cobolなんてもう60歳だけど必要とされてる場面が無いわけじゃない
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スレッドを止めないようにしたほうがいい
どう考えても設計見直したほうがいいけど
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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