ふらっと 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(月) 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
件数少ない時は線形の方が速いよ
740デフォルトの名無しさん (ワッチョイ 27f7-JCOS)
垢版 |
2017/11/23(木) 16:29:13.27ID:1glLBmTM0
1 のとき 0.7
3 のとき 0.9
8 のとき 0.6
9 のとき 0.5

こういうデータがある時、右の要素が最大である左の要素の番号を返すプログラムを作りたいのですが
簡単な方法はないでしょうか?
2017/11/23(木) 16:36:15.34ID:6Js7jM8k0
List〈class〉でやってみるといいのでは?
class Data

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

みたいに作って、ListをループさせてData.resultを確認して一番大きい数字のid(クラス)を返すみたいな
ICollectionに一番大きい数字のindex返す関数とかあった気がするからもっと楽に作れるかもしれないけど
2017/11/23(木) 16:41:24.65ID:E5KFBI6l0
楽さなら右要素でソートして末尾の左要素返せば
普通に探索しても大した手間の差ではない気もするが
2017/11/23(木) 16:44:45.88ID:DqyU4UwDM
>>740
DBに突っ込んでから
select key from data
where value = (select max(value) from data)
でいいよ
744デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/23(木) 16:58:00.67ID:pEApwQyq6
@“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];
745デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/23(木) 17:01:37.44ID:pEApwQyq6
変換忘れた(;ω;)
2017/11/23(木) 17:03:20.80ID:6Js7jM8k0
>>744
この仕様はまったく考えてなかった
仕様聞くのって大変だな・・・
2017/11/23(木) 17:17:36.99ID:cW6v2Sii0
>>740
https://ideone.com/W1bKs5
2017/11/23(木) 17:24:58.41ID:cW6v2Sii0
よく考えたらC#だった、寝惚けてるわ
2017/11/23(木) 17:44:11.84ID:cW6v2Sii0
どっちで書いても同じようなもんだった
https://ideone.com/fD2j3A
750デフォルトの名無しさん (ワッチョイ 27f7-JCOS)
垢版 |
2017/11/23(木) 18:22:14.69ID:1glLBmTM0
みなさん有難う御座います。
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じゃダメなんでしょうか?
751デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/23(木) 18:24:15.88ID:pEApwQyq6
>>750
いいよ
752デフォルトの名無しさん (ワッチョイ 27f7-JCOS)
垢版 |
2017/11/23(木) 18:34:21.92ID:1glLBmTM0
>>751
現在のコンテキストに 'pair' という名前は存在しません。
というエラーが出て出来ないです…
2017/11/23(木) 18:37:13.32ID:Go3NcBxu0
pair宣言してないからだろうに、
dict.OrderBy(pair => pair.key).Last.Keyじゃないかな。
754デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/23(木) 18:37:55.69ID:pEApwQyq6
https://ideone.com/XlOtVQ
2017/11/23(木) 18:38:17.36ID:Go3NcBxu0
もちろん
pair => pair.Value
だったな。
2017/11/23(木) 18:39:03.67ID:4OkBFxYdM
>>752
どこか適当なところで勉強してから来なさい
757デフォルトの名無しさん (ワッチョイ 27f7-JCOS)
垢版 |
2017/11/23(木) 18:54:09.98ID:1glLBmTM0
>>753
>>754
>>755
ありがとうございます!出来ました
ただ同じキーがあると動かなくなるので別の方法を考えなければいけない様です…
2017/11/23(木) 18:59:24.88ID:kBi82nCb0
>>757
同じキーが存在するのにDictionary使うのが間違い
他の人が例として使っているDataクラスで事足りると思うんだが
2017/11/23(木) 18:59:33.92ID:yDdQ43O00
そりゃキーが重複したらエラーになるよ
辞書ってそういうもんでしょ

あと重複があるんなら>>749のを使えば?
2017/11/23(木) 19:07:10.50ID:eO5S+uX/0
「valueが最大値の時のキーの値」だけが必要なんじゃなかろうか?
761デフォルトの名無しさん (ワッチョイ 27f7-JCOS)
垢版 |
2017/11/23(木) 19:14:33.13ID:1glLBmTM0
>>749
で教えて頂いたのでやってみます!
762デフォルトの名無しさん (ワッチョイ 27f7-JCOS)
垢版 |
2017/11/23(木) 19:16:31.56ID:1glLBmTM0
配列の大きさが不明なのでaddが使える方法でやりたかったもので…
763デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/23(木) 19:18:05.05ID:pEApwQyq6
var list = List<Data>()
これを使えばいい
Addもできる
2017/11/23(木) 20:12:06.29ID:eO5S+uX/0
>>762
単に最大時のkey, valueだけが欲しいのならListもaddも不要だけどね。。
2017/11/23(木) 20:41:13.63ID:FrNu/68p0
Name : aaa
Info : vvv
Message : sss
テキストファイルに↑のような空白文字で:を揃えた情報を、File.ReadLinesで取り出し、
.ToArray()で配列にしたあとTextBoxのLinesに設定したところ、コロンの位置がずれてしまいます。
foreachでTextプロパティに追加していく方法でもずれるのですが、Consoleだと綺麗に出力されます。
なにか対策等ありますか?
2017/11/23(木) 20:43:45.19ID:kBi82nCb0
>>765
コンソールと同じように、テキストボックスのフォントをMSゴシックみたいな等幅フォントにする
2017/11/23(木) 21:07:02.11ID:FrNu/68p0
>>766
MSゴシックで試したところ解決しました。
ありがとうございました。
等幅フォントの使い道がこんなところにあったとは、でした。
768デフォルトの名無しさん (ワッチョイ 0775-uycp)
垢版 |
2017/11/23(木) 21:25:10.61ID:vcWp0UMr0
>>764
思わせぶりなことだけ言うだけ。
769デフォルトの名無しさん (ワッチョイ 0775-uycp)
垢版 |
2017/11/23(木) 21:29:38.22ID:vcWp0UMr0
>>765
タブ文字じゃだめなん?
770デフォルトの名無しさん (ワッチョイ 27f7-JCOS)
垢版 |
2017/11/23(木) 21:48:04.04ID:1glLBmTM0
>>749とList使った方法で出来ました!
有難う御座いました。
ソート時の=>の書き方が色々あっていまいち理解出来てないですが…
2017/11/23(木) 21:59:19.61ID:6Js7jM8k0
ラムダ式とLinqは後々覚えていけばいいんじゃないの
とりあえずこういう書き方もできるって事で
2017/11/23(木) 22:15:45.74ID:tJBaWbvoa
ラムダ式はデリゲートと同時に覚えようよw
たいして覚えることないんだし、今時C#プログラマの最小要件でしょ
2017/11/23(木) 22:21:30.93ID:Bg3Rqdl/0
HttpClient client=new HttpClient();
FormUrlEncodedContent contents = new FormUrlEncodedContent(new
Dictionary<string, string>{
{"あああ","1"},
{"あああ","2"},
{"いいい","0"},
});
respnse = await client.PostAsync(url, contents);

このままだと同じキーを含んでいるのでエラーが出ます。
サイトの仕様上、このままデータを送らないといけないのですが、どう変更すれば
きるようになりますか?
2017/11/23(木) 22:24:57.40ID:eO5S+uX/0
>>770
1 のとき 0.7
3 のとき 0.9
4 のとき 0.9
5 のとき 0.9

こんなデータのとき、3,4,5のどれでもええの?
2017/11/23(木) 22:31:44.60ID:yDdQ43O00
>>773
KeyValuePairの配列でやってみたら?試してないから動くかわからんけども
2017/11/23(木) 22:53:52.49ID:FrNu/68p0
>>769
ありがとうございます。タブ文字でもできることを確認しましたが、
今回はString.Format("{0, 4} : {1}", num,message)のような文字列も綺麗に出力したいので
等幅フォントを使用したいと思います。
777デフォルトの名無しさん (ワッチョイ 0775-uycp)
垢版 |
2017/11/23(木) 23:31:46.08ID:vcWp0UMr0
>>773
new List<KeyValuePair<string, string>>{
{"あああ","1"},
{"あああ","2"},
{"いいい","0"},
}
778デフォルトの名無しさん (ワッチョイ 27f7-JCOS)
垢版 |
2017/11/23(木) 23:37:02.83ID:1glLBmTM0
>>774
左のデータは重複することはあっても右のデータは0.93234…みたいな感じで重複しない感じです!
2017/11/23(木) 23:56:53.12ID:6gvgNZ3b0
乱数をキーにして衝突して死んだやつを俺は知ってる
2017/11/24(金) 10:33:29.48ID:mPUfH2u/0
>>774のようなコーナーケースの指摘に対して、「そんなケースは稀だから考えなくてよい」とするか
「どっちでもいいならどっちかに決めよう」とするか、開発センスが現れるな。
2017/11/24(金) 11:35:20.40ID:GsVE4oKd0
今回は稀でもないけどね
2017/11/24(金) 11:52:48.02ID:EfmvZejc0
最大値の行を取り出すだけにコレクションは不要だけどね
783デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/24(金) 11:58:30.46ID:PklTWoNU6
>>782
だから口だけカマチョはやめろ
2017/11/24(金) 12:01:51.76ID:EfmvZejc0
>>783
配列の最大値を所得するロジックを知らんと?
配列ソートの前に習うだろ。
785デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/24(金) 12:02:53.10ID:PklTWoNU6
動的リストだからAddとか必要って言ってんだろ
2017/11/24(金) 12:09:15.88ID:mqWCdSHW0
>>782
配列リストの最大値出せるけど今回はindexがバラバラになってるじゃん
2017/11/24(金) 12:14:42.91ID:EfmvZejc0
>>785
動的リストとは?
788デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/24(金) 12:15:06.09ID:J2WegmLO6
>>787
Add使いたい言っとるだろ
2017/11/24(金) 12:22:59.05ID:mqWCdSHW0
一応配列もコピーとサイズ増やして擬似的に追加は出来る
昔の俺が調べて書いてたけどコレクション使えと怒られた
2017/11/24(金) 12:26:56.52ID:EfmvZejc0
>>788
それはお前らが誘導したからw
元データの構造がが何なのかワカランとどれが最適かはわからんな
791デフォルトの名無しさん (ガックシ 068f-forR)
垢版 |
2017/11/24(金) 12:29:02.86ID:J2WegmLO6
>>790
>>762
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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