ふらっと C#,C♯,C#(初心者用) Part133at TECH
ふらっと C#,C♯,C#(初心者用) Part133 - 暇つぶし2ch461:デフォルトの名無しさん
17/11/15 22:26:54.12 EAeU3mIh0.net
>>453
linq誰も使ってないからな

462:デフォルトの名無しさん
17/11/15 22:28:44.48 D6YDuXrJ0.net
まあコード書けないアホは相手にしなくていいよ

463:デフォルトの名無しさん
17/11/15 22:35:29.64 EAeU3mIh0.net
どっちかっていうとアプリを作れないアホだな
まあ、コードで何か主張したいならGitHubでもやればいいのに
こんな便所でしか主張できないなら
クズどものlinqライフもここでしめーだろ

464:デフォルトの名無しさん
17/11/15 22:39:12.32 E1HTns1P0.net
ウハwwwwww
書けない奴が批判の図wwww
権利すらなしwwwwwww

465:デフォルトの名無しさん
17/11/15 22:44:23.78 EAeU3mIh0.net
>>458
クソコード貼っていい気になってるの?
アドバイスしてあげるけど
滅茶苦茶レベル低いよ

466:デフォルトの名無しさん
17/11/15 23:03:01.93 vH3D/QHI0.net
キミ流のコードおなシャス!

467:デフォルトの名無しさん
17/11/15 23:19:43.56 rNYxO5wL0.net
>>436
ここは初心者スレじゃないのかw

468:デフォルトの名無しさん
17/11/15 23:22:37.65 vwyVPxZJp.net
人間初心者のスレですよ、たぶん

469:デフォルトの名無しさん
17/11/15 23:25:46.54 vwyVPxZJp.net
正確にはC#で記述された人工知能なんですけどね

470:デフォルトの名無しさん
17/11/15 23:26:21.77 H4muME/S0.net
>>428
どこ情報?

471:デフォルトの名無しさん
17/11/15 23:47:19.33 EAeU3mIh0.net
>>464
amazonで予約中になってる

472:デフォルトの名無しさん
17/11/16 12:14:27.14 x/aWQ3sN0.net
stringは参照型だから既定値はnullということで合ってるよね?

473:デフォルトの名無しさん
17/11/16 12:22:49.67 /4eW5bh4M.net
>>466
既定値はnullだけどstringはイミュータブル型

474:デフォルトの名無しさん
17/11/16 13:24:58.55 lGT15xaEa.net
>>466
stringは参照型で規定値はnull

475:デフォルトの名無しさん
17/11/16 18:15:43.67 7VJMckpW0.net
WPFじゃなくてWindowsForms内で簡単な3D描画したいんですが
どういう風がいいでしょうか。
とりあえず箱を線で描くだけなんですが。
・DrawLineみたいなので始点終点を3次元(X,Y,Z)で指定し描画
・視点の位置(X,Y,Z)と向きを指定して表示
って風な感じが希望なんですが・・・・

476:デフォルトの名無しさん
17/11/16 18:25:02.34 K+YFepCs0.net
それでいいじゃん

477:デフォルトの名無しさん
17/11/16 18:27:37.39 7VJMckpW0.net
DrawLine の Point型 って X,Y しかないじゃないですか。
X,Y,Z で指定できる DrawLine がないのかと

478:デフォルトの名無しさん
17/11/16 18:32:16.65 F5ZZYHwp0.net
気合で座標計算

479:デフォルトの名無しさん
17/11/16 18:39:59.53 K+YFepCs0.net
カメラ固定でいいんだろ?
ZがXYのどこになるかは簡単な計算で出せる
紙に気に入った角度の3軸を書いて見ればいい

480:デフォルトの名無しさん
17/11/16 18:49:26.46 rygh13wZ0.net
OpenTK


481:でも使えば?



482:デフォルトの名無しさん
17/11/16 19:04:34.95 JEjgvNkla.net
>>471
カメラの視線方向をZ軸、カメラから1000mm先のカメラの視線に垂直な平面上の1000mmの
線分がモニター上に1000mmで表示されるモデルを採用、3D、2Dともに同じ単位系(例えばmm)
を使用する条件なら、3D空間上の点(X, Y, Z)を2D上の点(x, y)に写像するには、
(x, y) = (X/Z, Y/Z)
でいいと思う。知らんけど
2DグラフィックのY軸が下向きなのを考慮するならyはもちろん-1倍する

483:デフォルトの名無しさん
17/11/16 19:32:37.14 JEjgvNkla.net
描画面の中心を原点にする変換も必要かw
こっちはGraphicsの組み込みの機能でできるけど

484:デフォルトの名無しさん
17/11/16 19:52:49.24 o+kP3k0v0.net
透視投影
URLリンク(satoh.cs.uec.ac.jp)

485:デフォルトの名無しさん
17/11/16 19:57:23.76 K+YFepCs0.net
そんな面倒なことしなくても
カメラ固定ならXYに足すだけでいいじゃん
Zが1ならXYに0.5ずつ足すみたいのでいいよ
Zが2ならXYに1ずつ足す
Zが3ならXYに1.5ずつ足す
みたいな

486:デフォルトの名無しさん
17/11/16 21:38:46.30 ac8ZDyBE0.net
>>469
URLが何故か張れないんだが
C#3D立方体ワイヤーフレーム (第1回) for VS2013 Express
でググって見つかるところが参考になる
ライブラリを期待しているのならC++で探すしかないだろうな
DLLになっていればC#からでも使えるから

487:デフォルトの名無しさん
17/11/16 22:56:01.22 851mScQ5a.net
いくらなんでもopenGLライブラリはwinforms用ぐらいあると思う
windows forms openglでググれ

488:デフォルトの名無しさん
17/11/16 23:02:09.93 o+kP3k0v0.net
>>474でもうでてる

489:デフォルトの名無しさん
17/11/16 23:17:24.79 Tv1Vr9CT0.net
時間, 名前, テスト回数
2017/1/1, A氏, 3
2017/1/1, A氏, 4
2017/1/1, B氏, 1
2017/1/1, B氏, 2
2017/2/1, A氏, 1
2017/2/1, A氏, 2
2017/2/1, B氏, 1
2017/2/1, B氏, 2
2017/3/1, A氏, 1
2017/3/1, A氏, 2
2017/3/1, A氏, 3
↑のようなデータがある場合 
↓のように名前ごとに最新の時間のデータを取得したい。
2017/3/1, A氏, 1
2017/3/1, A氏, 2
2017/3/1, A氏, 3
2017/2/1, B氏, 1
2017/2/1, B氏, 2

490:デフォルトの名無しさん
17/11/16 23:18:08.01 Tv1Vr9CT0.net
>>482
↓のような感じで取れるとは思いますが
実際のデータでは時間も名前も複数あるのでLINQで一発で取れる書き方はないでしょうか?
public class Test
{
public DateTime 時間 { get; set; }
public string  名前 { get; set; }
public int テスト回数 { get; set; }
}
List<Test> ListTest = new ListTest ();
var List1 = ListTest.Where(x=>x.名前 == "A氏" & x.時間 = 2017/3/1).ToList();
var List2 = ListTest.Where(x=>x.名前 == "B氏" & x.時間 = 2017/2/1).ToList();
List3.add(List1);
List3.add(List2);

491:デフォルトの名無しさん
17/11/16 23:18:26.88 o+kP3k0v0.net
LINQの出番再び

492:デフォルトの名無しさん
17/11/16 23:19:34.43 eJZERDUZ0.net
友の会スレに行け

493:デフォルトの名無しさん
17/11/16 23:28:56.32 Tv1Vr9CT0.net
そんなこといわずに優しいレスくれよ
友の会ってどこなの?

494:デフォルトの名無しさん
17/11/16 23:37:44.24 o+kP3k0v0.net
list.GroupBy(item=>item.名前).Select(group=>group.Max(item=>item.日時.Ticks)).ToList<Test>()

495:デフォルトの名無しさん
17/11/16 23:44:12.00 o+kP3k0v0.net
今試したらエラー吐いたけど参考にしてくれ

496:デフォルトの名無しさん
17/11/16 23:44:38.82 Tv1Vr9CT0.net
>>487
レスありがとうございます。
Ticks使ったことないので参考になりました。
ありがとうございます。

497:デフォルトの名無しさん
17/11/17 00:03:01.06 LOAPaCxV0.net
ListTest.GroupBy(item => item.名前).Select(group => group.Aggregate((max, item) => item.時間 > max.時間 ? item : max)).ToList()

498:デフォルトの名無しさん
17/11/17 00:16:27.21 ZIvR54fI0.net
DateTimeオブジェクトはそれ自体に大小関係演算子使えるしな

499:デフォルトの名無しさん
17/11/17 00:34:17.30 xoZUoffUa.net
どれも微妙に仕様から外れてるような…

500:デフォルトの名無しさん
17/11/17 00:40:57.63 45Grbd2f0.net
並びの下の方が同じ日付でも最新なの?
まあ、そういうデータよくあるけど

501:デフォルトの名無しさん
17/11/17 00:54:10.94 E5GExksf0.net
SQLだとドヤ顔でExistsしてるブログがたくさん出るやつだな

502:デフォルトの名無しさん
17/11/17 00:57:10.96 ZBvifIa80.net
下のやつを最新にしたいなら>=にすればいいのかな
順番通りの保障ないかもしれないけど

503:デフォルトの名無しさん
17/11/17 01:02:10.05 ZBvifIa80.net
ienumerbleだからだめか
最初の段階でインデックスとペアにするとか

504:デフォルトの名無しさん
17/11/17 01:13:33.00 xoZUoffUa.net
多分個人の最終日のすべてデータが欲しいんだよね

505:デフォルトの名無しさん
17/11/17 01:21:22.13 xoZUoffUa.net
う~んできたけど汚い

506:デフォルトの名無しさん
17/11/17 02:55:06.18 ZBvifIa80.net
これだけで各々の最新のデータが取れるはず。
ListTest.GroupBy(item => item.名前).Select(group => group.OrderBy(item => item.時間).Last()).ToList()
・GroupBy
Elements in a grouping are yielded in the order that the elements that produced them appear in source.
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
・OrderBy
キーに従って昇順のシーケンスの要素を並べ替えます。
このメソッドは、安定した並べ替えを実行します。つまり、2 つの要素のキーが等しい場合は、要素の順序が保持されます。
URLリンク(msdn.microsoft.com)(v=vs.110).aspx

元データの並び順で下にあるほうのが優先されてるのをはっきりとわかるように書きたかったらかなり長いけどこうかな?w
ListTest.Select((item, index) => { Item = item, Index = index } ).GroupBy(pair => pair.Item.名前).Select(group => group.GroupBy(pair => pair.Item.時間).OrderBy(innerGroup => innerGroup.Key).Last().OrderBy(pair => pair.Index).Last().Item)

507:デフォルトの名無しさん
17/11/17 02:56:22.67 ZBvifIa80.net
.ToList()


508:デフォルトの名無しさん
17/11/17 09:51:19.99 45Grbd2f0.net
これ、仕事で使われたらキレるな

509:デフォルトの名無しさん
17/11/17 10:01:35.59 yfGcWiWk0.net
落ち着けよ、おっさん。

510:デフォルトの名無しさん
17/11/17 11:41:22.51 vZ4OY4a56.net
LINQ使わなかったらこうか?
int indexOfSame名前(Test item, List<Test> list)
{
for(var i=0;list.Count;i++)
if(list[i].名前==item.名前){
foundIndex=i;
return i;
}
}
return -1;
}
List<Test> extractLatestData(List<Test> list)
{
var result=new List<Test>();
foreach(var item in list){
var foundIndex=indexOfSame名前(item, result);
if(foundIndex>=0){
if(item.時間>=result[foundIndex].時間){
result[foundIndex]=item;
}
}else{
result.Add(item);
}
}
return result;
}
var result= extractLatestData(ListTest);

LINQ使えばこう?
var result=ListTest.GroupBy(item => item.名前).Select(group => group.OrderBy(item => item.時間).Last()).ToList();

511:デフォルトの名無しさん
17/11/17 11:58:47.46 XIkoXTHK0.net
横に長くて拒否反応出るのも解らないでは無いんだが
読む時は愚直に左から読んでいくだけだし、PowerShell使ってると日常茶飯事だしな……

512:デフォルトの名無しさん
17/11/17 12:03:36.39 /4Y2zvAi0.net
普通は、改行しながら書く

513:デフォルトの名無しさん
17/11/17 12:08:02.02 qxZxmWbCM.net
>>504
じゃあ、全コード一行でいいじゃん
左から読んでいくだけだろ?

514:デフォルトの名無しさん
17/11/17 12:11:30.21 vZ4OY4a56.net
foreach~~
result.Add(latestDataOf(リスト, 名前))
とかのほうがいい?

515:デフォルトの名無しさん
17/11/17 12:14:53.31 vZ4OY4a56.net
これだとおかしいか
foreachであらかじめリストから抽出しておいた名前の種類の一覧とかを与えないとあれか

516:デフォルトの名無しさん
17/11/17 12:23:06.18 uCPaYCi4d.net
最新取る頻度が高いなら最新テーブルと履歴テーブルを分けてほしい

517:デフォルトの名無しさん
17/11/17 13:11:41.07 QYCCbo0/0.net
推敲してから書き込めば一度で済むのに。。。

518:デフォルトの名無しさん
17/11/17 13:38:17.44 45Grbd2f0.net
>>503
コメントがないじゃん
やり直し

519:デフォルトの名無しさん
17/11/17 14:48:58.50 y/lDgZqq6.net
みんなって推敲してるの?
真面目だな
俺もこれからはそうするかもしれん

520:デフォルトの名無しさん
17/11/17 15:16:56.52 Km51pzYd0.net
真面目に考えるとデータベースに更新分Insertしてからあらかじめ作ってあるビューをSelectするだけ
GroupBYや集計はDBでやった方が楽だしこっちでは表示件数や順序くらいしかいじらない
データベースといってもローカル鯖や組み込みもある、適材適所

521:デフォルトの名無しさん
17/11/17 17:32:51.55 VYtKuwzgM.net
インサート前にソートとかボトルネックだよね

522:デフォルトの名無しさん
17/11/17 18:05:42.37 g1yHwUG3M.net
sources
.GroupBy(s => new { 名前, テスト回数 })
.Select(g => new {
g.Key.名前,
g.Key.テスト回数,
時間 = g.Max(s => s.時間)
});
悩むところねえなぁ

523:デフォルトの名無しさん
17/11/17 18:29:28.97 ZBvifIa80.net
汎用性低いな。

524:デフォルトの名無しさん
17/11/17 18:32:42.23 ZBvifIa80.net
ListTest.GroupBy(item => item.名前).Select(group => group.OrderBy(item => item.時間).Last()).ToList()
ワシのが1番じゃろ。

525:デフォルトの名無しさん
17/11/17 18:42:45.87 1r1wVT3lM.net
よくみたら仕様ちゃうやん自分…
src.GroupBy(s => s.名前)
.SelectMany(g => g.Where(t => t.時間 == g.Max(u => u.時間));
これが王道の正解な

526:デフォルトの名無しさん
17/11/17 18:50:16.49 1r1wVT3lM.net
こっちのが速いかな
sec.ToLookup(s => s.名前)
.Select(g => new { g, m = g.Max(t => t.時間)
.SelectMany(p => p.g.Where(u => u.時間 == p.m);

527:デフォルトの名無しさん
17/11/17 18:50:30.24 ZBvifIa80.net
そういやラムダ式の中の命名は超シンプルでいいんだったな。
>>518 最大値を探すためにループ、その値を持ち主をまた探すためにループってなんかキモくね?それが王道なのか。

528:デフォルトの名無しさん
17/11/17 19:36:01.87 15/bjs8Fd.net
>>482
まず時間と名前でグループ化
時間, 名前, テスト回数
2017/1/1, A氏, 3,4
2017/1/1, B氏, 1,2
2017/2/1, A氏, 1,2
2017/2/1, B氏, 1,2
2017/3/1, A氏, 1,2,3
あとは日付けでソートして名前でDistinctするかな

529:デフォルトの名無しさん
17/11/17 19:40:08.46 hFmoO+PyM.net
>>520
ループ?
SelectManyはSQLで言えば結合みたいなもの
LinqのJoinだとこんな感じかな
src.GroupBy(s => s.名前)
.Join(src,
g => new { 名前 = g.Key, 時間 = g.Max(t => t.時間) },
u => new { u.名前, u.時間 },
(g, u) => u);
SelectManyの方がわかりやすいな

530:デフォルトの名無しさん
17/11/17 19:46:57.67 ZBvifIa80.net
Maxを探すためにループ、その持ち主また探すためにWhereでループ

531:デフォルトの名無しさん
17/11/17 20:26:05.65 /4Y2zvAi0.net
max ← 持ち主
こういう方向のリンクなら、max を探してから、持ち主も探さなきゃいけないけど、
逆方向のリンクなら、すぐ

532:デフォルトの名無しさん
17/11/17 20:34:11.03 45Grbd2f0.net
名前、日付で降順ソートして名前ごとの最新取るだけでなげーな

533:デフォルトの名無しさん
17/11/17 20:40:49.52 2lBbqhr3M.net
>>525
それ結局最後まで舐めないと全ての名前が分からないから何の意味もないぞ

534:デフォルトの名無しさん
17/11/17 21:20:38.75 Xkp76caL0.net
LINQって実は裏側でforeachで回してるってホント?

535:デフォルトの名無しさん
17/11/17 21:41:36.29 SHrICtEWr.net
>>527
ループは一回

536:デフォルトの名無しさん
17/11/17 21:50:29.21 /4Y2zvAi0.net
例えば、100個の中から、1個を探すのは、全(線形)探索 O(n) しかできない
全データにインデックス・ハッシュがついていれば、O(1)だが、
ソートするには、全探索する必要がある
DB みたいに、B-tree でソートされているのなら、O(log n)



537:uアルゴリズムと計算量」を勉強して



538:デフォルトの名無しさん
17/11/17 21:53:48.98 45Grbd2f0.net
>>529
すればいいじゃん
何がしたいの?
速度アップしたいの?

539:デフォルトの名無しさん
17/11/17 22:28:51.51 fmtM/py00.net
こんなにレスが付いてるとは思わなかった。
無事満足いく結果がとれるようになりました。
試したことないのもあって勉強になりましたありがとうございます。

540:デフォルトの名無しさん
17/11/17 22:41:16.10 bpYBjcB50.net
>>527
記述によっては複数回どころか毎回ループもあり得るから注意な

541:デフォルトの名無しさん
17/11/17 23:53:01.59 f2B03iH5a.net
foreach版も作ったけど
一回回すだけで辞書はできるので計算量は減るし再利用にも便利

542:デフォルトの名無しさん
17/11/18 01:22:17.61 dA2WGfe00.net
DBに接続して操作するクラスを作ってるのですが、コンストラクタでDBに接続してデストラクタとDisposeで切断処理を書こうと思っています
基本的にはこのような書き方でいいのでしょうか?
各処理のメソッドで接続切断を仕込むのもあると思うのですが連続で処理する場合たとパフォーマンスの低下に繋がると思ったので気になりました

543:デフォルトの名無しさん
17/11/18 01:26:06.53 uyqqFOTJ0.net
これEXISTS使うSQLの定番問題なんでその定番SQLが生成されるようにAnyするのが最速
そう、EFならね

544:デフォルトの名無しさん
17/11/18 01:33:21.33 Q2wZVPR60.net
>>534
途中でLANケーブル抜いたらどういう動作するの?

545:デフォルトの名無しさん
17/11/18 01:34:15.67 Q2wZVPR60.net
そしてすぐに指す!

546:デフォルトの名無しさん
17/11/18 01:37:14.30 dA2WGfe00.net
>>536
DBはローカルなんでそこは考えてませんでした
途中でDBとの接続切れたらエラー返すぐらいしか考えてないですね
そこでクラス抜けるようにするかどうかは分かりませんがデストラクタかdisposeに入ると思います
まだ実装してませんが

547:デフォルトの名無しさん
17/11/18 01:37:59.01 dA2WGfe00.net
>>535
接続部分はAnyでまとめた文打ち込む前後だけ開くってことでしょうか?

548:デフォルトの名無しさん
17/11/18 02:05:22.67 uyqqFOTJ0.net
>>539
悪いが俺のレスは質問と関係ないぞ
ちなみに各DBのコネクションクラスは質問通りのIDisposableな自動Close設計で
連続する処理する場合はコネクションを開いたまま使いまわすのが普通
SQLite.NETが参考と言うかやりたいことそのままじゃないか?

549:デフォルトの名無しさん
17/11/18 02:09:22.40 dA2WGfe00.net
>>540
ありがとうございます!

550:デフォルトの名無しさん
17/11/18 02:43:03.59 NMU9eY0n0.net
>>540
ありがとうございます!

551:デフォルトの名無しさん
17/11/18 16:41:16.80 S0Dl2HXu0.net
>>540
ありがとうございます!

552:デフォルトの名無しさん
17/11/18 17:07:33.62 18CT9AkR0.net
URLリンク(ideone.com)
たくさんボタンがあって、ボタンを押すとそれに対応した画像を保存するプログラムなのですが
ひとつのsaveFileDialogを使いまわすにはどうすればいいでしょうか
上のコードのpictureBox_1、pictureBox_2が引数になる様にしたいのですが

553:デフォルトの名無しさん
17/11/18 17:30:37.37 mVpmRSdA6.net
>>544
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
// 画像保存処理
}

554:デフォルトの名無しさん
17/11/18 17:33:50.19 v7G/T0vB0.net
>>544
ボタンで分岐ならすぐできる
private void button_Click(object sender, EventArgs e)
{
 SaveFileDialog saveFileDialog1 = new SaveFileDialog();
if (saveFileDialog1.ShowDialog() != DialogResult.OK)) return;
if (sender==button1)
{
  pictureBox_1.Image.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Bmp)
}
else if (sender==button2)
{
}
}

555:デフォルトの名無しさん
17/11/18 18:31:43.88 +tDuSBLG0.net
>>544
ボタン事に対応したピクチャーボックスがあるならTagに設定しておくと便利だよ
button1.Tag=pictureBox_1;ってしといて
((PictureBox)(((Button)sender).Tag)).Imageって感じで画像を取得できる

556:デフォルトの名無しさん
17/11/18 19:04:31.90 yU1kJYivM.net
void RegisterClickEvent(Button b, PictureBox p)
{
var d = new SaveFileDialog();
b.Click += (s, e) => {
if (d.ShowDialog() == DialogResult.OK) {
p.Image.Save(d.FileName, ...);
}
}
}
// on load
var pairs = new [] {
new { b = button_1, p = pbox_1 },
new { b = button_2, p = pbox_2 },
...
};
foreach(var pair in pairs)
RegisterClickEvent(pair.b, pair.p);

557:デフォルトの名無しさん
17/11/18 19:27:10.06 18CT9AkR0.net
みなさん有難う御座います。
やってみます。

558:デフォルトの名無しさん
17/11/18 19:30:23.03 NMU9eY0n0.net
こんなところにもちゃっかり匿名クラスw

559:デフォルトの名無しさん
17/11/18 20:21:22.01 6NKrq56ga.net
>>544
まずSaveFileDialogのFileOKイベントを使ってるのがまずいくない?
これだと結局FileOKのイベントハンドラに引き渡すためだけにImageかパスをフィールドに持つ必要が出てくる
private string AskSaveNameFromUser()
{
  var sfd = new SaveFileDialog();
  sfd.DefaultExt = "bmp";
  sfd.Filter = "BMP形式|*.bmp";
  if (sfd.ShowDialog(this) == DialogResult.OK)
  {
    return sfd.FileName;
  }
  return null;
}
こんな風にユーザーから保存名を貰ってくるメソッドを作った方がいいんじゃない?

560:デフォルトの名無しさん
17/11/18 20:22:04.37 6NKrq56ga.net
その上で
private bool TrySaveImage(Image img)
{
  var savePath = AskSaveNameFromUser();
  if (savePath == null) return false;
  try
  {
    img.Save(savePath, ImageFormat.Bmp);
  }
  catch (Exception)
  {
    return false;
  }
  return true;    
}
こんなメソッドを用意すれば、後はラムダ式使ってボタンのclickイベントにこれを紐づけするだけ
button1.Click += (s, e) => TrySaveImage(pictureBox1.Image);

561:デフォルトの名無しさん
17/11/18 20:36:23.54 NMU9eY0n0.net
ボタン押した時に保存したいんだからClickイベントハンドラの中に記述すればいいだろ。

562:デフォルトの名無しさん
17/11/18 20:42:16.49 2DwFpZ7T0.net
フォームで画像を表示したところ、それを閉じなければコンソールに処理が戻らないプログラムになってしまいました
同時に動かす方法があれば教えていただきたいです

563:デフォルトの名無しさん
17/11/18 20:46:06.00 v7G/T0vB0.net
>>554
コンソールって何を指しているの?
フォームに画像表示(パネルでもPictureboxでも)して反応が無くなるってことは普通は無い

564:デフォルトの名無しさん
17/11/18 20:46:26.41 9PzaXhXFM.net
START をコマンド名の前に書いても?
とエスパー回答

565:デフォルトの名無しさん
17/11/18 20:48:58.44 v7G/T0vB0.net
モーダルフォームで表示しているのならモードレスフォームにして表示
URLリンク(dobon.net)

566:デフォルトの名無しさん
17/11/18 20:53:01.78 NMU9eY0n0.net
>>554
Threadを使おう
var thread = new System.Threading.Thread(
() => {
System.Windows.Forms.Application.Run(form);
});
thread.Start();

567:デフォルトの名無しさん
17/11/18 20:57:25.99 6NKrq56ga.net
一つのプロセスで複数のUIスレッド作って大丈夫なんだっけ?

568:デフォルトの名無しさん
17/11/18 21:01:09.80 GCI+mPsu0.net
すみません、上手く説明できないと思うので一応コードも載せます
やりたいことはコマンドプロンプト上で流れる処理の途中で画像を呼び出すことです
その際、処理が止まってしまいます
var form = new System.Windows.Forms.Form();
var pb = new System.Windows.Forms.PictureBox();
pb.Image = System.Drawing.Image.FromFile(imgpath);
pb.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
form.Controls.Add(


569:pb); System.Windows.Forms.Application.Run(form);



570:デフォルトの名無しさん
17/11/18 21:02:37.60 GCI+mPsu0.net
途中で送信してしまいました・・
頂いた返事から色々と試してみようと思います!

571:デフォルトの名無しさん
17/11/18 21:03:01.96 NMU9eY0n0.net
>>560
var form = new System.Windows.Forms.Form();
var pb = new System.Windows.Forms.PictureBox();
pb.Image = System.Drawing.Image.FromFile(imgpath);
pb.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
form.Controls.Add(pb);
var thread = new System.Threading.Thread(
() => {
System.Windows.Forms.Application.Run(form);
});
thread.Start();

572:デフォルトの名無しさん
17/11/18 21:04:16.09 v7G/T0vB0.net
>>560
Application.Run(form);で止まるなそれは
フォームのインスタンス作ってShow()できないの?

573:デフォルトの名無しさん
17/11/18 21:06:38.70 NMU9eY0n0.net
Application.Runをしないとメッセージ来ねえからShowしても一瞬で消えるだろ。

574:デフォルトの名無しさん
17/11/18 21:07:12.07 v7G/T0vB0.net
じゃあ別スレッドでやるしかないのか

575:デフォルトの名無しさん
17/11/18 21:19:47.80 GCI+mPsu0.net
>>562
並列処理で無事起動できました!
イカのような記号が何を意味するか分かりませんが
いい機会なのでスレッドも勉強してみます
>>563
なぜApplication.Run(form)で止まってしまうのでしょうか?
フォームに制御が移ってしまっているということですかね

576:デフォルトの名無しさん
17/11/18 21:23:57.35 D1AcCkIgr.net
Task使え!

577:デフォルトの名無しさん
17/11/18 21:26:29.84 v7G/T0vB0.net
>>560
その部分全部を別クラスにしてインスタンスを作って呼び出せば動いた
実際に呼び出す部分は
formtest f = new formtest();
f.formshow();
を入れておいて
別クラスで例えば
class formtest:Form
{
public formtest()
{ }
public void formshow()
{
   var form = new System.Windows.Forms.Form();
   var pb = new System.Windows.Forms.PictureBox();
   pb.Image = System.Drawing.Image.FromFile(imgpath);
   pb.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
   form.Controls.Add(pb);
   System.Windows.Forms.Application.Run(form);
}
}
を作っておく
>>566
ああちょっと遅かったか

578:.>>568
17/11/18 21:29:35.82 v7G/T0vB0.net
ごめんこれ無しでw>>568

579:デフォルトの名無しさん
17/11/18 21:36:41.17 GCI+mPsu0.net
>>568
丁寧に教えてもらいありがとうございます
どの実現方法も勉強になりますし、解がすぐに思い浮かびコードにできるのは憧れます

580:デフォルトの名無しさん
17/11/18 21:37:46.34 v7G/T0vB0.net
>>570
すいません手順間違えて動くと勘違いしていましたw
結局同じことなので参考にしないでくださいw

581:デフォルトの名無しさん
17/11/18 21:50:58.81 AvOAupbn0.net
変数がNULLだったら、ってこれが一番シンプル?
a == null ? 0 : 1;

582:デフォルトの名無しさん
17/11/18 21:55:24.54 GCI+mPsu0.net
>>571
そうでしたか
検証までしてもらい申し訳ないです

583:デフォルトの名無しさん
17/11/18 21:56:43.57 kl8n9Pj50.net
>>572
つ ?? 演算子

584:デフォルトの名無しさん
17/11/18 22:13:06.30 ScUjvH+z0.net
>>574
>>572の式書ける?

585:デフォルトの名無しさん
17/11/18 22:17:16.38 kl8n9Pj50.net
>>575
書けない。nullの場合の値設定のみ。

586:デフォルトの名無しさん
17/11/18 22:17:39.50 AvOAupbn0.net
NULLじゃなかった場合の処理が要らない場合は>>574がベスト?

587:デフォルトの名無しさん
17/11/18 22:20:13.27 w1kiMD3J0.net
a == null ? 0 : a;
a ?? 0;
は同じ内容になる

588:デフォルトの名無しさん
17/11/18 22:21:15.58 AvOAupbn0.net
>>578
おけ
さんきゅ

589:デフォルトの名無しさん
17/11/18 22:47:38.85 kl8n9Pj50.net
ぬるぽ

590:デフォルトの名無しさん
17/11/18 23:05:35.11 VG3ktzhs0.net
Unity+C#の質問になっちゃいますが、
=========================================
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Ball_Ctrl : MonoBehaviour
{
public float speed = 50.0f;
void Update ()
{
Vector3 test = new Vector3();
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
transform.Rotate( test );
  }
}
==========================================
これをキューブ型の3Dオブジェクトにぶち込むと上下キーで回転するんだけど、
これに回転制限を設けたい場合どうすればいいか教えてください!

591:デフォルトの名無しさん
17/11/18 23:23:09.15 Wsch61C00.net
>>581
とりあえずtest.xの値をリアルタイムで確認してみるとか
ちゃんと制御できてるのがいいんだろうけどな

592:デフォルトの名無しさん
17/11/18 23:30:02.55 NMU9eY0n0.net
>>581

test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
// minAngle~maxAngleの間に制限
var minAngle=20f;
var maxAngle=160f;
test.x=test.x<minAngle?minAngle:test.x;
test.x=test.x>maxAngle?maxAngle:test.x;

593:581
17/11/19 00:15:02.15 +rKwXo5m0.net
>>582
>>583
この説明受けてもまだチンプンカンプンで申し訳ないのですが、
実際に角度を変えている「transform.Rotate」ってのが
「現在の角度+test.x」って事だから、
if文で、
もし現在の角度がmin°~max°以内の範囲ならば
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
って事ですかね?
現在値なら
genzaiti = this.transform.eulerAngles.x;
で現在の角度を取得出来るんですが、
なんか上手くいかない・・・
>>583
test.x=test.x<minAngle?minAngle:test.x;
test.x=test.x>maxAngle?maxAngle:test.x;
の記述も意味がよく分からないです・・・

594:デフォルトの名無しさん
17/11/19 00:22:50.41 5IbV37Zg0.net
genzaiti = this.transform.eulerAngles.x;
if(genzaiti>=min && genzaiti<=max) {
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
}

こうしてもうまくいかないってこと?

595:デフォルトの名無しさん
17/11/19 00:46:45.14 nVHpanKs0.net
>>584
ああ、transformって姿勢行列か
だったらtransform→angleの変換は期待しない方がいい
angle→transformは一方通行として
現在のangleを保持して
毎回transformをangleから作る感じで

596:デフォルトの名無しさん
17/11/19 00:50:00.47 +rKwXo5m0.net
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Ball_Ctrl : MonoBehaviour
{
public float speed = 50.0f;
public float genzaiti;
public float min = -15.0f;
public float max = 15.0f;
void Update ()
{
Vector3 test = new Vector3();
genzaiti = this.transform.eulerAngles.x;
if (genzaiti >= min && genzaiti <= max)
{
test.x = Input.GetAxis("Vertical") * speed * Time.deltaTime;
}
transform.Rotate( test );
  }
}
====================================
教えて頂き、こうしてみたんですが
挙動がおかしいです
if文的に
↑をおしてmaxを超えるとキー入力を受け付けなくなるのは理解出来るんですが、
↓キーをおすとgenzaitiが359とか謎の数値になるのが理解できない・・・

597:デフォルトの名無しさん
17/11/19 01:17:17.13 nVHpanKs0.net
>>587
359=-1やんけ?

598:デフォルトの名無しさん
17/11/19 07:08:15.26 5IbV37Zg0.net
>>587
if (genzaiti >= min && genzaiti <= max)

if (genzaiti%360 >= min && genzaiti%360 <= max)

599:デフォルトの名無しさん
17/11/19 07:19:50.08 5IbV37Zg0.net
すまん、これは間違い

600:デフォルトの名無しさん
17/11/19 09:53:15.87 RgqRbH7C0.net
RubyはPerlより優れていてPythonより劣っている。

601:デフォルトの名無しさん
17/11/19 12:26:49.81 /vA5wcYG0.net
>>581
これで同じことやってる
URLリンク(github.com)

602:デフォルトの名無しさん
17/11/19 12:35:27.94 E5DVFTo40.net
もう、自分でゴリゴリロジックを書くのが馬鹿らしくなってきた。
何処かの偉い人が言っていたが今のプログラミングは工学じゃなくて科学だと。
nugetか何処かでライブラリを拾ってきて、ひたすら実験を繰り返し、
自分の期待通りの結果が得られるかどうか判定するのみ。

603:デフォルトの名無しさん
17/11/19 13:13:49.58 CpArH3DxM.net
ドメインロジックもそれでできるならいいけどね
できないでしょ

604:デフォルトの名無しさん
17/11/19 13:23:38.14 4mwAxl/ka.net
>>593
むしろそれのどこが科学なのかとw
電気屋も建築屋もパーツや材料がスペック通りの性能を持ってるか
実験するけど、それを科学とは言わないと思うよw

605:デフォルトの名無しさん
17/11/19 13:31:47.12 T31pkR2W0.net
今週はずっとlockとかMoniterとかManualResetEventSlimとか
new Thread(new ThreadStartとかTask.Factory.StartNewとかTask.Run
などなど書いていて頭痛くなってきた、やり方いろいろありすぎ

606:デフォルトの名無しさん
17/11/19 13:34:25.58 CpArH3DxM.net
今だと�


607:ルとんど使わないよねその手の非同期ライブラリ



608:581
17/11/19 13:39:52.27 +rKwXo5m0.net
>>592
ひとまずこれをブチ込んでみたら思った通りに動いた!
よく見つけてくれましたね!ありがとうございます!
いまから一個ずつ理解するため勉強します。

他のみなさんも親切にどうもありがとうございました!
今回の件はとりあえず一件落着です。

609:デフォルトの名無しさん
17/11/19 13:40:17.88 E5DVFTo40.net
>>595
現代のプログラミングは科学だって言ってるのオレじゃないけどねw
ソフトウエアってパーツや材料みたいなきちんとしたスペックなんかは無いし
ソースが巨大でブラックボックス化しているので
自然科学の実験と観察のようだと皮肉って言ってるんだと思う。

610:デフォルトの名無しさん
17/11/19 13:42:55.02 E5DVFTo40.net
>>598 の人も実験と観察の世界だw

611:デフォルトの名無しさん
17/11/19 13:44:15.53 Plho4dsNM.net
>>597
いや全部使うだろ
マルチスレッドといえば、社内にParallel厨がいてうざいわ
ボトルネックになってないのに無駄に並列化するのやめろ
オーバーヘッドを増やすだけで全く速くなってないんだよ

612:デフォルトの名無しさん
17/11/19 13:47:26.35 CpArH3DxM.net
>>601
いや使わんよ
スレッド間の結合が強くなりすぎる

613:デフォルトの名無しさん
17/11/19 13:49:44.71 CpArH3DxM.net
Taskは使う
他は保守性下げるから使いたくないし使わなくても問題ない

614:デフォルトの名無しさん
17/11/19 13:52:13.40 E5DVFTo40.net
>>601
そういうヤツに限ってLockがなんだか分かってなくて共有リソースのロックが放置プレイ。
たまたま動いているような状態だ。

615:デフォルトの名無しさん
17/11/19 15:22:20.18 k+hZMr200.net
Taskは普通に使うけど、わざわざThreadを使うケースってなんかあったっけ?

616:デフォルトの名無しさん
17/11/19 15:32:26.34 E5DVFTo40.net
>>605
Task.Runってメインスレッドより早く終わるのが前提でしょ
メインスレッドと同時に立ち上げて上がりっぱなしのだとThread.Startでしょう。

617:デフォルトの名無しさん
17/11/19 15:44:54.87 k+hZMr200.net
>>606
LongRunningじゃダメなの?

618:デフォルトの名無しさん
17/11/19 15:55:49.72 E5DVFTo40.net
>>607
へぇ~、スレッドプールを消費しないオプションがあったんんだ。
でも、Thread.Startを使わないでTask.Factory.StartNewに
TaskCreationOptions.LongRunningを付けて実行するメリットって何があるのだろ?

619:デフォルトの名無しさん
17/11/19 15:58:44.65 k+hZMr200.net
顔真っ赤やんけ・・・もういいわ

620:デフォルトの名無しさん
17/11/19 15:59:36.35 Ay/cPvn90.net
最近こういう下らねープライドで食い下がる奴多いな

621:デフォルトの名無しさん
17/11/19 16:00:15.24 Ay/cPvn90.net
もちろんid真っ赤な方に言ってるんで誤解せんといて

622:デフォルトの名無しさん
17/11/19 16:09:07.36 E5DVFTo40.net
>>609
真っ赤とかどうとかじゃなくて素直に聞いているだけなんだけどな。
Task.Runはお手軽だけどTask.Factory.StartNewにそれほどのメリットを感じないので聞いてみた。

623:デフォルトの名無しさん
17/11/19 16:54:48.98 CpArH3DxM.net
やれやれ

624:デフォルトの名無しさん
17/11/19 16:57:32.50 0lccfPn/r.net
過去の遺物
今はTask.Run一択

625:デフォルトの名無しさん
17/11/19 16:59:16.27 CpArH3DxM.net
使いたいなら使えばいいよ誰も文句は言わん
仕事で遭遇しなきゃ害はない

626:デフォルトの名無しさん
17/11/19 17:17:53.28 YUYxzc/40.net
なんだこいつら...
その人は普通にThreadでいいものを無理してTaskでやる意味聞いてるだけじゃん....
なんで突然キレ出したのか謎すぎる...

627:デフォルトの名無しさん
17/11/19 17:23:28.67 E5DVFTo40.net
>>613-614
だから、メインスレッドと同じ寿命のスレッドはTask.Runでどうするんだよ。
答えられないのなら、煽るような真似をするな。

628:デフォルトの名無しさん
17/11/19 17:39:24.07 nV3+UDVnM.net
>>614 過去の遺物 今はasync/await一択



630:デフォルトの名無しさん
17/11/19 17:46:38.44 jnbFiabv0.net
>>618
Taskとasync awaitってめっちゃ紐付いてるじゃん
切り離して考えるのはおかしいぞ

631:デフォルトの名無しさん
17/11/19 17:53:11.85 5IbV37Zg0.net
>>619
Task.Runを自分で書くのは過去の遺物ってことじゃね?

632:デフォルトの名無しさん
17/11/19 18:39:57.70 CpArH3DxM.net
>>616
逆ってこと

633:デフォルトの名無しさん
17/11/19 18:51:04.39 T31pkR2W0.net
過去の遺物と断言できるのはThread.suspend

634:デフォルトの名無しさん
17/11/19 19:30:29.96 5IbV37Zg0.net
Unityとか出て来たから初めて使ってみたけど楽しい��

635:デフォルトの名無しさん
17/11/19 19:34:33.51 2mKNwU/B0.net
.net4.0までの環境で仕事してるおれにも同じ事いえんの?

636:デフォルトの名無しさん
17/11/19 20:01:28.15 8FVAlHGr0.net
>>624
なぜサポート切れを使うんだ?

637:デフォルトの名無しさん
17/11/19 20:08:02.55 NX3L6kgWa.net
XP使ってるエンドユーザーを切り捨てできなきゃそうするしかないね

638:デフォルトの名無しさん
17/11/19 20:33:47.12 +rKwXo5m0.net
>>623
今更感はあるのでしょうが、僕も数日前に初めてUnity(C#も)触ったんですけど
すごいですよね!今ってこんな感じにゲーム作れるんですね・・・
僕の場合3Dモデラーなんで、覚える事いっぱいだけど
プログラム出来る人なら無料のアセット入れたらすぐさまゲーム作れそうですね

639:デフォルトの名無しさん
17/11/19 22:46:03.87 a21FIb9I0.net
>>608
キャンセルや例外の処理などを他のタスクと同列に扱える。
それらが必要無いなら特にメリットも無いけど、Threadクラスに拘るメリットも無い。⇒Taskで一本化

640:デフォルトの名無しさん
17/11/19 23:06:57.29 E5DVFTo40.net
>>628
ありがとう!
そう言う答えが欲しかった。
メインスレッドと同時に起動しっぱなしになるスレッドをTaskで起動すると
Task内で発生した例外がTask終了時に一気に飛んでくるという解釈でよいのかな?
それだと使いにくいな。

641:デフォルトの名無しさん
17/11/19 23:10:42.79 E5DVFTo40.net
プログラム終了時に例外が発生することがあるが
ひょっとして.NETライブラリ内のTaskが災いしてる?

642:デフォルトの名無しさん
17/11/19 23:22:19.54 kef1Qlbp0.net
普段の行い

643:デフォルトの名無しさん
17/11/19 23:27:16.64 KzEdu68P0.net
えぇ……

644:デフォルトの名無しさん
17/11/19 23:32:38.48 rl2qpTKV0.net
>>630
自分で作った立ち上げっぱなしのスレッドorタスクの後処理をしてないんだろ
>>631で合ってるなw

645:デフォルトの名無しさん
17/11/19 23:40:03.47 rl2qpTKV0.net
立ち上げっぱなしかどうかは関係ないか
そこは訂正しとく

646:デフォルトの名無しさん
17/11/20 00:18:59.27 i2xgyqGp0.net
ダッセ

647:デフォルトの名無しさん
17/11/20 04:47:41.41 LQqpoEbp0.net
>>625
知らんがなw上があほなんだよ

648:デフォルトの名無しさん
17/11/20 06:17:01.54 U7p2GA3b0.net
>>631
この業界定番のギャグだな。

649:デフォルトの名無しさん
17/11/20 06:17:56.26 U7p2GA3b0.net
>>633
nugetで拾ったライブラリの中の人の行いが悪いからだな。

650:デフォルトの名無しさん
17/11/20 07:14:49.97 nPsSyBEn0.net
>>636
お前も同類だけどな

651:デフォルトの名無しさん
17/11/20 08:04:56.95 XyKfixC2r.net
>>629
逆で未処理の例外があればTaskが終了する
それはThreadと同じ

652:デフォルトの名無しさん
17/11/20 08:07:46.65 FVq6Osty0.net
よくあんなゴミに声をかけようという気になるものだ
類は友を呼ぶからか?

653:デフォルトの名無しさん
17/11/20 08:09:30.80 XyKfixC2r.net
上の人からの
古い方が安心だから
と訳が解らない理由で.Net3.5を採用しようとしてる新規プロジェクトがあるw
当然現場は猛反対しているが

654:デフォルトの名無しさん
17/11/20 08:30:36.23 OymZQAJWM.net
>>642
変化を極端に恐れるジャップ体質どうにかしてほしいな

655:デフォルトの名無しさん
17/11/20 08:37:53.75 phc3FRBoM.net
>>640
wait, resultのとき以外でも落ちるのか?

656:デフォルトの名無しさん
17/11/20 08:40:57.62 1G6nIlxwM.net
民族性じゃなくて契約の問題
それでコストが少し増えたとしても成果じゃなく工数で金取るから不利益にならないし、
客の事業じゃなく作業に対して責任を負う以上はもどうしてもオーバークォリティにならざるを得ない
自社サービスの会社だと軽いノリでバージョン上がるぞw

657:デフォルトの名無しさん
17/11/20 08:43:07.45 phc3FRBoM.net
>>642
多分、安心と言っている意味が違うかも。
.NET3.5はMSが終了宣言できないバージョンになる。
vb6の様にゾンビの如く生き残り安泰w

658:デフォルトの名無しさん
17/11/20 08:49:09.41 Kfz9fY2x6.net
>>641
思い通りならなくてドンマイw

659:デフォルトの名無しさん
17/11/20 08:55:17.32 FVq6Osty0.net
ゴミが染るから触んな

660:デフォルトの名無しさん
17/11/20 09:02:42.76 phc3FRBoM.net
>>645
受託じゃNode.jsなんて使う機会は無いもんね
自社サービス会社のがプログラマーは楽しそう

661:デフォルトの名無しさん
17/11/20 09:38:42.97 zQ7I4hEQM.net
PCLって美味しいの?

662:デフォルトの名無しさん
17/11/20 11:44:42.83 bl/e+CdyM.net
>>639
おまえは開発環境変更できる権限あるのか。いいな。

663:デフォルトの名無しさん
17/11/20 11:46:23.27 bl/e+CdyM.net
>>642
async await使えないの

664:デフォルトの名無しさん
17/11/20 11:58:13.80 QH5eJXusM.net
ギョーミーなアプリでasync/await使う?

665:デフォルトの名無しさん
17/11/20 12:14:21.61 UOv8Me/NM.net
>>653
使わない
というかawaiasyncってなんだ?って連中の方が多数派なので使えない
冗談みたいなホントの話

666:デフォルトの名無しさん
17/11/20 12:18:41.10 QH5eJXusM.net
>>654
使ってても待たせてるだけで何も出来ないとか
意味ないじゃんw っての

667:デフォルトの名無しさん
17/11/20 13:24:27.66 Q9UPjx7d0.net
>>650
デスクトップだけなら共有プロジェクトでいい

668:デフォルトの名無しさん
17/11/20 17:43:42.18 XyKfixC2r.net
>>653
バリバリ使ってる
知らない人でも説明すれば大体は解ってくれる
こんな便利なものがあるんですね!と感動する人
ふーんな人
非同期何それ美味しいの?な人
説明では解ったと言いながら実装では悪戦苦闘してる人
反応は様々だね

669:デフォルトの名無しさん
17/11/20 18:00:51.43 bl/e+CdyM.net
>>657
おれなんかTaskで匿名メソッドシコシコ書いてるわ!

670:デフォルトの名無しさん
17/11/20 18:48:31.14 OyLLFCrh0.net
すげーでかい図を出力したいんですがフォーマットは何がオススメですか?
画像だとデスクトップより大きくなると表示できないようです

671:デフォルトの名無しさん
17/11/20 18:53:19.76 aqwGZvu20.net
>>659
>デスクトップより大きくなると表示できない
こういうこと?
スクロールバーを付けて画像を表示する
URLリンク(dobon.net)

672:デフォルトの名無しさん
17/11/20 19:22:27.44 OyLLFCrh0.net
>>660
あ、申し訳ないです
フォームでエラー出てました

673:デフォルトの名無しさん
17/11/20 19:33:32.37 aqwGZvu20.net
>>661
x64(AnyCPU)で動かす
それがだめなら自分で必要なだけ読み込んで部分的に表示するしかない
GDI+にはそんな機能無かったと思うから

674:デフォルトの名無しさん
17/11/20 19:34:30.92 U7p2GA3b0.net
>>654
知識が.NET2.0くらいで止まってる人が多いよ。
それ以上の言語拡張は開発者置いてけぼりのMSの自己満足かもね。

675:デフォルトの名無しさん
17/11/20 19:40:12.58 YF/poHTW


676:6.net



677:デフォルトの名無しさん
17/11/20 19:43:30.41 U7p2GA3b0.net
>>659
Open XML

678:デフォルトの名無しさん
17/11/20 19:55:19.01 U7p2GA3b0.net
>>657
非同期何それ美味しいの? 調理間違えても、お腹壊さない?

679:デフォルトの名無しさん
17/11/20 20:17:10.91 rFfN6JGKM.net
>>663
というか、アメリカは内製が中心だからバージョンについて日本ほど保守的にならなくていいんだと思うよ

680:デフォルトの名無しさん
17/11/20 20:19:38.39 aqwGZvu20.net
>>664
エラーは今回どうでもいい情報なんだよな
むしろ表示する用途・解像度・実行環境の方が重要
x64なら10000*10000 pixel*32bppのBitmapでも余裕で表示できるけど

681:デフォルトの名無しさん
17/11/20 20:23:29.97 e0aI6m0P0.net
ただのコーディングミスでNullReferenceとか最悪コンパイルエラーまである

682:デフォルトの名無しさん
17/11/20 20:34:17.67 U7p2GA3b0.net
>>667
実際の実装に無難で枯れた技術を使うのと
新しい技術に無知なのは違うと思うけど

683:デフォルトの名無しさん
17/11/20 21:10:30.74 LQqpoEbp0.net
>>659
URLリンク(qiita.com)
こんな感じ?

684:デフォルトの名無しさん
17/11/20 21:17:18.15 rFfN6JGKM.net
>>670
そういう問題じゃないの
内製だと、選んだ技術について組織の中でノウハウを蓄積しやすい
また、開発も運用保守もユーザーも同じ主体なのでJVMのバージョンアップでベンダーに億単位でぼったくられるようなことにはならず、
更新の障壁が比較的低いんだよ

685:デフォルトの名無しさん
17/11/20 21:25:02.39 UI9vB3qq0.net
>>668
いや、、フォームのエラーだけじゃわかんねえだろ、、、
本当にお前の思ってるのが原因か、、?

686:デフォルトの名無しさん
17/11/20 21:25:54.16 U7p2GA3b0.net
>>672
ま、見積もりありきの受託開発とリスクのある新技術の導入が合わないのはあるとは思う
なんでc#スレでJVM w

687:デフォルトの名無しさん
17/11/20 21:28:21.71 aqwGZvu20.net
>>673
考え方が逆だと思うんだよな
エラーだけ示されて解決できるのならそうしたらいいと思うけど、どっちにしても本人が何も言わないのならどうしようもない

688:デフォルトの名無しさん
17/11/20 21:28:24.50 y/6cZRj30.net
区別が付いてないんでしょ

689:デフォルトの名無しさん
17/11/20 21:28:54.04 2/KPMrVLr.net
内製じゃないけど開発の各関係部署にプロトタイプを配るのにクレームがつかない為に.NETのバージョンを下げてた人達がいたなあ
当然製品版も下げてたww
その話聞いて笑うしかなかった (´・ω・`)

690:デフォルトの名無しさん
17/11/20 21:31:06.19 EjockrVW0.net
ライセンス料ケチってVS2010とか使ってるのが原因の場合もあるぞ

691:デフォルトの名無しさん
17/11/20 21:47:30.51 Rfx0F+NsM.net
>>672
内製は銀の弾丸じゃねーぞw

692:デフォルトの名無しさん
17/11/20 22:00:54.42 UI9vB3qq0.net
>>675
なら聞けよ
何言ってんだ

693:デフォルトの名無しさん
17/11/20 22:03:17.71 U7p2GA3b0.net
落ち着いて ( ´・ω・`)_且~~

694:デフォルトの名無しさん
17/11/20 22:12:04.01 gpmTl3Lx0.net
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;

695:デフォルトの名無しさん
17/11/20 22:15:11.19 ThNisUZnM.net
>>678
dotnet cli + VSCodeでいいじゃん
商用無料で最新バージョン使えるぞ
SCDなら配布も楽だし
なんで流行らないんだろ
旧バージョンもう要らんでしょ

696:デフォルトの名無しさん
17/11/20 22:16:16.66 UI9vB3qq0.net
種類が増えるなら教科ごとにプロパティ作るんじゃなくて教科名+点数の辞書のリストにするのが自然だと思う

697:デフォルトの名無しさん
17/11/20 22:21:19.53 rFfN6JGKM.net
>>682
データ設計が悪い
テスト結果(生徒ID, 科目, 点数)
生徒(生徒ID, 名前)
この方がSQLフレンドリー

698:デフォルトの名無しさん
17/11/20 22:30:41.09 ThNisUZnM.net
>>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.赤点人数} 人");

699:デフォルトの名無しさん
17/11/20 22:40:41.76 aO8f69d6a.net
>>682
それ、LINQいっこも関係ないような気が...
Func<Test, int> getScore = (x) =>
{
  if (Kyouka == "国語") return x.国語;
  if (Kyouka == "数学") return x.数学;
};
akaten = ListTest.Where(x => getScore(x) < 30 ).ToList().Count;

700:デフォルトの名無しさん
17/11/20 22:50:14.07 rFfN6JGKM.net
>>687
それは毎回無駄な科目チェックが入るから非効率
せっかくデリゲート使うんなら最初にgetScoreを科目に応じたものに差し替えるのがスマート
もちろんそれ以前にデータ設計が間違ってるけど

701:デフォルトの名無しさん
17/11/20 22:51:04.11 aO8f69d6a.net
>>688
そりゃそうでしょうけどストレートにオーダーされたものを出してるだけなんでw

702:デフォルトの名無しさん
17/11/20 22:52:45.76 UI9vB3qq0.net
var akaten=ListTest.Count(x=>(int)(typeof(Test).GetProperty(Kyouka). GetValue(student))<30);

703:デフォルトの名無しさん
17/11/20 23:14:47.31 gpmTl3Lx0.net
>>684
>>685
やっぱりデータ設計が悪いと言われますか
今のうちに変えてしまうべきなのかな
>>686
Dictionary使ったことなかったので参考になります。
SQLアンチパターンすごい為になりそうなので読んでみます。
>>687
>>690
まだ完全に理解できていないけど参考になります。
レス参考に対応してみます。
みなさんアドバイスありがとうございました。

704:デフォルトの名無しさん
17/11/21 11:17:50.06 qjtNZd9v6.net
new Dictionary<string, int>(){
{“たろう”, 68}
}
型引数を推論させて
new Dictionary(){
{“たろう”, 68}
}
みたいにできないの?出来ればいいのに。

705:デフォルトの名無しさん
17/11/21 12:30:59.27 WV/YnhFsM.net
C#は厳格な型言語です

706:デフォルトの名無しさん
17/11/21 12:32:30.39 JYBkdGYBM.net
C#7ならたぶんこう書ける
static Dictionary<TKey, TValue> ToDictionary(this IEnumerable<(TKey key, TValue value)> items) =>
 items.ToDictionary(x => x.key, x => x.value);
new[] { ("たろう", 68) }.ToDictionary()

707:デフォルトの名無しさん
17/11/21 19:23:11.85 K26qvPIE0.net
awaitってなんの意味があるの?
待ってたら非同期の意味なくね?

708:デフォルトの名無しさん
17/11/21 19:28:24.05 TIZ+WImHM.net
>>695
って思うじゃん?

709:デフォルトの名無しさん
17/11/21 19:32:39.47 oC2HbrNwa.net
>>695
処理が終わるまで待ってるように見えるけど実際は別にスレッドを使って
違うことを同時にやってるだけ

710:デフォルトの名無しさん
17/11/21 19:36:01.18 K26qvPIE0.net
>>697

メインのスレッドはタスクの実行完了を待機状態なんだろ?
待機してたら何もできないから意味なくね?

711:デフォルトの名無しさん
17/11/21 19:38:32.15 zF41/4yq0.net
>>698
awaitの後の処理をタスクにして、awaitで待ってるタスクの後続タスクにしてる。
メインのスレッドは待機してない。

712:デフォルトの名無しさん
17/11/21 19:39:21.82 tfBo/9nR0.net
>>698
簡単なコードで試せるんだから2chに書き込む時間使って動作確認すれば?

713:デフォルトの名無しさん
17/11/21 19:40:18.25 KARCkhIlr.net
メインスレッドはいわゆるwaitをしている訳ではない

714:デフォルトの名無しさん
17/11/21 19:41:33.68 K26qvPIE0.net
>>699
なるほど!

715:デフォルトの名無しさん
17/11/21 21:20:36.17 8K/pnPq30.net
最近のオシロスコープはWebサーバー機能を持っていて、Webブラウザでアクセスすると
計測画面を表示させることができますが、C#で同じような機能を簡単に実装することはできるでしょうか?
リモートデスクトップではなく、WinFormsのアプリ画面だけをネット越しに共有する感じです。

716:デフォルトの名無しさん
17/11/21 21:27:50.82 UMxxTtnJ0.net
>>703
中にwebサーバー入ってんじゃね?
c#でって言われてもハードの構成が何を想定してるのかわかんなくね?

717:デフォルトの名無しさん
17/11/21 21:31:11.05 K26qvPIE0.net
>>703
WinFormsの画面を配信したいってこと?

718:デフォルトの名無しさん
17/11/21 21:34:21.85 UMxxTtnJ0.net
exeコピーすればいいじゃんね

719:デフォルトの名無しさん
17/11/21 21:36:26.83 UMxxTtnJ0.net
サーバーのHDDのインストーラをぶっ叩けば.netframeworkも入るぞ

720:デフォルトの名無しさん
17/11/21 21:50:25.88 z0YVJa690.net
精度や遅延はどの程度なら許容されるんだろ
オシロスコープに出来るんならC#でも出来るとは思うけど
どんなデータの送り方してるのかまでは分からない

721:デフォルトの名無しさん
17/11/21 21:52:46.40 HJsjXF5N0.net
>精度や遅延はどの程度なら許容されるんだろ
要件による
遅延に関しては、ユーザ視点で表面化し難い様に誤魔化す方法が幾らかはあるし

722:>>703
17/11/21 21:59:41.58 8K/pnPq30.net
>>705
その通りです。
作ろうとしているのはオシロスコープとは全く別で、計測器の取得データを延々と
表示し続けるようなものです。
現状はファイルベースで共有しているのですが、例として出したオシロスコープのように
ある程度リアルタイムの値も見たいと社内で要望があったので。
なので、遅延は数秒レベルでも全く問題無いです。

723:デフォルトの名無しさん
17/11/21 22:03:47.53 K26qvPIE0.net
>>710
websocketサーバー立ててjsonで生のデータを定期的に送信するようにする。
javascritで受信してcanvasとかにそれを表示するウェブアプリをウェブサーバー立てて配信する。

724:デフォルトの名無しさん
17/11/21 22:04:13.13 oC2HbrNwa.net
>>710
webサーバでいいだろう

725:デフォルトの名無しさん
17/11/21 22:11:08.94 UMxxTtnJ0.net
この場合ってHDDからデータ取ってくるだけじゃね?

726:デフォルトの名無しさん
17/11/21 22:11:40.48 fFSiopFkM.net
ElasticsearchとKibanaでも使えば?

727:デフォルトの名無しさん
17/11/21 22:23:31.72 K26qvPIE0.net
>>713
javascriptで定期的にデータのファイルをダウンロードして表示するようにするだけか

728:デフォルトの名無しさん
17/11/21 22:27:39.04 z0YVJa690.net
後は計測間隔がmsスケールとかじゃなけりゃ
そんなに難しくは無いと思う

729:デフォルトの名無しさん
17/11/21 22:32:00.42 tfBo/9nR0.net
もうC#関係なくなってきてるな

730:デフォルトの名無しさん
17/11/21 23:02:59.07 /0BXFww1a.net
昔USBや232C接続の計測器のデータ拾う仕事してたけど
ネットワーク越しはやったことないな
サンプルレートはmsオーダどころか10ksps以上でも問題ないでしょう

731:デフォルトの名無しさん
17/11/21 23:24:00.28 AM6ulXU90.net
9600BPS同期で通信出来れば誉めてあげるよ

732:デフォルトの名無しさん
17/11/21 23:29:41.27 e9zQnDKx0.net
windows visual studioでのフォームアプリを使ってのC#の質問です
例えばTextBoxAとTextBoxBのテキストボックスを
フォーム上に配置して
TextBoxAに「あ」と入力してEnterを入力したらTextBoxBに「い」と表示させるようにしたいのですが
どうすればいいでしょうか?

733:デフォルトの名無しさん
17/11/21 23:31:16.83 TR9cbyXd0.net
>>711で充分だろう
難しいとこ一つもないよ

734:デフォルトの名無しさん
17/11/21 23:38:07.40 K26qvPIE0.net
>>720
テキストボックス1のイベントハンドラでテキストボックス1のTextプロパティを取得して、それが「あ」ならテキストボックス2のTextプロパティに「い」を代入する。

735:デフォルトの名無しさん
17/11/22 00:06:37.07 jXiKT4v3a.net
>>720
スレの存在意義を否定するようだけど
その程度でいちいち質問してたら先が思いやられるよw
public Form1()
{
  InitializeComponent();
  textBoxA.KeyDown += (s, e) =>
  {
    if(e.KeyCode == Keys.Enter && textBoxA.Text == "あ") textBoxB.Text = "い";
  };
}
自分でやっといて何だけど、本当はいきがってラムダ式なんか使わずに
イベントハンドラを書いた方が保守性の面では好ましいと思う

736:デフォルトの名無しさん
17/11/22 00:32:48.43 pUgwVgr10.net
いきがってラムダ式とか使ってるけど直前のレスがほぼ完全解答という

737:デフォルトの名無しさん
17/11/22 00:38:13.46 KA0qTObfa.net
俺だったらTrim()付けるね

738:デフォルトの名無しさん
17/11/22 00:47:40.32 QmSU3CcY0.net
キメェ
ctrl+vでどうなるんだ?
とか最終的にはkillfocusちゃうの?
とか考えると普段ぜってー組まない
コード見ると黒板キィィィィィって
やられてる気分になる

739:デフォルトの名無しさん
17/11/22 00:54:55.44 d5y4PxOU0.net
煽るだけのバカ

740:デフォルトの名無しさん
17/11/22 00:55:46.04 Jt3bKlvZ0.net
そいついつもキレてんな。

741:デフォルトの名無しさん
17/11/22 00:56:49.24 NUn4dBze0.net
キレッキレやな

742:デフォルトの名無しさん
17/11/22 00:59:12.72 8eOpOd0J0.net
>>726
エンターで動作なんだからCtrlVがどうこうとかイミフだしフォーカス外したいなら外せばそれで済む話じゃねえか

743:デフォルトの名無しさん
17/11/22 01:38:12.73 QmSU3CcY0.net
>>730
テキストボックスでkillfocus以外での処理は鬼門
そういう暗示にかかっているのです
でもctrl+Aは気軽に入れるけどね

744:デフォルトの名無しさん
17/11/22 22:27:47.55 2ViDa+Rm0.net
データバインド教えて
this.dataGridView_List.DataSource = list;
これをロード時に書けば
listにAddしてけばDataGridに行追加されてく?

745:デフォルトの名無しさん
17/11/22 23:26:53.46 OlRubHVI0.net
listがINotifyCollectionChangeを実装したオブザーバブルなリストならね。
ただのリストじゃ反映されないと思う

746:デフォルトの名無しさん
17/11/22 23:30:35.23 2ViDa+Rm0.net
>>733
これWPFだけ?

747:デフォルトの名無しさん
17/11/22 23:39:53.01 Jt3bKlvZ0.net
>>734
Formアプリでもあるんじゃない?
URLリンク(www.digi-con.co.jp)

748:デフォルトの名無しさん
17/11/23 00:45:13.68 axjWBGmc0.net
素朴な疑問なんですけど
ListコレクションからLINQでデータ検索したい時とか、データがソートされてる方がパフォーマンスが良いとかあるんでしょうか

749:デフォルトの名無しさん
17/11/23 00:48:24.00 3UvXGadQ0.net
>>736
ソートされてるならBinarySearchを使えば速い
LINQ使ったら線形検索になるのでソートは意味ない

750:デフォルトの名無しさん
17/11/23 09:20:42.83 axjWBGmc0.net
>>737
BinarySearchが使えるのは知りませんでした
ありがとうございます

751:デフォルトの名無しさん
17/11/23 10:19:01.69 ocuKvabTr.net
件数少ない時は線形の方が速いよ

752:デフォルトの名無しさん
17/11/23 16:29:13.27 1glLBmTM0.net
1 のとき 0.7
3 のとき 0.9
8 のとき 0.6
9 のとき 0.5
こういうデータがある時、右の要素が最大である左の要素の番号を返すプログラムを作りたいのですが
簡単な方法はないでしょうか?

753:デフォルトの名無しさん
17/11/23 16:36:15.34 6Js7jM8k0.net
List〈class〉でやってみるといいのでは?
class Data

public int id{get;set;}
public double result{get;set;}

みたいに作って、ListをループさせてData.resultを確認して一番大きい数字のid(クラス)を返すみたいな
ICollectionに一番大きい数字のindex返す関数とかあった気がするからもっと楽に作れるかもしれないけど

754:デフォルトの名無しさん
17/11/23 16:41:24.65 E5KFBI6l0.net
楽さなら右要素でソートして末尾の左要素返せば
普通に探索しても大した手間の差ではない気もするが

755:デフォルトの名無しさん
17/11/23 16:44:45.88 DqyU4UwDM.net
>>740
DBに突っ込んでから
select key from data
where value = (select max(value) from data)
でいいよ

756:デフォルトの名無しさん
17/11/23 16:58:00.67 pEApwQyq6.net
@“1 のとき 0.7
3 のとき 0.9
8 のとき 0.6
9 のとき 0.5”
.Split(‘\n’)
.Select(line => line
.Split(“のとき”)
.Select(piece => piece.Trim())
)
.OrderBy(pair => pair[1])
.Last()[0];

757:デフォルトの名無しさん
17/11/23 17:01:37.44 pEApwQyq6.net
変換忘れた(;ω;)

758:デフォルトの名無しさん
17/11/23 17:03:20.80 6Js7jM8k0.net
>>744
この仕様はまったく考えてなかった
仕様聞くのって大変だな・・・

759:デフォルトの名無しさん
17/11/23 17:17:36.99 cW6v2Sii0.net
>>740
URLリンク(ideone.com)

760:デフォルトの名無しさん
17/11/23 17:24:58.41 cW6v2Sii0.net
よく考えたらC#だった、寝惚けてるわ

761:デフォルトの名無しさん
17/11/23 17:44:11.84 cW6v2Sii0.net
どっちで書いても同じようなもんだった
URLリンク(ideone.com)

762:デフォルトの名無しさん
17/11/23 18:22:14.69 1glLBmTM0.net
みなさん有難う御座います。
Dictionaryを使ってみようと思うのですが
Dictionary<string,double> dict = new Dictionary<string,double>();
dict.Add("1",0.7);
dict.Add("3",0.9);
dict.Add("8",0.6);
dict.Add("9",0.5);
このあとvalueが最大値の時のキーの値を求める方法がわかりません
dict.OrderBy(pair.Value).Last.Keyじゃダメなんでしょうか?

763:デフォルトの名無しさん
17/11/23 18:24:15.88 pEApwQyq6.net
>>750
いいよ

764:デフォルトの名無しさん
17/11/23 18:34:21.92 1glLBmTM0.net
>>751
現在のコンテキストに 'pair' という名前は存在しません。
というエラーが出て出来ないです…

765:デフォルトの名無しさん
17/11/23 18:37:13.32 Go3NcBxu0.net
pair宣言してないからだろうに、
dict.OrderBy(pair => pair.key).Last.Keyじゃないかな。

766:デフォルトの名無しさん
17/11/23 18:37:55.69 pEApwQyq6.net
URLリンク(ideone.com)

767:デフォルトの名無しさん
17/11/23 18:38:17.36 Go3NcBxu0.net
もちろん
pair => pair.Value
だったな。

768:デフォルトの名無しさん
17/11/23 18:39:03.67 4OkBFxYdM.net
>>752
どこか適当なところで勉強してから来なさい

769:デフォルトの名無しさん
17/11/23 18:54:09.98 1glLBmTM0.net
>>753
>>754
>>755
ありがとうございます!出来ました
ただ同じキーがあると動かなくなるので別の方法を考えなければいけない様です…

770:デフォルトの名無しさん
17/11/23 18:59:24.88 kBi82nCb0.net
>>757
同じキーが存在するのにDictionary使うのが間違い
他の人が例として使っているDataクラスで事足りると思うんだが

771:デフォルトの名無しさん
17/11/23 18:59:33.92 yDdQ43O00.net
そりゃキーが重複したらエラーになるよ
辞書ってそういうもんでしょ
あと重複があるんなら>>749のを使えば?

772:デフォルトの名無しさん
17/11/23 19:07:10.50 eO5S+uX/0.net
「valueが最大値の時のキーの値」だけが必要なんじゃなかろうか?

773:デフォルトの名無しさん
17/11/23 19:14:33.13 1glLBmTM0.net
>>749
で教えて頂いたのでやってみます!

774:デフォルトの名無しさん
17/11/23 19:16:31.56 1glLBmTM0.net
配列の大きさが不明なのでaddが使える方法でやりたかったもので…

775:デフォルトの名無しさん
17/11/23 19:18:05.05 pEApwQyq6.net
var list = List<Data>()
これを使えばいい
Addもできる

776:デフォルトの名無しさん
17/11/23 20:12:06.29 eO5S+uX/0.net
>>762
単に最大時のkey, valueだけが欲しいのならListもaddも不要だけどね。。

777:デフォルトの名無しさん
17/11/23 20:41:13.63 FrNu/68p0.net
Name : aaa
Info : vvv
Message : sss
テキストファイルに↑のような空白文字で:を揃えた情報を、File.ReadLinesで取り出し、
.ToArray()で配列にしたあとTextBoxのLinesに設定したところ、コロンの位置がずれてしまいます。
foreachでTextプロパティに追加していく方法でもずれるのですが、Consoleだと綺麗に出力されます。
なにか対策等ありますか?

778:デフォルトの名無しさん
17/11/23 20:43:45.19 kBi82nCb0.net
>>765
コンソールと同じように、テキストボックスのフォントをMSゴシックみたいな等幅フォントにする

779:デフォルトの名無しさん
17/11/23 21:07:02.11 FrNu/68p0.net
>>766
MSゴシックで試したところ解決しました。
ありがとうございました。
等幅フォントの使い道がこんなところにあったとは、でした。

780:デフォルトの名無しさん
17/11/23 21:25:10.61 vcWp0UMr0.net
>>764
思わせぶりなことだけ言うだけ。

781:デフォルトの名無しさん
17/11/23 21:29:38.22 vcWp0UMr0.net
>>765
タブ文字じゃだめなん?

782:デフォルトの名無しさん
17/11/23 21:48:04.04 1glLBmTM0.net
>>749とList使った方法で出来ました!
有難う御座いました。
ソート時の=>の書き方が色々あっていまいち理解出来てないですが…

783:デフォルトの名無しさん
17/11/23 21:59:19.61 6Js7jM8k0.net
ラムダ式とLinqは後々覚えていけばいいんじゃないの
とりあえずこういう書き方もできるって事で

784:デフォルトの名無しさん
17/11/23 22:15:45.74 tJBaWbvoa.net
ラムダ式はデリゲートと同時に覚えようよw
たいして覚えることないんだし、今時C#プログラマの最小要件でしょ

785:デフォルトの名無しさん
17/11/23 22:21:30.93 Bg3Rqdl/0.net
HttpClient client=new HttpClient();
FormUrlEncodedContent contents = new FormUrlEncodedContent(new
Dictionary<string, string>{
{"あああ","1"},
{"あああ","2"},
{"いいい","0"},
});
respnse = await client.PostAsync(url, contents);
このままだと同じキーを含んでいるのでエラーが出ます。
サイトの仕様上、このままデータを送らないといけないのですが、どう変更すれば
きるようになりますか?

786:デフォルトの名無しさん
17/11/23 22:24:57.40 eO5S+uX/0.net
>>770
1 のとき 0.7
3 のとき 0.9
4 のとき 0.9
5 のとき 0.9
こんなデータのとき、3,4,5のどれでもええの?

787:デフォルトの名無しさん
17/11/23 22:31:44.60 yDdQ43O00.net
>>773
KeyValuePairの配列でやってみたら?試してないから動くかわからんけども

788:デフォルトの名無しさん
17/11/23 22:53:52.49 FrNu/68p0.net
>>769
ありがとうございます。タブ文字でもできることを確認しましたが、
今回はString.Format("{0, 4} : {1}", num,message)のような文字列も綺麗に出力したいので
等幅フォントを使用したいと思います。

789:デフォルトの名無しさん
17/11/23 23:31:46.08 vcWp0UMr0.net
>>773
new List<KeyValuePair<string, string>>{
{"あああ","1"},
{"あああ","2"},
{"いいい","0"},
}

790:デフォルトの名無しさん
17/11/23 23:37:02.83 1glLBmTM0.net
>>774
左のデータは重複することはあっても右のデータは0.93234…みたいな感じで重複しない感じです!

791:デフォルトの名無しさん
17/11/23 23:56:53.12 6gvgNZ3b0.net
乱数をキーにして衝突して死んだやつを俺は知ってる

792:デフォルトの名無しさん
17/11/24 10:33:29.48 mPUfH2u/0.net
>>774のようなコーナーケースの指摘に対して、「そんなケースは稀だから考えなくてよい」とするか
「どっちでもいいならどっちかに決めよう」とするか、開発センスが現れるな。

793:デフォルトの名無しさん
17/11/24 11:35:20.40 GsVE4oKd0.net
今回は稀でもないけどね

794:デフォルトの名無しさん
17/11/24 11:52:48.02 EfmvZejc0.net
最大値の行を取り出すだけにコレクションは不要だけどね

795:デフォルトの名無しさん
17/11/24 11:58:30.46 PklTWoNU6.net
>>782
だから口だけカマチョはやめろ

796:デフォルトの名無しさん
17/11/24 12:01:51.76 EfmvZejc0.net
>>783
配列の最大値を所得するロジックを知らんと?
配列ソートの前に習うだろ。

797:デフォルトの名無しさん
17/11/24 12:02:53.10 PklTWoNU6.net
動的リストだからAddとか必要って言ってんだろ

798:デフォルトの名無しさん
17/11/24 12:09:15.88 mqWCdSHW0.net
>>782
配列リストの最大値出せるけど今回はindexがバラバラになってるじゃん

799:デフォルトの名無しさん
17/11/24 12:14:42.91 EfmvZejc0.net
>>785
動的リストとは?

800:デフォルトの名無しさん
17/11/24 12:15:06.09 J2WegmLO6.net
>>787
Add使いたい言っとるだろ

801:デフォルトの名無しさん
17/11/24 12:22:59.05 mqWCdSHW0.net
一応配列もコピーとサイズ増やして擬似的に追加は出来る
昔の俺が調べて書いてたけどコレクション使えと怒られた

802:デフォルトの名無しさん
17/11/24 12:26:56.52 EfmvZejc0.net
>>788
それはお前らが誘導したからw
元データの構造がが何なのかワカランとどれが最適かはわからんな

803:デフォルトの名無しさん
17/11/24 12:29:02.86 J2WegmLO6.net
>>790 >>762



805:デフォルトの名無しさん
17/11/24 12:42:17.78 EfmvZejc0.net
>>791
c#の中からいきなり>>740のデータが湧いて出てくるはずもなく、
そのような仕様があるとしたら「宿題」だなw

806:デフォルトの名無しさん
17/11/24 12:44:49.36 J2WegmLO6.net
コレクションは要らない!(キリッ

807:デフォルトの名無しさん
17/11/24 12:47:41.40 EaZH7dVF0.net
>>792
いい加減黙ったら。
必要だからListにしてるだけで、>>782とか何の足しにもならんぞ。

808:デフォルトの名無しさん
17/11/24 12:53:50.07 qz26KndN0.net
>>760
>>764
>>782

809:デフォルトの名無しさん
17/11/24 12:55:58.12 EfmvZejc0.net
>>794
オレは最大値を取り出すだけならリスト構造は不要と言っているだけだ。
間違ってるか?

810:デフォルトの名無しさん
17/11/24 13:07:04.20 EaZH7dVF0.net
>>796
元データを用意する実装の都合でそうしてるだけなのに、そんな分かり切ったことを言う必要ないだろ。
勘違いしてるそぶりもなかったしな。

811:デフォルトの名無しさん
17/11/24 13:12:51.07 EfmvZejc0.net
>>797
何を言いたいのかさっぱりわからんわ。

812:デフォルトの名無しさん
17/11/24 13:14:37.94 EaZH7dVF0.net
>>798
最大値を取り出すためにリスト構造にしているわけではない。
これなら分かる?

813:デフォルトの名無しさん
17/11/24 13:18:59.06 mqWCdSHW0.net
あの説明でこの配列仕様考えてたってこと?
double?[] data = new double[]

null,
0.7,
null,
0.9,
null,
null,
null,
null,
0.6,
0.5
};

814:デフォルトの名無しさん
17/11/24 13:20:05.03 mqWCdSHW0.net
>>800
あぁ多次元やジャグ配列があるか
これ忘れて

815:デフォルトの名無しさん
17/11/24 13:23:12.73 EfmvZejc0.net
>>799
最大値を取り出した後の事に触れて無いのも事実。
最大値だけが必要なのか、取り出した最大値を使ってリストに何かをしたいのかわからない。
本人は最大値の取得だけで満足して消えてしまったし。

816:デフォルトの名無しさん
17/11/24 13:37:21.47 cWMe5SKyM.net
本当に最大値だけでいいのかも知んないしね

817:デフォルトの名無しさん
17/11/24 13:42:02.13 mqWCdSHW0.net
右が最大値の時の左の要素の番号が欲しいって書いてあるぞ
インデックスも飛び飛びで左の要素が重複するときもあるって後から出してる
確かに多次元やジャグ配列ならその仕様はありそうだけどその差は技術力の無い俺には大きな差がわからん

818:デフォルトの名無しさん
17/11/24 14:07:29.79 ZR8Pz10g6.net
コレクションなんか必要ない(キリッ

819:デフォルトの名無しさん
17/11/24 14:40:56.86 asGQ9mvw0.net
今日のウンコの最大サイズとか何回目に出たウンコとかどうでもいいだろ

820:デフォルトの名無しさん
17/11/24 17:05:26.06 BCw6/Ft50.net
>>806
でも色は大事だぞ
どす黒いのはヤバイ

821:デフォルトの名無しさん
17/11/24 17:12:26.57 asGQ9mvw0.net
>>807
それ、最大サイズとかじゃなくて
少量でもアウトだから

822:デフォルトの名無しさん
17/11/24 20:00:59.51 7dGX3zxS0.net
非同期処理のasync/awaitって
処理A
var ret = await Task();
処理B
みたいなときはTaskの中の処理が終わるまでは処理Bには進まないという理解であってる?
あとTaskの中がプロパティに値を代入するだけみたいなawaitを使うタイミングがない場合は
await Task.Run(()=>{ Taskの中でやりたい処理 });
って書くしかない?

823:デフォルトの名無しさん
17/11/24 20:36:08.05 GsVE4oKd0.net
馬鹿か
8回もよく粘ったもんだな

824:デフォルトの名無しさん
17/11/24 21:02:49.89 3H9uQYBg0.net
>>809
1.そのasyncメソッドの中だけを考えればそれで合ってる
2.ちょっと何言ってるか分からない awaitを使うタイミングがないって何?

825:デフォルトの名無しさん
17/11/24 21:16:49.61 h5bnr1q30.net
まだひよっこでよくわかって無いんだが
過去の他人が書いたコードで
if (条件){
処理 A
}
else if (条件){
処理 B
}
else{
// 何もしない
}
みたいなコードを見ることがあるんだが
このelseの何もしないってのは必要なのか?

826:デフォルトの名無しさん
17/11/24 21:23:55.00 7dGX3zxS0.net
>>811
大雑把に書くと下みたいなクラスのプロパティ書き換えるだけのメソッド
awaitする要素見えないけどawait演算子書かないとvisual studioが警告出すからどうやってawaitすればいいのかと
private async Task<bool> Task()
{
a=b;
c=d;
return true;
}

827:デフォルトの名無しさん
17/11/24 21:24:04.90 573d9hpx0.net
>>812
本人に聞けよw
というごく当たり前の話を省くと
・説明的なコードとしてわざわざつけくわえてある
・追加の可能性があるのでわかりやすいようにわざわざ残してある
このあたりじゃだめか?
C#として必要か?って話なら自分で消してみてビルドしろよって返す

828:デフォルトの名無しさん
17/11/24 21:25:24.75 mqWCdSHW0.net
後々追加するかもで書いたり何もしないってのをはっきり伝えたいとかで書いてるんじゃないかな
コンストラクタで
class Sample

public Sample()

//何もしない


に近いものを感じる

829:デフォルトの名無しさん
17/11/24 21:41:06.27 h5bnr1q30.net
>>814>>815
本人はもう辞めてたの
あぁ説明的な感じなのかな
別にこんなふうに書くのがC#のお約束とかじゃないよね

830:デフォルトの名無しさん
17/11/24 21:43:14.83 573d9hpx0.net
>>816
IDEやコンパイラが怒らない限りC#の約束事とか知らんしどうでもいい
そしてそのくらいの最適化はコンパイラに期待できる

831:デフォルトの名無しさん
17/11/24 21:43:58.48 zpTIVf120.net
使い道としてはなんだろね
何もしないにブレークポイントを設定するとAもBも処理しない条件のとき止まるかな
だったらlogger.infoしといてもいいのに

832:デフォルトの名無しさん
17/11/24 21:45:42.73 QGkXc5ztM.net
>>812
SIerのコーディング規約としてCOBOLの次代からある書き方だよ。
機械的にelseを入れるんじゃなくてelseの処理で何かもれて無いか考えてから空elseを入れましょうって事が形骸化して残ってる。
ほぼなんの意味もないコードです。

833:デフォルトの名無しさん
17/11/24 21:56:58.69 h5bnr1q30.net
>>817>>819
その人独自の癖みたいなもんだったってことか
消しても問題なく動くんでまぁ大丈夫っぽいし

834:デフォルトの名無しさん
17/11/24 22:17:05.19 hbIcAcZv0.net
>>809ってretが処理Bの中で使われなきゃ、待たずに処理B行っちゃうんじゃないの?

835:デフォルトの名無しさん
17/11/24 22:19:14.41 7i1mZEYS6.net
そのコードがasync修飾子を付けたメソッドの中に書かれてるとしたらそれはないだろ

836:デフォルトの名無しさん
17/11/24 22:31:11.65 h5bnr1q30.net
非同期処理内のコードでは無かった
これってasync修飾子内のコードだとなんかのエラー回避とかになるの?

837:デフォルトの名無しさん
17/11/24 22:31:59.96 7i1mZEYS6.net
おまえに言ってねえよカス

838:デフォルトの名無しさん
17/11/24 22:37:51.54 tzXAZjO3p.net
>>824
レス指定すら出来ないとか低脳かよ

839:デフォルトの名無しさん
17/11/24 22:39:38.31 S6xecz6o0.net
バカか?

840:デフォルトの名無しさん
17/11/24 22:41:49.16 7dGX3zxS0.net
下のSetメソッドだと処理Bでretを使ってなくても大丈夫?
private async Task Set()
{
処理A
var ret = await Task();
処理B
}
private async Task<bool> Task()
{
a=b;
c=d;
return true;
}
上のコードでTaskの中身にawait使いたかったら下みたいに書くしかない?
他の方法ある?
private async Task<bool> Task()
{
Task task = Task.Run(()=>{
a=b;
c=d;
}
await task;
return true;
}

841:デフォルトの名無しさん
17/11/24 22:42:24.96 V887TCBHM.net
>>825
この間からネットでしかストレス解消できない寂しいやつが湧いてる

842:デフォルトの名無しさん
17/11/24 22:49:06.66 tzXAZjO3p.net
つーかガックシって大学回線のワッチョイか
まさに低脳猿そのものだな
大学から2chとかどこの馬鹿大学の馬鹿ガキだよ

843:デフォルトの名無しさん
17/11/24 23:14:31.39 P/o0ISHr0.net
ウゼエ、ササクッテロ

844:デフォルトの名無しさん
17/11/24 23:20:37.11 tzXAZjO3p.net
ワッチョイの下4桁が変わってねぇぞ大学から2chの低脳猿ガキ

845:デフォルトの名無しさん
17/11/24 23:33:10.90 oz95vMBJM.net
>>812
忘れたんじゃなくて意図した動きですよって申し送りか

846:デフォルトの名無しさん
17/11/24 23:54:06.99 2BrQd4/c0.net
datagridviewで下から2つ目だけ変更する方法教えて
1 あああ
4 いいい
8 ううう
9 えええ
2 おおお
上から探索して行特定してCell位置指定して編集するしかない?

847:デフォルトの名無しさん
17/11/25 00:01:37.19 pvPgs+4u0.net
>>833
URLリンク(qiita.com)

848:デフォルトの名無しさん
17/11/25 00:06:13.82 yrhFfhmW0.net
asyncってアシンク?エイシンク?

849:デフォルトの名無しさん
17/11/25 00:08:11.36 6waUtYEo0.net
>>834
えーおもろ
DataSouce使うと
プロパティ名がそのまま項目名になるのか

850:デフォルトの名無しさん
17/11/25 00:10:38.42 pvPgs+4u0.net
eɪsíŋkrənəs
エイシンクロナス

851:デフォルトの名無しさん
17/11/25 01:10:38.87 1pHkPeMia.net
ガチでアシンクだと間違って記憶してたわw
aが頭について「非」の意味になる単語って他にあったっけ?
aliveやaloudは違うしなあ

852:デフォルトの名無しさん
17/11/25 01:16:18.14 kqX7412r0.net
URLリンク(www.wdic.org)

853:デフォルトの名無しさん
17/11/25 01:23:13.48 vI6wj4vV0.net
>>827
1.大丈夫
2.プロパティの設定ぐらいでTaskにする意味があるかは別にして、Task.Runでいいよ

854:デフォルトの名無しさん
17/11/25 08:19:21.33 uShMkUYk0.net
>>827
Task.Runはその中が別スレッドになるので注意。
return await Task.FromResult(true);
か、
asyncを外して
return Task.FromResult(true);
で。

855:デフォルトの名無しさん
17/11/25 08:55:10.96 t8H/7SYV0.net
>>841
return await Task.FromResult(true); じゃなかったらTaskがiscompletedになる前に終わっちゃう?

856:デフォルトの名無しさん
17/11/25 09:31:02.68 uShMkUYk0.net
始めからcompletedなTaskが返る

857:デフォルトの名無しさん
17/11/25 12:39:27.40 8Imfk/az0.net
>>841
???

858:デフォルトの名無しさん
17/11/25 14:45:48.16 yDO/xVL00.net
private Task<bool> MyTask()
{
 return Task.Run(()=>{a=b;c=d;;return true;});
}
で良いと思うんだわ。戻り値が何故必要なのか知らんが

859:デフォルトの名無しさん
17/11/25 17:00:28.46 ROI3Hzdd0.net
>>812
場面によるが 「何もしない」ではなく、asset(0) を書く、というのはやる
そうなるようにすべて条件をきっちり列挙するようにしている、c# にアサーションはありますか?

860:デフォルトの名無しさん
17/11/25 17:12:39.27 JSTnYDsg0.net
>>841
上のやつってTask<Task>が返ってくるの?

861:デフォルトの名無しさん
17/11/25 17:18:13.44 KwQ02SYsp.net
ワッチョイ末尾forRは大学から書き込んだりIDコロコロ変える煽りガイジなのでNGname推奨

862:デフォルトの名無しさん
17/11/25 17:20:24.36 JSTnYDsg0.net
x 変える o 変わる
ササクッテロも煽りカスなのでNG推奨

863:デフォルトの名無しさん
17/11/25 17:35:24.80 KnGPLM4Ka.net
何度も同じこと言って申し訳ないけど、だからワッチョイだのIDだのって嫌いなんだよね。
こういう他人にネチネチ粘着する馬鹿を喜ばせるだけのことで、
本来の目的であったはずの荒らしに対する抑止力どころか、かえって逆効果にしかならない
しかしさあ、いつも思うんだけど「誰かに粘着してやろう」とか思う奴って
どういう思考回路してるのかね。
俺には粘着する側の負い目を語るに落ちてるようにしか見えないけど、
テメエを客観視する能力ってものがないのかねw

864:デフォルトの名無しさん
17/11/25 17:41:28.81 P4DLYtAR0.net
っ[ 鏡 ]

865:デフォルトの名無しさん
17/11/25 17:47:24.32 4eIXfHS3M.net
>>850
しかしさあ、いつも思うんだけど、毎回この「いつも思うんだけど、~、かねw」パターンのレスを繰り返す奴ってどういう思考回路してるのかね。
俺には認知症か記憶障害にしか見えないけど、
テメエを客観視する能力ってものがないのかねw

866:デフォルトの名無しさん
17/11/25 17:57:34.25 pvPgs+4u0.net
大丈夫かこのスレ?w

867:デフォルトの名無しさん
17/11/25 17:59:21.22 +aAkFYw20.net
>>851
無茶苦茶イケメンが写ってる

868:デフォルトの名無しさん
17/11/25 18:03:20.01 D6HLQxmJ0.net
>>850
無かったらないで気持ち悪い自演をする奴がいるからあったほうがいいよ
こっちのが連投中の単発IDは信用に値しないだけだし

869:デフォルトの名無しさん
17/11/25 18:30:56.28 FtBpL/BP0.net
>>852
その人は10年以上それやってるからほっといてあげて

870:デフォルトの名無しさん
17/11/25 18:33:11.33 ROI3Hzdd0.net
>>850
ID は良かったともうよ、期限付きで連投荒らしを排除できるからね
土方キチガイちゃん、今はどうしているのかな…

871:デフォルトの名無しさん
17/11/25 19:10:27.33 59PrSiyL0.net
>>852
自己紹介?

872:デフォルトの名無しさん
17/11/25 20:33:11.25 mXV87WPlr.net
>>846
ある

873:デフォルトの名無しさん
17/11/25 20:47:38.24 UxolN1FL0.net
(´・ω・`)linqってマジックみたいにむちゃくちゃすごいってほんとなの?
C# っておぼえるのむずかしいの?

874:デフォルトの名無しさん
17/11/25 20:58:40.30 oOkyLeSsM.net
>>860
C#はメジャーな言語の中では特別難しいわけではないがどっちかというと難しめの部類
もともと他言語の経験者向けに作られた言語なので、他の言語の経験があればわりとすんなり入れる
反面、プログラミング自体の初心者には「なんでそんなことをするのか」と感じる部分が多く馴染みにくいと思われる
C#�


875:ノ限ったことじゃないが、プログラミング自体が初めてなら最初は誰でも血を吐き地獄を見て自分の無能さに絶望するもんだ



876:デフォルトの名無しさん
17/11/25 21:05:19.12 D6HLQxmJ0.net
>>860
linqガイジ自演やめろ

877:デフォルトの名無しさん
17/11/25 21:18:11.07 pvPgs+4u0.net
>>860
linqじゃなくてもjavascriptでも同じこと出来る

878:デフォルトの名無しさん
17/11/25 21:20:36.41 UxolN1FL0.net
(´・ω・`)そうなんやー

879:デフォルトの名無しさん
17/11/25 21:44:29.45 +Jz8ZPqE0.net
>>861
> プログラミング自体の初心者には「なんでそんなことをするのか」と感じる部分が多く
具体的にどんなところ?

880:デフォルトの名無しさん
17/11/25 22:13:03.23 P4DLYtAR0.net
コンソールアプリケーションから学んでけば、そんなでも無いと思うけどな
いきなりGUIじゃ訳分からなくなるのも当然っつーか
「今は分からないだろうけど、取り合えずおまじないと思って書いといて」
的なお約束なんて、Cでもあるもんだし

881:デフォルトの名無しさん
17/11/25 22:22:22.08 oiqZXgpT0.net
初心者なら「なんでstringだけnullableなんだよOptionとかねーのかよ」と思うだろう

882:デフォルトの名無しさん
17/11/25 22:26:45.83 P4DLYtAR0.net
そんな事を言い出す初心者嫌だわ

883:デフォルトの名無しさん
17/11/25 22:51:32.94 yrhFfhmW0.net
>>865
newするところだろww

884:デフォルトの名無しさん
17/11/25 22:55:41.38 N5s7ffCaM.net
何故stringはnewがいらないの?

885:デフォルトの名無しさん
17/11/25 22:56:21.40 pvPgs+4u0.net
リテラルで省略できるから

886:デフォルトの名無しさん
17/11/25 23:01:32.05 +Jz8ZPqE0.net
>>869
そう言うつまんない返し要らんし

887:デフォルトの名無しさん
17/11/25 23:03:29.13 8TvkEmrh0.net
クッソおもろい見本回答を見せてくれ

888:デフォルトの名無しさん
17/11/25 23:12:07.91 +Jz8ZPqE0.net
>>873
アホなのか?
面白い回答なんて求めてない

889:デフォルトの名無しさん
17/11/25 23:13:26.66 mL7zXSYF0.net
アホにもわかるように説明してくれ

890:デフォルトの名無しさん
17/11/25 23:15:22.09 +Jz8ZPqE0.net
>>875
>>865の質問の意味がわからないなら黙っていてくれ

891:デフォルトの名無しさん
17/11/25 23:17:09.05 mL7zXSYF0.net
>>87のレスがダメな理由をアホにもわかるように説明してくれ

892:デフォルトの名無しさん
17/11/25 23:17:56.98 pvPgs+4u0.net
>>870のレスがダメな理由をアホにもわかるように説明してくれ

893:デフォルトの名無しさん
17/11/25 23:19:55.08 ebsrSawd0.net
>>867
stringはclassだからnullableなのは当然じゃね?
どこに引っかかっるのか分からん

894:デフォルトの名無しさん
17/11/25 23:22:51.70 pvPgs+4u0.net
nullableじゃない他の言語があるってことじゃね?知らんけど。

895:デフォルトの名無しさん
17/11/25 23:28:42.07 ebsrSawd0.net
>>878
string はimmutableだから
newが要らないというより
newが必要となる状況がない
newしてインスタンス作っても
そのインスタンスのプロパティを変更する術がない
immutableだから

896:デフォルトの名無しさん
17/11/25 23:29:51.79 pvPgs+4u0.net
>>881すまん安価ミスってたわ
>>869のレスがダメな理由な。

897:デフォルトの名無しさん
17/11/25 23:30:52.77 pvPgs+4u0.net
872 デフォルトの名無しさん (ワッチョイ 5fb3-CDhT)[sage] 2017/11/25(土) 23:01:32.05 ID:+Jz8ZPqE0
>>869
そう言うつまんない返し要らんし



898:デフォルトの名無しさん
17/11/25 23:58:41.99 A9/gx1Z/0.net
流れをぶった切って申しわけないが
container.Resolve<IEventAggregator>().PublishOnUIThread(new MaxProgressMessage(FileList.Count));
が長すぎて幻滅してるんだ、短かくする方法ない?

899:デフォルトの名無しさん
17/11/26 00:01:18.75 esrARD9/0.net
無いだろ。
分解するくらいしか

900:デフォルトの名無しさん
17/11/26 00:09:31.88 8WHK08hV0.net
長くて見づらいというなら改行したらだめかね

901:デフォルトの名無しさん
17/11/26 00:31:14.56 2r+x+WFfM.net
手段を問わないならジェネリックメソッドでも書けば短くなるだろう

902:デフォルトの名無しさん
17/11/26 00:37:23.82 E6i9SBGc0.net
その呪文は必ず出てくるやつだから、ベースクラス作って埋め立てて見えなくするのも手だ

903:デフォルトの名無しさん
17/11/26 06:55:45.07 sYAKtbjg0.net
>>888
何を召喚する呪文?

904:デフォルトの名無しさん
17/11/26 07:32:40.07 pGcZHtwF0.net
>>882-883
>>869のどこが
> プログラミング自体の初心者には「なんでそんなことをするのか」と感じる部分
なのか詳しく書いてみ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch