X



ふらっと C#,C♯,C#(初心者用) Part135
レス数が1000を超えています。これ以上書き込みはできません。
0662デフォルトの名無しさん (ワッチョイ 2175-xOks)
垢版 |
2018/02/22(木) 19:50:23.58ID:c2upgmLY0
new{"hoge"}とは
0664デフォルトの名無しさん (ワッチョイ 2175-xOks)
垢版 |
2018/02/22(木) 20:44:44.31ID:c2upgmLY0
for, foreachも見にくい
0667デフォルトの名無しさん (ワッチョイ 2175-xOks)
垢版 |
2018/02/22(木) 21:23:11.48ID:c2upgmLY0
個人的にはラムダは抵抗なく読める
Pythonの内包表記は苦手
0671デフォルトの名無しさん (ワッチョイ 2175-xOks)
垢版 |
2018/02/23(金) 08:15:24.95ID:n9Q43L/40
リンク否定派==ラムダ式嫌悪厨
0672デフォルトの名無しさん (ワッチョイ fc83-MTlB)
垢版 |
2018/02/23(金) 11:21:56.45ID:xR1rHjlT0
ラムダは過去に一度滅んだ技術だからな。普及するわけがない。
0675デフォルトの名無しさん (ワッチョイ fd9e-POFq)
垢版 |
2018/02/23(金) 11:56:12.27ID:dqKzXa4r0
EFでList<string>のデータを保存するにはどうしたらいいの?
0676デフォルトの名無しさん (ワッチョイ 709d-POFq)
垢版 |
2018/02/23(金) 13:43:16.80ID:HedUeMcC0
その前にEFってなにか説明してくれるか?
0678デフォルトの名無しさん (ワッチョイ fc83-MTlB)
垢版 |
2018/02/23(金) 14:31:57.61ID:xR1rHjlT0
>>677 ←今日最高の馬鹿。
0679デフォルトの名無しさん (ワッチョイ 2175-xOks)
垢版 |
2018/02/23(金) 15:28:51.28ID:n9Q43L/40
>>676
おまえ、初心者丸出しに気づいてないの恥ずかしいな
0681デフォルトの名無しさん (ワッチョイ 2175-xOks)
垢版 |
2018/02/23(金) 15:34:34.35ID:n9Q43L/40
ただラムダ式が苦手なだけな奴の見苦しい言い訳に構うなよ w
0683デフォルトの名無しさん (ワッチョイ fc83-MTlB)
垢版 |
2018/02/23(金) 16:10:34.36ID:xR1rHjlT0
>>680-682
スレチだからこっちでやってくれませんか。
過疎ってるからって初心者スレで暴れないでくださいよ、低脳馬鹿ラムダ厨さん。

λ ラムダ式は神 ラムダ式を崇めよ λ [無断転載禁止]©2ch.net
https://mevius.2ch.net/test/read.cgi/tech/1494867168/
0684デフォルトの名無しさん (ワッチョイ fc83-MTlB)
垢版 |
2018/02/23(金) 16:14:19.23ID:xR1rHjlT0
古典教師とラムダ厨と被るわ。

役に立たない古い知識で初心者スレでマウンティングとか。→ ID:n9Q43L/40 www
0685デフォルトの名無しさん (ワッチョイ 2175-42by)
垢版 |
2018/02/23(金) 16:14:40.70ID:n9Q43L/40
C#の例外処理スレを立てたらここはスレチになるのか w
ほんとラムダ式嫌悪厨は哀れだな w
0687デフォルトの名無しさん (ワッチョイ fc83-MTlB)
垢版 |
2018/02/23(金) 16:23:25.22ID:xR1rHjlT0
LINQスレあったよな。なぜそっちでやらないの?
あっ落ちたのかw 過疎りすぎて誰も次は立てる気がないようだw

だって10年でたった1スレすら消費できなかったからなwww 誰も興味ないかよほど嫌われてんだなw
0690デフォルトの名無しさん (ワッチョイ fc83-MTlB)
垢版 |
2018/02/23(金) 16:27:53.73ID:xR1rHjlT0
ID:n9Q43L/40 ←惨め杉www 初心者スレでマウンティングするしかないww

> リンク否定派==ラムダ式嫌悪厨
> ただラムダ式が苦手なだけな奴の見苦しい言い訳に構うなよ w
> おまえ、初心者丸出しに気づいてないの恥ずかしいな
> ほんとラムダ式嫌悪厨は哀れだな w

ほんとこいつ初心者スレで煽りとマウンティングしかしてねぇw
0691デフォルトの名無しさん (ワッチョイ 2175-42by)
垢版 |
2018/02/23(金) 16:27:53.99ID:n9Q43L/40
なにこいつ
0692デフォルトの名無しさん (ワッチョイ 709d-POFq)
垢版 |
2018/02/23(金) 16:42:11.85ID:HedUeMcC0
byte[]buf = 1,2,3,4,5、ETX,7,8,9
AX=1,2,3,4,5 
BX=ETX,7,8,9
BufからAX,BXをわけて取り出ししたい。(ETXはAX側でもBX側でも構わない)
AX=buf..TakeWhile(x=>x!=ETX);
とすれば取り込めるが、BXはどうしたらいいのだろう?
0693デフォルトの名無しさん (ワッチョイ 2175-42by)
垢版 |
2018/02/23(金) 16:50:56.55ID:n9Q43L/40
SkipWhile
0694デフォルトの名無しさん (ワッチョイ 709d-POFq)
垢版 |
2018/02/23(金) 16:56:26.65ID:HedUeMcC0
SkiPWhileは違う。ETXで分離するのが目的だからだ。
0695デフォルトの名無しさん (ワッチョイ 709d-POFq)
垢版 |
2018/02/23(金) 16:56:39.74ID:HedUeMcC0
>おまえ、初心者丸出しに気づいてないの恥ずかしいな
初心者丸出しが恥ずかしいことか? 陳湖丸出しとは分けが違うがお前はそういう趣味でもあるのか?

>C# にラムダ式はあるのにどうしてスレ違いなんでしょうか?
主観の問題だ。しかし感受性の問題でもある。ひらたく言うとどこにも頭の悪いのはいる。

>古い?どうして古いのでしょうか?
主観の問題だ。少しズレた主観もある。

>C# に LINQ はがっちり含まれているのに、どうしてスレ違いなんでしょうか?
しつこい質問者だからあえてシツコク答えるが主観の問題だ。しかしシツコク追い求めるのはプログラマーの適正でもある。
0696デフォルトの名無しさん (ワッチョイ 2175-42by)
垢版 |
2018/02/23(金) 16:59:23.35ID:n9Q43L/40
なにこいつ
自演かよ w
0698デフォルトの名無しさん (ワッチョイ 709d-POFq)
垢版 |
2018/02/23(金) 17:07:21.06ID:HedUeMcC0
>>696 
オブラートで包むと意味が解らないか? 解るようにハッキリ言うと荒れるしな。
困ったものだ。
SkiPWhileじゃだめってのはわかるか?
0701デフォルトの名無しさん (ワッチョイ c4e3-/K1Y)
垢版 |
2018/02/23(金) 17:14:54.58ID:dt6qd38x0
だって10年で1スレ消費できないってかなりのもんだよ
まあ、友の会スレに書き込んで無かった君が一番わかってることだと思うし言っても無意味だと思うけどw
0704デフォルトの名無しさん (ワッチョイ 2175-42by)
垢版 |
2018/02/23(金) 17:17:31.24ID:n9Q43L/40
試しにC#非同期スレ立ててみようぜ w
どうせ伸びないから w
みんな使ってないもんな w
0705デフォルトの名無しさん (ワッチョイ 0a80-IMbs)
垢版 |
2018/02/23(金) 17:18:24.48ID:uDoJo6b+0
# 先頭文字で、配列の要素をグルーピング
animals = ["cat", "bat", "bear", "camel", "alpaca"]

p animals.group_by {|item| item[0].chr }
{"a"=>["alpaca"], "b"=>["bat", "bear"], "c"=>["cat", "camel"]}


Ruby では、group_by で、配列の要素をグルーピングできる。
ブロックの戻り値が同じ要素で、グルーピングする

他にも、partition で、要素を2つの配列に分けられる
0707デフォルトの名無しさん (ワッチョイ 2175-42by)
垢版 |
2018/02/23(金) 17:20:15.65ID:n9Q43L/40
C#でもできる
partionはないが多分GroupByで代用できる
0708デフォルトの名無しさん (ワッチョイ 709d-POFq)
垢版 |
2018/02/23(金) 17:30:54.68ID:HedUeMcC0
じゃあGroupBy使って
byte[]buf = 1,2,3,4,5、ETX,7,8,9
をETXの前後で分解してみて。
0709デフォルトの名無しさん (ワッチョイ 2175-42by)
垢版 |
2018/02/23(金) 17:31:48.42ID:n9Q43L/40
使用法が明らかに間違ってる
0710デフォルトの名無しさん (ワッチョイ 709d-POFq)
垢版 |
2018/02/23(金) 17:37:08.15ID:HedUeMcC0
でも分解する場合には他に適当な方法がないのでは? GroupByとIndexを併用すれば
なんとかならないか?
0711デフォルトの名無しさん (ワッチョイ 2175-42by)
垢版 |
2018/02/23(金) 17:38:45.30ID:n9Q43L/40
明らかにそんなやり方よりTakeWhile, SkipWhileを使うやり方のほうが真っ当
0712デフォルトの名無しさん (ワッチョイ 709d-POFq)
垢版 |
2018/02/23(金) 17:48:52.71ID:HedUeMcC0
>明らかにそんなやり方よりTakeWhile, SkipWhileを使うやり方のほうが真っ当

不味いんじゃないだろうか?
要するにループを頭から2回まわすことになるだろ。
Ax=  buf.TakeWhile(〜)
Bx= buf.SkipWHile(~)

それならForeachの方がいいとおもう。
AX= ETXを見つけるまでこっちに入れる。
BX=ETXを見つけた以後はこっちに入れる。
0713デフォルトの名無しさん (ワッチョイ 2175-42by)
垢版 |
2018/02/23(金) 17:50:19.68ID:n9Q43L/40
効率が問題になるほど大規模なリストなら原始的な書き方をする。
そうでないならLinqでいい
0719デフォルトの名無しさん (ワッチョイ 709d-POFq)
垢版 |
2018/02/23(金) 18:46:00.97ID:HedUeMcC0
>>718
いいね!いいね! そのヒント。 君が一番頭いい。
0722デフォルトの名無しさん (ワッチョイ 2175-xOks)
垢版 |
2018/02/23(金) 19:01:32.01ID:n9Q43L/40
Spanとかもあるよな
使えるのか知らないけど
0723705 (ワッチョイ 0a80-IMbs)
垢版 |
2018/02/23(金) 19:03:45.51ID:uDoJo6b+0
scores = %w[1 2 3 4 5 ETX 7 8 9]

numbers = scores.each_with_object({}) do | num, h |
# 配列の初期化
h[:before] = [] unless h[:before]
h[:after] = [] unless h[:after]

if h[:ETX]
h[:after].push num
else
if num == "ETX"
h[:ETX] = true
else
h[:before].push num
end
end
end

p numbers
{:before=>["1", "2", "3", "4", "5"], :after=>["7", "8", "9"], :ETX=>true}

Ruby の、each_with_index メソッドは、引数に蓄積器を指定して、繰り返し処理する。
空のハッシュ { }に、結果を蓄積していく。
"ETX"があったかどうかの状態を記憶して、処理を分岐する
0724デフォルトの名無しさん (ワッチョイ 2175-xOks)
垢版 |
2018/02/23(金) 19:05:18.26ID:n9Q43L/40
よく分からんけどaggregateでできそう
0725705 (ワッチョイ 0a80-IMbs)
垢版 |
2018/02/23(金) 19:06:59.32ID:uDoJo6b+0
>>723
修正

>Ruby の、each_with_index メソッドは、引数に蓄積器を指定して、繰り返し処理する

each_with_index ではなく、each_with_object
0727デフォルトの名無しさん (ワッチョイ 709d-POFq)
垢版 |
2018/02/23(金) 19:41:12.35ID:HedUeMcC0
flag = x < etx
これってETX以前はTrueになる? たぶんそういう意図だろうけど
xはindexだろけど、etxと比較しても駄目って思うが、、、
0732デフォルトの名無しさん (ワッチョイ 2175-xOks)
垢版 |
2018/02/23(金) 20:12:36.02ID:n9Q43L/40
レス乞食かよ
0734デフォルトの名無しさん (ワンミングク MM0e-2hJC)
垢版 |
2018/02/23(金) 21:00:10.84ID:RXlM4aNHM
イテレーター書くだけだから逆に移植しやすくなる
抽象化レイヤーがないと全てのループ処理について移植できるかどうか
移植するにはどうすればいいか
例外ケースはないかなど悩まなくてはならない
0737デフォルトの名無しさん (ワッチョイ 8b8a-YGTY)
垢版 |
2018/02/23(金) 21:47:11.90ID:HTtnUDjj0
日曜大工プログラマーなんだけど、実際Linq使わないってなるとプロの方はどういうことを基本としてるの?
プロの方々なら当然Linqも理解して手段の一つとして持ってると思うけど
あえてそれは使わないってなると、同じこと実現するのに何が基本となるのかまじめに教えてください
0739デフォルトの名無しさん (アウアウカー Sa0a-V3L7)
垢版 |
2018/02/23(金) 22:02:51.89ID:I1cwUeCia
>>737
察してw
0741デフォルトの名無しさん (ワッチョイ e206-MTlB)
垢版 |
2018/02/23(金) 22:51:27.85ID:xGnoN5r+0
LINQなんて銘打たれてても只のパターンだからねぇ
デリゲートがインライン展開されるならまだしも
switchまみれのIEnumerator<T>とかは草生える

どうせコントロール追加もAddよりAddRangeの方が良いし
概ねArrayやList<T>のメソッドで済む事が多いな
あと拡張メソッド多すぎでIntelliSenseの邪魔、フィルタが面倒
0742デフォルトの名無しさん (ワッチョイ 2175-42by)
垢版 |
2018/02/23(金) 22:57:32.27ID:n9Q43L/40
効率はすでに言った通りだからともかくとして、このスレのlinqの質問のほとんどはarrayやlistのメソッドでは事足りないだろう
0745デフォルトの名無しさん (ワッチョイ 0ac9-x4Or)
垢版 |
2018/02/24(土) 09:13:57.78ID:Pu6BYc+K0
LINQとか表記は割りとどうでも良いからユニットテストがきちんと書けるソースコードにして欲しいと、200行超えの他人のクソメソッドをメンテしてて思った
リファクタリング楽しいです(^q^)
0746デフォルトの名無しさん (ワッチョイ 2175-xOks)
垢版 |
2018/02/24(土) 09:20:58.48ID:QPTXris90
スレチ
0747デフォルトの名無しさん (ワッチョイ 709d-saxG)
垢版 |
2018/02/24(土) 19:03:52.84ID:53z7t7hD0
Span実験してみたい。しかしSystem.Memoryインストールに失敗する。何でだろう?
0749デフォルトの名無しさん (ワッチョイ 8b8a-YGTY)
垢版 |
2018/02/24(土) 20:04:36.63ID:+6d6qq1k0
素人ながらに四苦八苦しながら小規模の業務アプリを作っているのですが
Program.csに、アプリケーションに保持させておきたい情報をまとめた自作クラスを
staticで保持させておいて、全フォーム通してそれを読み出せるのかと考えたのですが
愚行でしょうか?
0751デフォルトの名無しさん (アウアウエー Sa6a-Xk4Z)
垢版 |
2018/02/24(土) 20:14:50.00ID:S6y2USoia
>>749
本当にその必要があるならその方法でグローバルな情報を持ってOKだと思う。
前に同じ質問で「そんなものコンストラクタの引数で渡せ」と書いてた人がいたが、
むしろそっちの方が不適切。

でも、本当にそれが必要なのかは再考した方がいいかもね。
グローバルなデータなんて普通はそんなにいらないよ

>>750
だからそれを聞いてるんでしょw
っていうかヘッダファイルって意味不明だよww
0754デフォルトの名無しさん (アウアウカー Sa0a-V3L7)
垢版 |
2018/02/24(土) 21:28:23.83ID:kaoxpwmua
質問よろしいでしょうか
ある複数のパラメータを持ったクラスを他のクラスのメンバに代入すると、そのパラメータが変更されたら代入先のメンバも書き変わってしまいますよね?
一度代入した時点から勝手に書き変わられたくない場合、パラメータを持ったクラスがクローンを返すような実装をするのがいいんでしょうか。他に定石等あれば教えて頂きたいです
0755デフォルトの名無しさん (ワッチョイ 8b8a-YGTY)
垢版 |
2018/02/24(土) 21:48:34.45ID:+6d6qq1k0
みなさまご教授ありがとうございます

グローバルを持つべきか再度よく検討の上やってみたいと思います

>>752
自作クラスだと一手間いるのと、修正しやすさでProgram.csに置きたいなと
0756デフォルトの名無しさん (ワッチョイ 2175-42by)
垢版 |
2018/02/24(土) 21:53:04.14ID:QPTXris90
ApplicationSettingsは自作クラスじゃなくてVSのきのうだよ
0757デフォルトの名無しさん (ワッチョイ 8b8a-YGTY)
垢版 |
2018/02/24(土) 21:54:11.29ID:+6d6qq1k0
>>753
端末のIPやらMacアドレスのほか、データベースへの接続文字列を実行中に随時切り替えて接続させてるのですが
そのためのList<string>とかです
あとはNotifyIconをおいて、アプリの動作状況によって各Form上からも通知アイコンの画像を変更させてます
0762デフォルトの名無しさん (ワッチョイ c4e3-o9L9)
垢版 |
2018/02/25(日) 07:44:13.77ID:r9nYZ4dr0
>>754
メンバに参照を保持るのは禁じ手

そのインスタンスが死んだらハングアップすんじゃん
必要であるたびにメソッドの引数から必要な分だけ必要な形で渡すのが真っ当なやり方
0763デフォルトの名無しさん (ワッチョイ a49f-QP7I)
垢版 |
2018/02/25(日) 07:52:39.23ID:JzRpHb2B0
>>755
そのファイルにクラスおいた方が楽って感覚がわからないな
1クラス1ファイルが基本だし別のファイルおいた方が色々楽だと思うけど
まさかないと思うけどpublicなインナークラスにするのはよくないから気をつけてね
0764デフォルトの名無しさん (ワッチョイ 8b8a-YGTY)
垢版 |
2018/02/25(日) 08:09:40.74ID:zTlznGKg0
>>761
拠点毎のデータベースと、全拠点と端末を管理したり共通の設定情報を保持するデータベースとわけてるので
必要な情報に応じて動的につないでSQL文を実行させてます
>>763
全体を管理するデータベースの情報を元に端末毎に動作する権限や機能を割り当てるようにしてるので
起動するフォームを異なります
なので、初回フォームが起動する前に端末情報をProgram.csに保持させたいということと
異なる役割の端末(Form)からでも共通の設定値を利用したかったからです

>まさかないと思うけどpublicなインナークラスにするのはよくないから気をつけてね
この辺の理解がだめです・・・(書籍を読んで独学で一人でやってます)
外部クラスなりにProgram.csにおいたStaticな自作クラスにアクセスさせてはだめってことなのかと理解しましたが
具体的にどうだめなのかがさっぱりで・・・
0765デフォルトの名無しさん (ワッチョイ 30d2-Oqyw)
垢版 |
2018/02/25(日) 09:12:28.17ID:2NYrBiBT0
Listで中にclassをaddしていって
中のclassが解放されて歯抜けになって状態でaddした場合
nullの配列にaddされるか
歯抜けになったのをソートして埋めることって出来ない?
0767デフォルトの名無しさん (ワッチョイ 30d2-Oqyw)
垢版 |
2018/02/25(日) 09:17:08.24ID:2NYrBiBT0
Listで型をclassにしてaddしていって
格納したclassがいくつか解放されて歯抜けになった状態でaddしたときに
歯抜けになった配列を埋めるようにaddされるか
歯抜けになったのをソートして埋めることって出来ない?
0769デフォルトの名無しさん (ワッチョイ 30d2-Oqyw)
垢版 |
2018/02/25(日) 09:19:46.70ID:2NYrBiBT0
>>766
いくつかaddして
listとは関係なく外部でclassを解放した場合
歯抜けになるでしょ
0772デフォルトの名無しさん (ワッチョイ 30d2-Oqyw)
垢版 |
2018/02/25(日) 09:22:46.35ID:2NYrBiBT0
>>768
解放したいんじゃなくて
解放されて歯抜けになったとこにaddするか
ソートして歯抜けを埋めたいんだって
0775デフォルトの名無しさん (ワッチョイ 30d2-Oqyw)
垢版 |
2018/02/25(日) 09:43:15.18ID:2NYrBiBT0
まじかよ
listが無限にふくらんでいくじゃん
0778デフォルトの名無しさん (ワッチョイ a49f-QP7I)
垢版 |
2018/02/25(日) 10:22:48.34ID:JzRpHb2B0
>>764
何を言ってるのかよく分からないけど、
Program.csにProgramクラスとTestクラスを作るのと、Program.csにProgramクラスTest.csにTestクラスを作るのは同じ
どっちでもいいけど普通は後者かな

ただ、以下のようなインナークラスにはするなってこと
static class Program{
...
public static class Test{}
}
0780デフォルトの名無しさん (ワッチョイ e206-MTlB)
垢版 |
2018/02/25(日) 10:37:08.47ID:vhA3QBh60
>>769
classがオブジェクト参照を意図するなら、Listが持っている時点でインスタンスは解放されない
Dispose()はアンマネージリソースといった“メンバーの解放”でインスタンス自体を解放はできない
GCは強参照されていないインスタンスしか解放しないので、明示的に代入しない限りnullに成りようがない

ひょっとしてやりたいのはこういう事か?(※機械翻訳のようで日本語が不自由
https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/weak-references
IDisposableに処分済みインターフェイスは無く、ObjectDisposedExceptionを投げるクラスは独自の内部フラグ
0781デフォルトの名無しさん (ワンミングク MM0e-2hJC)
垢版 |
2018/02/25(日) 11:05:57.21ID:Ydc/tL+DM
>>779
関係ないクラスを一緒くたに管理しないほうがいいってこと
マシン設定ならマシン設定
データベース設定ならデータベース設定
権限管理なら権限管理
アイコン管理ならアイコン管理
プログラムは1つ1つ関心ごとに分けて後で組み合わせるのが基本
設定項目も一緒くたにしないで個別に設定クラスを作る
0782デフォルトの名無しさん (ワッチョイ 709d-saxG)
垢版 |
2018/02/25(日) 11:08:26.61ID:D3C+bdq60
それはインナークラスとどう関係あるって?
0784デフォルトの名無しさん (ワッチョイ a49f-QP7I)
垢版 |
2018/02/25(日) 11:14:15.87ID:JzRpHb2B0
>>779
Programのデフォルトの公開範囲がprivateだから

って思ったんだけどクラスって省略されるとinternalなんだね
じゃあ別にやってもいいかな
ただ、各フォームから起動元であるprogramクラスにアクセスするのは違和感があるからインナークラスは推奨しない
よく言われるグローバル変数にせず、フォームの起動時に引数で渡せばいいと同じレベルの話だから余り気にしなくていいかも
0785デフォルトの名無しさん (ワッチョイ 709d-saxG)
垢版 |
2018/02/25(日) 11:24:18.30ID:D3C+bdq60
>普通はVSのフォームデザインでプロパティからApplicationSettingにてPropertyBindingを行う
これはどういう意味や?
バインディングってのはデータソースがコロコロ変わる時に便利なだけだろ。何でグローバル変数みたいな
変わらんものに「普通は、、、、使う」なんて言いきれるんだ。
意味わからん。
0786デフォルトの名無しさん (ワッチョイ 509f-z29z)
垢版 |
2018/02/25(日) 11:43:52.16ID:/V/K592r0
グローバル変数(static変数)なんて難しすぎる機能は初心者には扱いきれないでしょう
普通にコンストラクタやメソッドに必要なものを渡していけば確実、安全、簡単だよ

var loginForm = new LoginForm();
loginForm.ShowDialog();
var loginUser = loginForm.LoginUser;

var loginService = new LoginService();
loginService.Login(loginUser);

var systemInfo = SystemInfo.Read();
var databaseModule = new DatabaseModule(loginUser, systemInfo);
var authModule = new AuthModule(databaseModule, loginUser, systemInfo);
var domainService = new DomainService(databaseModule, authModule);
var iconManager = new IconManager("url://to/icon/resource/base");
var formFactory = new FormFactory(databaseModule, authModule, domainService, iconManager, loginUser, systemInfo);

Application.Run(formFactory.CreateMainForm());

loginService.Logout(loginUser);
0787デフォルトの名無しさん (ドコグロ MM85-o9L9)
垢版 |
2018/02/25(日) 12:40:23.67ID:wniuxD5kM
設定値と処理を密にすると
設定値集Aと設定値集Bとか異なる設定で動かさなきゃいけないときにウザいよ

それを消そうとするとグローバル変数は消えるけど
仕様でそういったもんが別にいいなら問題は起きない
環境変数みたいにインストール時に固定なんだよ的な
0788デフォルトの名無しさん (ワッチョイ 709d-saxG)
垢版 |
2018/02/25(日) 14:52:23.69ID:D3C+bdq60
>グローバル変数(static変数)なんて難しすぎる機能は初心者には扱いきれないでしょう

何を根拠に難し過ぎるというのか意味不明だ。
 複雑だからか? どう複雑なんだ? 複雑なわけない。w
 他に難しい理由があるのか? 誤動作するからか? するわけない。w

 ちゃんと理由を上げて説明してみろよ。
0789デフォルトの名無しさん (アウアウカー Sa0a-msg2)
垢版 |
2018/02/25(日) 19:09:25.59ID:xxKEYzcHa
>>758-760>>762
ありがとうございます
参考になりました。頂いた内容で再検討してみます
0791デフォルトの名無しさん (ワッチョイ 2175-xOks)
垢版 |
2018/02/25(日) 21:04:14.02ID:ky9/2g4Z0
ググったら
selecteditem.tostring()でやってるのが多いけどそれだとどうなの?
0792デフォルトの名無しさん (ワッチョイ 539f-CyJp)
垢版 |
2018/02/25(日) 21:29:08.12ID:vwrCxs9l0
>>791
こうですか?
if (comboBox.SelectedItem != null)
//cb = ((ComboBoxItem)comboBox.SelectedItem).Content.ToString();
cb = comboBox.SelectedItem.ToString();
else
//comboBox.SelectedIndex = -1;
cb = comboBox.Text
}

値の前にこんな文字も取得してしまいす
System.Windows.Controls.ComboBoxItem:

if〜で選択した値は取得できてます。
else〜で手入力した値を取得したいのですがうまくいきません。
0805ヴぁr (アウアウウー Sa08-MTlB)
垢版 |
2018/02/25(日) 23:28:03.64ID:AIuTVnPta
<ComboBox x:Name="cb" IsEditable="True" TextBoxBase.TextChanged="cb_TextChanged" />

private void cb_TextChanged(object sender, TextChangedEventArgs e)
{
var text = cb.Text;
}
0825デフォルトの名無しさん (アウアウエー Sa6a-Xk4Z)
垢版 |
2018/02/26(月) 20:41:26.85ID:Vig1K9Wwa
関係ないよw
メディアの問題というよりファイルシステムの問題

シーケンシャルにしかアクセスできないからシークが遅いとか、そもそも追記ができないとかいう話なら分かるが、
追記可能なのに書込み速度がファイルのサイズに影響するファイルシステムってちょっと思いつかん
0826デフォルトの名無しさん (ワッチョイ 2175-xOks)
垢版 |
2018/02/26(月) 21:24:17.61ID:ogwj8qdY0
屁理屈アスペ
0829デフォルトの名無しさん (ワッチョイ 24c3-POFq)
垢版 |
2018/02/26(月) 22:29:50.26ID:gUsCTQbp0
業務アプリばっかりやってきて最近のトレンドに全くついていけてない老害に教えてやってほしいのですが、
●やりたいこと
WPFアプリ、SQLite(最新)を使用、EntityFrameworkで実装したい
DBはそれほど複雑でなく、せいぜい2つのテーブルをjoinする程度、あとは、各テーブルをCRUDする感じでサンプルに毛が生えたようなレベルです。

.NETのバージョンはv4.6.1とした場合、
どのパッケージを使用したらよいだろうか?が知りたいです。

参考にしたいな、と思った記事は、
https://qiita.com/massu/items/b2546a0d876e207de882#%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90

SQLiteで簡単にEFできるかな?と思ってコードを眺めていました。

だが、パッケージ名で.NET Coreを使用するように見えてしまい、
WPFで使っていいの?など何が何やら、、、

本人のバックグラウンドとしては、v3.5程度までの業務コーディング知識は
あるつもりなのですが、なかなか最近の技術、名称についていけておらず。。

最近のトレンドに乗りつつ、知識をつけつつ開発したいと思っています。
ちなみにこのアプリは業務使用ではないのです
0831デフォルトの名無しさん (アウアウウー Sa08-x7KF)
垢版 |
2018/02/26(月) 22:54:42.80ID:WVKxaYLHa
>>829
まずはこの辺の誤解を
・WPFは最近のトレンドなどではなく、とっくの昔に死んだ技術である
・EFはサーバー用のオーバーヘッドが極めて大きいフレームワークであり、デスクトップアプリで使うものではない
0833デフォルトの名無しさん (ブーイモ MM5e-x7KF)
垢版 |
2018/02/26(月) 22:59:10.38ID:DUs1D+akM
一番大きなギャップは、今の.NET界は完全にWebに傾倒していて、コミュニティの話題や新しい技術はほぼ全てWebであるということだな
デスクトップアプリなんか完全に時間止まってるから.NET 3.5の知識だけで全く問題ないよ
0838デフォルトの名無しさん (ワッチョイ 0e23-x4Or)
垢版 |
2018/02/27(火) 02:10:24.09ID:99t2/tIf0
WPFが生まれた時からずっと疑問なんだが
これって覚えたほうがいい技術なのか?
すぐ主流になるだろうからそれから乗り換えようと思ってもう何年もたつんだが
0843デフォルトの名無しさん (ワッチョイ 2175-xOks)
垢版 |
2018/02/27(火) 08:05:04.96ID:zlwrDvPF0
個人的にはWinFormsのデザインのほうがすき
0845デフォルトの名無しさん (アウアウカー Sa0a-msg2)
垢版 |
2018/02/27(火) 08:16:40.64ID:k/YAY/h1a
xmlでシリアライズするときに、配列のタグに番号を付与していくにはどうしたらいいのでしょうか
0847デフォルトの名無しさん (ブーイモ MM5e-x7KF)
垢版 |
2018/02/27(火) 08:38:03.68ID:7wWsDoA+M
>>844
なんか勘違いしてるみたいだが、PWAはWebアプリだぞ
今時ガワで何でもやるアプリなんてほとんど無くて、重要なのはWeb越しにある裏側の仕組みだ
つまり、PWAサポートするからバックエンドをVSやAzureで作ってね、ということ
そして、MSはC#を最重要なWebバックエンド開発言語として位置付けている
今更デスクトップアプリなどという時代遅れな技術を使いたくない、Web技術で全部作らせろ、というニーズは.NET開発者からも多いんだぞ?
今時C#=Winデスクトップアプリ向け、なんて言ってるのは10年遅れ
0849デフォルトの名無しさん (アウアウウー Sa08-x7KF)
垢版 |
2018/02/27(火) 11:40:41.47ID:xtZuYio6a
>>848
今時Webできない開発者なんかいない(そうでない連中はどうせ新しい物買わないし先細りだし放っといてもMSから逃げられないから餌をやる必要がない)
MSから見ればそこに拘る意味がなくなってるんだよ
今の.NETプラットフォームはAzure含めて純粋にWebプラットフォームとしての使いやすさで勝負していて、
十分に競争力のあるものになってるし実際大成功してるよ
0850デフォルトの名無しさん (ワッチョイ 26eb-g0eH)
垢版 |
2018/02/27(火) 11:49:37.57ID:/SsV5BVS0
見様見真似で勉強始めたばかりの初心者です
以下の記述でerror CS0234が出まして、ここから学習が進んでません

class test001:System.Windows.Forms.Form
{
static void Main()
{
System.Windows.Forms.Application.Run(new test001());
}
}
スクショttps://dotup.org/uploda/dotup.org1474023.jpg.html
各単語の意味もわかってませんが、
空のウィンドウが表示されるだけのソースのつもりで書いてます

1.基本的にこの記述は間違っているのか
2.error CS0234の対処法ググるとVisual Basicの設定方法がヒットするんですが、
メモ帳とコマンドプロンプトで制作してる者としてはどう対処すべきか
(取り急ぎ開発環境導入しますが、メモ帳だけでやってる方もいるらしいので)

以上2点ご教示願います
0851デフォルトの名無しさん (ワッチョイ f0ea-je3A)
垢版 |
2018/02/27(火) 11:58:10.40ID:p2sOgdSs0
>>850
どんな環境で何を見て始めたのか知らないけども、
VSならプロジェクト作成から「Windows フォーム アプリケーション」を選んで実行すれば、
空のウィンドウが表示される
初心者ならコマンドプロンプトで作らなくていいんじゃね?
0855デフォルトの名無しさん (ワッチョイ e206-MTlB)
垢版 |
2018/02/27(火) 12:47:38.51ID:SDSkuy0K0
>>850
おそらくSystem.Windows.Forms.dllへの参照が埋め込まれていないんじゃないかと
うちの環境だとIDE入ってるせいかSystem.Windows.Forms.dllへの参照は勝手に入るが

コンパイルエラーコードはこの辺りに纏まっている
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/compiler-messages/CS0234
といってもVSはVSでエラーコードに関してヘルプをBingで検索しだす奇天烈仕様
0857850 (ワッチョイ 26eb-g0eH)
垢版 |
2018/02/27(火) 13:36:31.89ID:/SsV5BVS0
回答ありがとうございます
実際の対策としてVS導入はするつもりですが、

知識欲として、参照が埋め込まれていない状態をIDE介さずに解消するのは難しいのでしょうか?
0859デフォルトの名無しさん (ワッチョイ e206-MTlB)
垢版 |
2018/02/27(火) 13:56:12.87ID:SDSkuy0K0
>>857
URLの/reference (メタデータのインポート)は読んだ?より具体的なら↓のとか

ソース ファイルが格納されているディレクトリで次のコマンドを実行します
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/how-to-develop-a-simple-windows-forms-control

https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/how-to-create-a-windows-forms-application-from-the-command-line
こちらだとcscにはライブラリの指定がないね、IDEというよりSDKやTargeting Packの設定なのかもしれん
0864デフォルトの名無しさん (ワッチョイ 2175-42by)
垢版 |
2018/02/27(火) 20:08:50.02ID:zlwrDvPF0
>>857
csc test.cs -r:System.Windows.Forms.Dll
でもできない?
0865デフォルトの名無しさん (アウアウウー Sa08-MTlB)
垢版 |
2018/02/27(火) 20:14:25.43ID:hIuQGxZha
でも正直なところ一般人の目に付く範囲のアプリってoffice除いたら
大体htmlで構成されてるものが多いんじゃないか
そうじゃなくてもネットワークがないと何も始まらない
0867デフォルトの名無しさん (ワッチョイ f41e-a/z7)
垢版 |
2018/02/27(火) 20:44:37.33ID:Ee9DX7nT0
Webの特にフロントエンドはひどすぎるな。JavaScript。
生産性の低い道具を使って仕事たくさん生み出そうってことなんだろう。
俺もReactだけは勉強したけどさw
去年のQiitaアドベントみると去年はVue.jsだったのか?ww
アホすぎ
0868デフォルトの名無しさん (ワッチョイ 2175-xOks)
垢版 |
2018/02/27(火) 20:58:24.68ID:zlwrDvPF0
スレチ
0869デフォルトの名無しさん (ワンミングク MM3e-2hJC)
垢版 |
2018/02/27(火) 21:09:13.36ID:IHLOiVm0M
業務系はレイヤー分割下手くそな初心者みたいなSE, PGばっかりだから
フロントを入れ替える=全改修みたいな悲惨な事になるから、頻繁にフロントを変えるって発想ができないんだろう
ここにはどうしても高い文明の壁があるから分かり合えることはない
0870829 (ワッチョイ 24c3-4sh6)
垢版 |
2018/02/28(水) 00:45:23.33ID:ZfoI/UP10
ちょっと流れてしまいましたか、貴重な意見ありがとうございます。
教えていただいたページで勘違いしていたところがスッキリしました。

WPF登場してから時間が立っているからか、古く感じてしまうのは仕方なしなのかな、と思う一報、クライアントアプリを扱う現場ではまだまだ全盛、WinFormも負けてられない勢いで使われているとおもいます。

また、一部、EFはサーバーサイドで…と言う意見もいただきましたが、クライアントでも、問題ないですよね、多分。
というか今回の質問としてはwebでないので3層は意識せず、でもUIとロジックの分離、その先の責務の分離を考えると、良い方法かな、と思いますが…じゃあEF使わないんだったら、どうしよう、constでクエリ定義してDataAdapterにぶっ込む…なんてしたくなかったですし。。。

もう少し調査は必要かもですが、ちょっとやってみたいと思います。
0871デフォルトの名無しさん (ワッチョイ 709d-saxG)
垢版 |
2018/02/28(水) 03:45:22.69ID:Tpz3pZ6h0
>ここにはどうしても高い文明の壁があるから分かり合えることはない
例えばどんなところが「高い壁」といえるんだ?
0873デフォルトの名無しさん (ワッチョイ 709d-saxG)
垢版 |
2018/02/28(水) 08:03:55.13ID:Tpz3pZ6h0
高いか低いかそれすらわからない。要するに何もわからないという壁だな。w
0876デフォルトの名無しさん (ワッチョイ 9c03-07Zo)
垢版 |
2018/02/28(水) 22:27:40.29ID:6WnrRHIY0
>>875
おまえがなんとなく理解出来るんなら大体の人は正確に理解できんじゃね?
0883デフォルトの名無しさん (ワッチョイ 6775-LhZF)
垢版 |
2018/03/01(木) 13:33:07.63ID:6vJouTff0
スレチ
0885デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/01(木) 19:58:55.12ID:AzZlAoZA0
te
0886デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/01(木) 20:03:50.95ID:AzZlAoZA0
Task taskA = Task.Run(async () => {
int count = 60;//6sec
while (count-- > 0) {
Debug.Print("sw0:" + sw.ElapsedMilliseconds.ToString());
await Task.Delay(100);
Debug.Print("sw1:" + sw.ElapsedMilliseconds.ToString());
}
} );
taskA.Wait(5000);
5秒で一旦止まるように見えるが、暫くするとまたタスクは回り始める。C#バグかよ。
0887デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/01(木) 20:10:43.58ID:AzZlAoZA0
しかもUIは5秒間止まってしまう。TASKの意味ないよ。書き方を間違ってるんだろうか?
0890デフォルトの名無しさん (ワッチョイ df06-k3ZN)
垢版 |
2018/03/01(木) 20:34:30.22ID:quAhlzft0
>>886-887
何だか良く分からないけど、どうみても6秒以上掛かるコードだし
Wait()はタイムアウトしても終了させないし、待機時間ブロックする
UIスレッドでしたら固まるし、awaitは解放したいスレッドで使う物だよ
0892デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/01(木) 20:37:12.88ID:AzZlAoZA0
>>888
上はFormに貼り付けたボタンイベントで実行してるだけ。それなのにボタンを押したら
5秒間フォームが固まる。w
0895デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/01(木) 20:44:04.03ID:AzZlAoZA0
>>891
 サンプル見て書いたつもりだったが、間違いでしたか?
Asyncが非同期処理を宣言するような機能で、Awaitは解放するスレッドに付けるのだから、Task.Delay(100)を
解放してUIに戻す.つまり100msec待ちながらもUIに制御を戻すってことではないのか?
0899デフォルトの名無しさん (ワッチョイ df06-k3ZN)
垢版 |
2018/03/01(木) 20:52:01.74ID:quAhlzft0
>>895
Taskはスケジューラを指定しない限りワーカースレッドで動くよ
その非同期ラムダでawaitしてもワーカースレッドが解放されてるだけ
UIスレッドで非同期待機するなら作成側を非同期メソッドにしてawaitする
0902デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/01(木) 20:59:14.26ID:AzZlAoZA0
>WaitでGUIのスレッドを使って待機してるのでGUIはその間動かない
>5秒たつと待つのをやめてそのまま進む

 GUIのスレッドを使って待つの当然でしょ。それが目的だから。だめなの?
じゃあどこで待てばいいのだ? 

void ボタン_Click(){
TaskAを実行(起動);
TaskAの完了を待();
}
処理の流れはこうだけど、これは駄目ってこと? じゃあどうするの?
void ボタン_Click(){
TaskAを実行(起動);
}
どっか別のところで、例えばタイマー割り込みで
TaskAの完了を待();
ってことか? 流れがわかり難いので不細工だよな。「シーケンシャルに流れを書いて且つUIが
止まらない」というようになってないと駄目だろ。
0903デフォルトの名無しさん (アウアウウー Sa2b-k3ZN)
垢版 |
2018/03/01(木) 21:00:06.29ID:73H1EZrda
ちょっと語弊があるな

間違った理解

awaitがあるとUIに制御を戻す
awaitがついたメソッドに出会うとUIはその場で対象のメソッドの終了を待つ

2番目が特に誤解を招きやすい
0909デフォルトの名無しさん (ワッチョイ df06-k3ZN)
垢版 |
2018/03/01(木) 21:18:31.12ID:quAhlzft0
>>902
いやだから…そのWait()の代わりにawaitをUIメソッドに書くんでしょうが…
そうすれば一旦スレッド制御を返し、Taskが終われば取り戻し再開してくれる

レガシーな書き方だってTaskScheduler.FromCurrentSynchronizationContext()を指定して
ContinueWith()すれば良いし、UIコンテキスト取得しといてワーカースレッドから投げても良い
0911デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/01(木) 21:23:58.40ID:AzZlAoZA0
>Taskはスケジューラを指定しない限りワーカースレッドで動くよ
>その非同期ラムダでawaitしてもワーカースレッドが解放されてるだけ
>UIスレッドで非同期待機するなら作成側を非同期メソッドにしてawaitする

言ってることの意味がわからない。Async()=>{}にしてるでしょ。
しかもこのラムダはRunが確保したスレッドプールで動作してるんでしょ。意味的にそうでないと
可笑しい。でラムダのその中でawaitしてるんだから、、、、って
UIスレでボタン受付
    スレ4000でラムダ起動
             AWAITでスレ4001にスイッチして100msec待つ
    100msec完了でスレ4000に戻る。
    スレ4000でループ
Task.Wait(3000)はUIスレでスレ4000の終了を待ってる。
ここで待ってる限りUIは止まるってことね。
そういう意味か? 何となく解った。
0913デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/01(木) 21:26:35.19ID:AzZlAoZA0
>いやだから…そのWait()の代わりにawaitをUIメソッドに書くんでしょうが…
そういうことね。解り申した。
0920デフォルトの名無しさん (アウアウウー Sa2b-dKqy)
垢版 |
2018/03/01(木) 23:57:01.48ID:bUfJPuYla
クライアントアプリならイベントハンドラでの await Task.Run だけ覚えてそこから先は全部同期でいい
WebだとTPL Dataflowとか CancellationToken とかまで踏み込んで使いこなさないとあまり意味ないけど
0922デフォルトの名無しさん (アウアウウー Sa2b-dKqy)
垢版 |
2018/03/02(金) 00:15:37.45ID:SqtcRaFRa
>>921
そもそも勘違いしてるみたいだが、asyncはオーバーヘッドが大きいから一般にはなるべく使わないほうがいい。
じゃあWebではなぜ逆に非同期を全面的に積極的に使うかというと、
多数のリクエストを同時に処理するときのスレッドプールの消費を抑えることでメモリ使用量を低減できるから。
クライアントアプリなんか必ず同時に一人しか使わないんだから、UIのイベントの度にRunしても全く問題にならない。
0930デフォルトの名無しさん (ワッチョイ ff7f-9act)
垢版 |
2018/03/02(金) 00:36:23.51ID:biZ1zUn80
>>926
> 結論 – 非常に短いメソッドにasync/awaitを使うことを避ける、あるいはきついループ内でawaitステートメントを持つことをを避ける
使い所を間違えるなとしか書いて無い。
「一般にはなるべく使わないほうがいい」とか、曲解だよ。
0935デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/02(金) 04:58:14.52ID:IwZ3DIkv0
0936デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/02(金) 05:58:54.00ID:IwZ3DIkv0
var cant = new System.Threading.CancellationTokenSource();//なんじゃこれは?
Task taskA = Task.Run(async () => {
int count = 60;//6sec
while (count-- > 0) {
 〜処理
 cant.Token.ThrowIfCancellationRequested();//例外発生
}
}, cant.Token );
何じゃらほい? 大したことできんのにたいそうな名前を付けやがって笑える。普通にflg使ったらいいだけだろ。
0938デフォルトの名無しさん (ブーイモ MMcf-dKqy)
垢版 |
2018/03/02(金) 09:21:22.43ID:QlU5Q+B8M
>>934
何が面白いのか知らないけど、同期でREST APIを呼ぶケースなんて普通にあるぞ

>>936
正しい非同期メソッドは必ずCancellationTokenを引数として受け取る
そして、非同期メソッドからさらに別の非同期メソッドを呼ぶときには引数にcantを渡す
そうやって共通のCancellationTokenを引き回すことで、別の非同期メソッドを呼んでる間でも待機状態を確実にキャンセルできる
同期ならabortすりゃいいだけだけどね
0939デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/02(金) 12:17:26.88ID:IwZ3DIkv0
>>938
すいません。笑えませんでした。
0942(ワッチョイ df9d-wl/W)
垢版 |
2018/03/02(金) 13:28:13.40ID:IwZ3DIkv0
これってどういう意味があるの?単純にフラグを叩けばいいだけだろ。大して利点があるようには思えんが?
ManualResetEventの代わりにflg=Flseで初期化しておいて、setのところでflg=trueにして、
while(!flg);で待機したらいいだけではないのか?

var waitHandle = new ManualResetEvent(false);
Task.Run(() => {Thread.Sleep(2000);  waitHandle.Set(); });
 Console.WriteLine("Wait");
waitHandle.WaitOne(Timeout.Infinite);
0944デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/02(金) 15:56:09.38ID:IwZ3DIkv0
100msecのタイマー割り込みの中でこういうのを順番に実行する。
void timer1(){
switch( state){
case 0:
if( do1() ){state++;}; break;
case 1:
if( do2() ){state++}; break;
case 2:
if( do2() ){state=0}; break;
}
}
何かもっとスマートな書き方はないか?
0947デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/02(金) 16:57:54.42ID:IwZ3DIkv0
Stateを使いたくない。
while(1){
while(!do1()){ wait(100);}
while(!do2()){ wait(100);}
while(!do3()){ wait(100);}
}
こんな感じでなんかいい書き方は?
0950デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/02(金) 18:21:47.40ID:IwZ3DIkv0
>>949
 遅延は無視できるレベル。
>>948
 ならない。というかStateは使いたくない。
0951デフォルトの名無しさん (アウアウエー Sa9f-OA7j)
垢版 |
2018/03/02(金) 18:26:56.36ID:AXJZJbYfa
>>944
ネタっぽい質問だけどこんなのでも作るとか

public class RoundRobin
{
  int index = 0;

  RoundRobin(params Action[] jobs)
  {
    if (jobs == null || jobs.Length == 0) jobs = new Action[] { () => { } };
    this.Jobs = new ReadOnlyCollection<Action>(jobs);
  }

  public ReadOnlyCollection<Action> Jobs { get; private set; }

  public void DoNext()
  {
    Jobs[index]();
    index = ++index % Jobs.Count;
  }
}

余談だけど、組み込みか何かの人?
タイマー割り込みてw
0956デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/02(金) 18:46:01.75ID:IwZ3DIkv0
Timer1のなかにステートマシンつくったらなんでもできるけど、わかり難いだろ。
フローチャートのように上から下へ自然に流れる方がいい。
0958デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/02(金) 18:50:30.27ID:IwZ3DIkv0
>>952
var cts = new CancellationTokenSource();
Task.WhenAll(
Task.Run(() => EventLoop(cts)),
TimerLoop(cts.Token)
).Wait();
こういう書き方を見るにつけ、なにかいい方法はないかとつらつらと考えてる。
0959デフォルトの名無しさん (アウアウエー Sa9f-OA7j)
垢版 |
2018/03/02(金) 18:56:31.02ID:AXJZJbYfa
あとはこんなの
IEnumerable<Action> JobSequece()
{
  while (true)
  {
    yield return () => { ... };
    yield return () => { ... };
    ....
  }
}

async Task RoundRobin()
{
  foreach(var j in JobSequece())
  {
    await Task.Run(() =>Thread.Sleep(100));
    j();
  }
}

タイマー割り込みって言葉使うのはHW直接いじる超低水準のコード書いてる人か
80年代マイコン少年のおじさんだろうねw
0961デフォルトの名無しさん (ワッチョイ df9d-wl/W)
垢版 |
2018/03/02(金) 19:02:23.48ID:IwZ3DIkv0
C++ならTimer割り込みって言葉は普通につかうぜよ。
0965デフォルトの名無しさん (ワッチョイ 87d2-Vmra)
垢版 |
2018/03/03(土) 00:37:31.41ID:wLcwZl2a0
本を読みながらUnityでC#を勉強しているのですが・・・
それぞれのコードの最後の行にあるnewは何をしているのか教えて下さい。

public class ArrowGenerator : MonoBehavior {
public GameObject arrowPrefab;
float span = 1,0f;
float delta = 0;

void Update()
this.delta > this.span) {
GameObject go = Instantiate(arrowPrefab) as GameObject:
int px = Random.Range(-6, 7);
go,tansform.positon = new Vector3(px, 7, 0);
}
}
}

他にも

public class IgaguriController : MonoBehavior {
public void Shoot(Vector3 dir) {
GetComponent<Rigidbody>().AddForce(dir);
}

void Start() {
Shoot(new Vector3(0, 200, 3000));
}
}

長いので分割します。すみません。
0966965 (ワッチョイ 87d2-Vmra)
垢版 |
2018/03/03(土) 00:38:39.14ID:wLcwZl2a0
それぞれ最後の行の、
go,tansform.positon = new Vector3(px, 7, 0);
Shoot(new Vector3(0, 200, 3000));

このnew演算子?は何をしているのでしょうか?
それぞれVector3というメソッドが直後のカッコの中の引数を渡していると思うのですが
その手前のnewが何なのかわかりません
クラスをインスタンスにするときに使用するnewとは若干形が違いますよね
いくら調べてもこの形のタイプのnewが出てこなくて・・・。

どなたか宜しくお願いします・・・。
0967965 (ワッチョイ 87d2-Vmra)
垢版 |
2018/03/03(土) 00:41:09.07ID:wLcwZl2a0
ああ・・・空白が埋まってしまっていてとても見づらいですね
本当にすみません
0971965 (ワッチョイ 87d2-Vmra)
垢版 |
2018/03/03(土) 01:34:37.27ID:wLcwZl2a0
メソッドではなくクラスですね。

newは
クラス名 変数 = new クラス名()
の形しか見たことなくて・・・

上は
Vector3 go,tansform.positon = new Vector3(px, 7, 0);
という風に頭にもVector3 を付けないのですか?

下は
Shoot(Vector3 ABC = new Vector3(0, 200, 3000));
といった風に、ABCの様な変数は表記しないで、クラス名にnewを添えただけでも
クラスをインスタンス化できるのでしょうか?

>>970
一応、上のは入門書に書いてあるコードなのですよね
入門書が不親切なのか私に応用力がないのか・・・後者っぽいですね
他の入門書も調べて買ってみます
0974デフォルトの名無しさん (ワッチョイ df06-k3ZN)
垢版 |
2018/03/03(土) 02:45:02.94ID:jgGrGcb50
>>971
コードがタイポってる気がするが、上はフィールドへの代入だから
TransformクラスでpositionはVector3Dであると既に定義されている
下はコードにメソッド定義も含まれていて仮引数の型が書いてあるよね

変数宣言の型指定であって、インスタンス化には代入を伴う制約はない
未初期化の変数は参照できないから殆どは宣言時に代入もされるけど
それぞれの字句に切り分けて意味を把握しないと歪んだ理解になります
0975965 (ワッチョイ 87d2-Vmra)
垢版 |
2018/03/03(土) 07:33:03.46ID:wLcwZl2a0
>>974
とても詳しく教えて頂きありがとうございます
そういうことなのですね・・・やっと少し理解できました

意味を捉えようとは思って勉強していたのですが形で覚えていたんですね
1単語?ずつ意味を捉える様に意識してみます
皆さん変な質問にお答え頂きありがとうございました!
0976デフォルトの名無しさん (ワッチョイ 6775-LhZF)
垢版 |
2018/03/03(土) 08:22:24.39ID:kknO3Mli0
Vector3 vec; 変数定義
vec = new Vector3(1,3,2); インスタンス生成後、変数に代入
0977デフォルトの名無しさん (ワッチョイ df19-4wjg)
垢版 |
2018/03/03(土) 09:12:41.41ID:PjugdM0i0
処理の結果を返してくれるapiで、例えば
貼り付けるテキストを決める
フォント名設定
色設定
文字の大きさ設定
なと細かくapiを呼び出ししないといけない場合でも、結果を受け取る変数はやっぱり使い回ししないほうがいいですか?その変数はapi呼び出したあとエラー確認するだけです
0985デフォルトの名無しさん (ブーイモ MM4b-dKqy)
垢版 |
2018/03/03(土) 15:04:07.52ID:VVolGUCSM
属性(Attribute)
Pythonのデコレータとは違って、それ自体はメソッドに純粋にメタデータを付けるだけの機能なので、
属性を処理するにはリフレクションを駆使する必要がありクソ面倒臭い
フレームワーク作る人のための機能
0989デフォルトの名無しさん (ワッチョイ df06-k3ZN)
垢版 |
2018/03/03(土) 16:55:57.03ID:jgGrGcb50
>>983-985
デコレータ自体を実現しようとするなら厄介よね、一般的なデコレータに相当するもので良ければ
@propertyならC#プロパティがあるし、@classmethodや@classmethodならstatic修飾子で済むんだけど
実装に関わってきそうなのはデリゲートとかかな、Pythonで言えばbound/unbound methodに相当する
0993デフォルトの名無しさん (ワッチョイ 6775-LhZF)
垢版 |
2018/03/04(日) 08:15:41.15ID:J/ZR4f1P0
0994デフォルトの名無しさん (ワッチョイ 6775-LhZF)
垢版 |
2018/03/04(日) 08:16:54.70ID:J/ZR4f1P0
0995デフォルトの名無しさん (ワッチョイ 6775-LhZF)
垢版 |
2018/03/04(日) 08:17:03.97ID:J/ZR4f1P0
0996デフォルトの名無しさん (ワッチョイ 6775-LhZF)
垢版 |
2018/03/04(日) 08:18:43.29ID:J/ZR4f1P0
0997デフォルトの名無しさん (ワッチョイ 6775-LhZF)
垢版 |
2018/03/04(日) 08:18:57.30ID:J/ZR4f1P0
0998デフォルトの名無しさん (ワッチョイ 6775-LhZF)
垢版 |
2018/03/04(日) 08:21:21.48ID:J/ZR4f1P0
0999デフォルトの名無しさん (ワッチョイ 6775-LhZF)
垢版 |
2018/03/04(日) 08:24:24.96ID:J/ZR4f1P0
1000デフォルトの名無しさん (ワッチョイ 6775-LhZF)
垢版 |
2018/03/04(日) 08:26:06.35ID:J/ZR4f1P0
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 27日 10時間 23分 38秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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