ふらっと 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
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);
2017/11/20(月) 23:14:47.31ID:gpmTl3Lx0
>>684
>>685
やっぱりデータ設計が悪いと言われますか
今のうちに変えてしまうべきなのかな

>>686
Dictionary使ったことなかったので参考になります。
SQLアンチパターンすごい為になりそうなので読んでみます。

>>687
>>690
まだ完全に理解できていないけど参考になります。

レス参考に対応してみます。
みなさんアドバイスありがとうございました。
692デフォルトの名無しさん (ガックシ 0666-jqfw)
垢版 |
2017/11/21(火) 11:17:50.06ID:qjtNZd9v6
new Dictionary<string, int>(){
{“たろう”, 68}
}

型引数を推論させて
new Dictionary(){
{“たろう”, 68}
}
みたいにできないの?出来ればいいのに。
2017/11/21(火) 12:30:59.27ID:WV/YnhFsM
C#は厳格な型言語です
2017/11/21(火) 12:32:30.39ID:JYBkdGYBM
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()
695デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/21(火) 19:23:11.85ID:K26qvPIE0
awaitってなんの意味があるの?
待ってたら非同期の意味なくね?
2017/11/21(火) 19:28:24.05ID:TIZ+WImHM
>>695
って思うじゃん?
2017/11/21(火) 19:32:39.47ID:oC2HbrNwa
>>695
処理が終わるまで待ってるように見えるけど実際は別にスレッドを使って
違うことを同時にやってるだけ
698デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/21(火) 19:36:01.18ID:K26qvPIE0
>>697

メインのスレッドはタスクの実行完了を待機状態なんだろ?
待機してたら何もできないから意味なくね?
2017/11/21(火) 19:38:32.15ID:zF41/4yq0
>>698
awaitの後の処理をタスクにして、awaitで待ってるタスクの後続タスクにしてる。
メインのスレッドは待機してない。
2017/11/21(火) 19:39:21.82ID:tfBo/9nR0
>>698
簡単なコードで試せるんだから2chに書き込む時間使って動作確認すれば?
2017/11/21(火) 19:40:18.25ID:KARCkhIlr
メインスレッドはいわゆるwaitをしている訳ではない
702デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/21(火) 19:41:33.68ID:K26qvPIE0
>>699
なるほど!
2017/11/21(火) 21:20:36.17ID:8K/pnPq30
最近のオシロスコープはWebサーバー機能を持っていて、Webブラウザでアクセスすると
計測画面を表示させることができますが、C#で同じような機能を簡単に実装することはできるでしょうか?
リモートデスクトップではなく、WinFormsのアプリ画面だけをネット越しに共有する感じです。
2017/11/21(火) 21:27:50.82ID:UMxxTtnJ0
>>703
中にwebサーバー入ってんじゃね?
c#でって言われてもハードの構成が何を想定してるのかわかんなくね?
705デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/21(火) 21:31:11.05ID:K26qvPIE0
>>703
WinFormsの画面を配信したいってこと?
2017/11/21(火) 21:34:21.85ID:UMxxTtnJ0
exeコピーすればいいじゃんね
2017/11/21(火) 21:36:26.83ID:UMxxTtnJ0
サーバーのHDDのインストーラをぶっ叩けば.netframeworkも入るぞ
2017/11/21(火) 21:50:25.88ID:z0YVJa690
精度や遅延はどの程度なら許容されるんだろ

オシロスコープに出来るんならC#でも出来るとは思うけど
どんなデータの送り方してるのかまでは分からない
2017/11/21(火) 21:52:46.40ID:HJsjXF5N0
>精度や遅延はどの程度なら許容されるんだろ
要件による
遅延に関しては、ユーザ視点で表面化し難い様に誤魔化す方法が幾らかはあるし
2017/11/21(火) 21:59:41.58ID:8K/pnPq30
>>705
その通りです。

作ろうとしているのはオシロスコープとは全く別で、計測器の取得データを延々と
表示し続けるようなものです。
現状はファイルベースで共有しているのですが、例として出したオシロスコープのように
ある程度リアルタイムの値も見たいと社内で要望があったので。
なので、遅延は数秒レベルでも全く問題無いです。
711デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/21(火) 22:03:47.53ID:K26qvPIE0
>>710
websocketサーバー立ててjsonで生のデータを定期的に送信するようにする。
javascritで受信してcanvasとかにそれを表示するウェブアプリをウェブサーバー立てて配信する。
2017/11/21(火) 22:04:13.13ID:oC2HbrNwa
>>710
webサーバでいいだろう
2017/11/21(火) 22:11:08.94ID:UMxxTtnJ0
この場合ってHDDからデータ取ってくるだけじゃね?
2017/11/21(火) 22:11:40.48ID:fFSiopFkM
ElasticsearchとKibanaでも使えば?
715デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/21(火) 22:23:31.72ID:K26qvPIE0
>>713
javascriptで定期的にデータのファイルをダウンロードして表示するようにするだけか
2017/11/21(火) 22:27:39.04ID:z0YVJa690
後は計測間隔がmsスケールとかじゃなけりゃ
そんなに難しくは無いと思う
2017/11/21(火) 22:32:00.42ID:tfBo/9nR0
もうC#関係なくなってきてるな
2017/11/21(火) 23:02:59.07ID:/0BXFww1a
昔USBや232C接続の計測器のデータ拾う仕事してたけど
ネットワーク越しはやったことないな

サンプルレートはmsオーダどころか10ksps以上でも問題ないでしょう
2017/11/21(火) 23:24:00.28ID:AM6ulXU90
9600BPS同期で通信出来れば誉めてあげるよ
720デフォルトの名無しさん (ワッチョイ 6e96-JNqm)
垢版 |
2017/11/21(火) 23:29:41.27ID:e9zQnDKx0
windows visual studioでのフォームアプリを使ってのC#の質問です

例えばTextBoxAとTextBoxBのテキストボックスを
フォーム上に配置して
TextBoxAに「あ」と入力してEnterを入力したらTextBoxBに「い」と表示させるようにしたいのですが
どうすればいいでしょうか?
2017/11/21(火) 23:31:16.83ID:TR9cbyXd0
>>711で充分だろう
難しいとこ一つもないよ
722デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/21(火) 23:38:07.40ID:K26qvPIE0
>>720
テキストボックス1のイベントハンドラでテキストボックス1のTextプロパティを取得して、それが「あ」ならテキストボックス2のTextプロパティに「い」を代入する。
2017/11/22(水) 00:06:37.07ID:jXiKT4v3a
>>720
スレの存在意義を否定するようだけど
その程度でいちいち質問してたら先が思いやられるよw

public Form1()
{
  InitializeComponent();
  textBoxA.KeyDown += (s, e) =>
  {
    if(e.KeyCode == Keys.Enter && textBoxA.Text == "あ") textBoxB.Text = "い";
  };
}

自分でやっといて何だけど、本当はいきがってラムダ式なんか使わずに
イベントハンドラを書いた方が保守性の面では好ましいと思う
2017/11/22(水) 00:32:48.43ID:pUgwVgr10
いきがってラムダ式とか使ってるけど直前のレスがほぼ完全解答という
2017/11/22(水) 00:38:13.46ID:KA0qTObfa
俺だったらTrim()付けるね
2017/11/22(水) 00:47:40.32ID:QmSU3CcY0
キメェ
ctrl+vでどうなるんだ?
とか最終的にはkillfocusちゃうの?
とか考えると普段ぜってー組まない
コード見ると黒板キィィィィィって
やられてる気分になる
2017/11/22(水) 00:54:55.44ID:d5y4PxOU0
煽るだけのバカ
728デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/22(水) 00:55:46.04ID:Jt3bKlvZ0
そいついつもキレてんな。
729デフォルトの名無しさん (ワッチョイ 1d03-FHhe)
垢版 |
2017/11/22(水) 00:56:49.24ID:NUn4dBze0
キレッキレやな
730デフォルトの名無しさん (ワッチョイ 918f-wWUj)
垢版 |
2017/11/22(水) 00:59:12.72ID:8eOpOd0J0
>>726
エンターで動作なんだからCtrlVがどうこうとかイミフだしフォーカス外したいなら外せばそれで済む話じゃねえか
2017/11/22(水) 01:38:12.73ID:QmSU3CcY0
>>730
テキストボックスでkillfocus以外での処理は鬼門
そういう暗示にかかっているのです
でもctrl+Aは気軽に入れるけどね
732デフォルトの名無しさん (ワッチョイ 6ee8-LGLT)
垢版 |
2017/11/22(水) 22:27:47.55ID:2ViDa+Rm0
データバインド教えて

this.dataGridView_List.DataSource = list;
これをロード時に書けば
listにAddしてけばDataGridに行追加されてく?
2017/11/22(水) 23:26:53.46ID:OlRubHVI0
listがINotifyCollectionChangeを実装したオブザーバブルなリストならね。
ただのリストじゃ反映されないと思う
734デフォルトの名無しさん (ワッチョイ 6ee8-LGLT)
垢版 |
2017/11/22(水) 23:30:35.23ID:2ViDa+Rm0
>>733
これWPFだけ?
735デフォルトの名無しさん (ワッチョイ 4175-wWUj)
垢版 |
2017/11/22(水) 23:39:53.01ID:Jt3bKlvZ0
>>734
Formアプリでもあるんじゃない?
http://www.digi-con.co.jp/tech/node/66
2017/11/23(木) 00:45:13.68ID:axjWBGmc0
素朴な疑問なんですけど
ListコレクションからLINQでデータ検索したい時とか、データがソートされてる方がパフォーマンスが良いとかあるんでしょうか
2017/11/23(木) 00:48:24.00ID:3UvXGadQ0
>>736
ソートされてるならBinarySearchを使えば速い
LINQ使ったら線形検索になるのでソートは意味ない
2017/11/23(木) 09:20:42.83ID:axjWBGmc0
>>737
BinarySearchが使えるのは知りませんでした
ありがとうございます
2017/11/23(木) 10:19:01.69ID:ocuKvabTr
件数少ない時は線形の方が速いよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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