X



ふらっと C#,C♯,C#(初心者用) Part146
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (ワッチョイ 9f0b-Fgt1)
2019/12/11(水) 22:12:11.28ID:d09CciDz0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part145
https://mevius.5ch.net/test/read.cgi/tech/1570446977/
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0002デフォルトの名無しさん (ワッチョイ 1524-Fgt1)
2019/12/11(水) 22:32:15.34ID:mMKqVbip0
C#
0003デフォルトの名無しさん (ワイーワ2 FFfa-uKDx)
2019/12/12(木) 09:41:18.58ID:a67Hqgb2F
O2
0004デフォルトの名無しさん (ワッチョイ 06b0-DoXq)
2019/12/12(木) 14:29:42.64ID:56xY8w560
ひらがな文字列をヘボン式ローマ字に変換するプログラム作りたいのですが
やっぱ正攻法でswitch-caseで123個くらい分岐させますか?
でも長音や促音の例外処理とか難しそうだなあ・・・
0005デフォルトの名無しさん (エムゾネ FF02-uKDx)
2019/12/12(木) 14:47:29.26ID:b3wcvAqBF
変換テーブルと検索
0006デフォルトの名無しさん (ワッチョイ e242-xO71)
2019/12/12(木) 17:38:52.89ID:OYDho7HG0
UNIXのShellのソースでコマンドを切り分ける場所では思いっきりswitch文の嵐だったな
1文字目でまず切り分けで、次にに文字目ってな具合で

速度なら圧倒的にswitch分だと思うが、作りやすかったり保守が簡単なのはDictionary使ったパターンだと思う
0010デフォルトの名無しさん (ワッチョイ 06b0-DoXq)
2019/12/12(木) 19:09:09.93ID:56xY8w560
>>4です
ありがとうございます
switchでコツウコツやることにします
要素の数え漏れでもっと増えそうだし
例外を拾う処理も考えなきゃww
0011デフォルトの名無しさん (ワッチョイ 8b45-6Mij)
2019/12/12(木) 19:47:35.25ID:XSG0K+ND0
vs2017ExpressでC#のフォームを使ってSQLiteのデータをDataGridViewに表示させたいです
セキュリティの関係でSystem.data.SQLiteを使うには申請が必要でMicrosoft.data.SQLiteを使っています
SQLiteをデータソース欄に追加する方法を教えてもらえないでしょうか?
0013デフォルトの名無しさん (アウウィフ FF3b-EbeN)
2019/12/13(金) 10:16:06.63ID:V90d9jYdF
いくら払えますか
0014デフォルトの名無しさん (スプッッ Sd2f-6Mij)
2019/12/13(金) 11:41:55.37ID:D/hLKfPDd
>>13
自宅でSystem.data.SQLiteをインストールして同じコードを書いたらデータベースに接続出来ました
恐らくSQLiteConnection等の参照が足りずにエラーなっていると思いますが、解決策が思い浮かばなかったのでSQL Serverを使って試したいと思います
申し訳ありません
0015デフォルトの名無しさん (スフッ Sd02-cBt2)
2019/12/13(金) 12:10:09.33ID:SSw9bcJtd
Microsoft Visual Studio International Feature Pack を使うんだ!
KanaConversion クラスだったかに RomajiToHiragana メソッドがあったと思う
0016デフォルトの名無しさん (ブーイモ MM13-RobM)
2019/12/13(金) 17:23:20.97ID:f86+e1mZM
>>10

亀レスで申し訳ないが、正規表現と Dictionary と LINQ を使えば 5 行くらいで書けるよ。

var kana = “あ|い|う|え|お|か|き|く|け|こ”;
var roman = “A|I|U|E|O|Ka|Ki|Ku|Ke|Ko”;
var dic = kana.Split(‘|’).Zip(roman.Split(‘|’), (l, r) => new { Key = l, Value = r}).ToDictionary( x => x.Key, x => x.Value );

Console.WriteLine(Regex.Replace(original_string, $”({kana})”, match => dic[match.Value]));
0017デフォルトの名無しさん (ブーイモ MM13-RobM)
2019/12/13(金) 17:33:03.63ID:f86+e1mZM
あとは 50 音を全パターン書いてね。

ただし注意点があって、長いワードは短いワードよりも (例えば「ちょ」は「ち」よりも) 先に並べるんだ。
そうしないと短いワードが先に部分マッチしてしまう。
0020デフォルトの名無しさん (ブーイモ MMdb-RobM)
2019/12/13(金) 18:16:48.88ID:RrhzxBUdM
>>18
作っているのはテーブルだけではないし、このように書くとスッキリ書ける。

>>19
処理の重さの本質はワード比較による分岐であって、switch 分岐もそれに引きずられるから、C# で比較するならどちらも大差ないと思う。

正規表現の方が、むしろ、最適化がかかることに期待できる。
0022デフォルトの名無しさん (ブーイモ MMdb-RobM)
2019/12/13(金) 18:44:01.44ID:8Ub64SZCM
>21
それは感情論だな。計時してみてくれよ。

Perl, JavaScript, Java, C# で正規表現を使うこと 30 年弱になるけど、パターンの複雑さによらず、正規表現が目に見えて遅いということはなかったな。

アセンブラでゴリゴリに最適化したものと比べたら遅いだろうが、同じ言語のユーザー定義関数より目に見えて遅いことはまあないと思うよ。
0024デフォルトの名無しさん (ブーイモ MMdb-RobM)
2019/12/13(金) 18:51:56.74ID:8Ub64SZCM
>>23
何か勘違いしてないか?
こっちも Dictionary つくっているが。
0025デフォルトの名無しさん (ワッチョイ c788-aD55)
2019/12/13(金) 19:49:57.23ID:KAf60mjk0
2文字置換を考慮したらスッキリは書けなかった
すまんこ
こんなクソみたいなコードでもregexよりは数倍早い
https://ideone.com/c7ILX4
頭良い人がもっとスッキリしたコード書いてくれそう

長文のほうがreplaceは不利だろうから数千文字にしたけどそれでも余裕
速度気にしないならregexで良いと思う
0028デフォルトの名無しさん (ワッチョイ e752-RobM)
2019/12/13(金) 21:07:14.03ID:M1n71JyZ0
多少簡略化したロジックで計測してみた。

マッチ文字列が 1 文字固定なら、ユーザー定義関数の方が正規表現より 8 倍速かったが、1 〜 2 文字可変なら所要時間は同じ。

パターンマッチの文字列長が可変・複雑になるとそれをハンドルするための分岐が増えるせいでユーザー定義関数は遅くなる。

もちろん置換をかけるオリジナル文字列の文字出現パターン&確率にもよる。

チューニングするなら C やアセンブラで書くべきだし、C# で書くなら正規表現で簡潔に書けるほうがよいのでは?
0029デフォルトの名無しさん (ワッチョイ e752-RobM)
2019/12/13(金) 21:12:22.88ID:M1n71JyZ0
>>27
おもしろいところに気づいたね。

例えば仮文字 $ とかに変換しておいて、最後に直後の子音字に変換。

ちゃっと => cha $ to => cha t to
0030デフォルトの名無しさん (ワッチョイ ef63-aD55)
2019/12/13(金) 21:22:02.14ID:VulPdUq80
どうあがいてもregexは遅くないという結論にしたいみたいだけど
string単体で見ても遅いのにregexが遅くないわけがない
簡潔に書くならregexがスマートなパターンが多いのは分かってるよw
処理速度求められるパーサーなんかではまずregexなんか使わない

遅いと言っても数万文字の処理が何万回も必要とかでなければ気にするようなレベルではないので問題ないなら素直にregex使ったほうが良いよ
25ですでにそう言ってるしね
0031デフォルトの名無しさん (ワッチョイ e752-RobM)
2019/12/13(金) 21:26:23.93ID:M1n71JyZ0
あるいはワンショットで置換するなら、下記のようなパターンを使って後方参照し、第1マッチ文字列が空でないなら、第2マッチ文字列の置換先の1文字目に置換するとか。

(っ?)(あ|い|う|え|お|か|き|く|け|こ)
0032デフォルトの名無しさん (アウアウイー Sa1f-f14Z)
2019/12/13(金) 21:26:56.26ID:yXJ+I/RUa
「ンョ゛ハー ゛」みたいなのが来た時の対応とか考え出すと仕様肥大化するだろうなあ
ひらがなカタカナ両対応とか、半角カナとか、
長音の代わりにハイフン使いだした場合とか
「ヴァッソ」とか
テストパターン考えるのも厄介そうだね
0033デフォルトの名無しさん (ワッチョイ 5f01-uKDx)
2019/12/13(金) 21:30:11.16ID:0IHjBlJG0
LALRを受理するジェネレータ書いたことがあるんだけど、状態表の大きさは字句解析のほうが遥かに大きくなるのが普通みたいですよ。
字句解析と構文解析は一つの表にまとめられるのに、なぜ分けるのかというのが最初の疑問だけど、なぜか答えが載ってる本が無い。
実際にやってみると表の大きさが爆発的に大きくなるからでした。
状態機械は分けられる箇所があるなら積極的に分けたほうが効率的になるようです。
0034デフォルトの名無しさん (ワッチョイ e752-RobM)
2019/12/13(金) 21:30:12.87ID:M1n71JyZ0
>>30
文字列操作だからもちろん絶対的には遅いよ。

C# で書いたユーザー定義関数と比べたときに正規表現が相対的にそんなに不利かといったらそうではないだろうという予想を立てただけで。実際測ったら同等だったわけだけど。
0036デフォルトの名無しさん (ワッチョイ 5f01-uKDx)
2019/12/13(金) 21:33:36.65ID:0IHjBlJG0
字句解析におけるNFA対DFAというのも最初に気になる部分です。
結論から言うと、NFAの選択は十分に考慮できるはずです。
僕も最初はDFAにこだわっていました。
でも、字句解析は表が大きくなりがちです。
特にregex並みの便利機能を組み込もうとすると、とても大きくなります。
たいていはNFAで十分かと思います。
0037デフォルトの名無しさん (ワッチョイ 5f01-uKDx)
2019/12/13(金) 21:37:02.69ID:0IHjBlJG0
ちなみに、DFAにこだわる理由は、多くの本がDFAのほうが効率的と述べているからです。
みんなそうだと思います。
最悪のケースではその通りですし、最悪のケースを考慮するのはセキュリティにも関わります。
でも最悪のケースはめったになく、たいていはNFAで十分で、たいていは効率的だと思います。
0038デフォルトの名無しさん (ワッチョイ ef63-aD55)
2019/12/13(金) 21:39:05.74ID:VulPdUq80
>>34
その同等だったっていうコード貼ってくれない?
25で貼ったコードで1文字2文字の比率変えてもregex側が常に3〜4倍くらい遅いんだよね
古い.NETだとsubstringが遅いとかあった気がするんだけどその影響じゃないよね?
0039デフォルトの名無しさん (ワッチョイ e752-RobM)
2019/12/13(金) 21:42:16.88ID:M1n71JyZ0
>>38
コード書いてくれてたんだね。
25 があぼーんで読めない。。。
0040デフォルトの名無しさん (ワッチョイ 62b0-DoXq)
2019/12/13(金) 21:42:32.85ID:f+S2ArPq0
>>4でーす
>>16以降、何書いてるのかサッパリ分かりません!
なんせまだifとforとswitchと文字列操作のメソッドくらいしか知らないもんでww
半年くらい後に読みに来まーす
0041デフォルトの名無しさん (ワッチョイ e752-RobM)
2019/12/13(金) 21:51:25.19ID:M1n71JyZ0
>>38
コードは長すぎて多分アップできないと思う。

やっていることは switch 式を2 文字マッチの場合と 1 文字マッチの場合で 2 種類つくり、残文字列が 2 文字以上あるなら前者にかける (破棄パターン _ => で後者を呼び出す)、1文字なら後者にかけ、インデックスを進めるだけ。

置換後文字列の連結には StringBuilder 使っているし、メソッド呼び出しは AggressiveInlining している。ユーザー定義関数を意図的に遅くするようなことはしていない。

1文字あるいは2文字の切り出しに Substring 使っているけど、それが遅いのかな?
0042デフォルトの名無しさん (アウアウイー Sa1f-f14Z)
2019/12/13(金) 21:52:27.04ID:yXJ+I/RUa
ローマ字変換でばっとググってみた

お勉強用ならJavaScriptで書かれてるこれを理解しながらC#に移植するのがよさそうかな
ソースコードも簡潔だし悪くなさそう
https://www.pandanoir.info/entry/2016/03/29/190000

とにかく動けばいいというならMicrosoftが配ってるらしい「Japanese Kana Conversion Library」?でもこんなの使ったことないや
0044デフォルトの名無しさん (ワッチョイ a201-VrMI)
2019/12/13(金) 22:10:51.66ID:+9OE4qBy0
正規表現のほうが単純文字列比較より遅いのは当たり前
1文字比較の場合に単純比較と同等になるような
最適化が施されてるエンジン積んでれば数倍とかの差はつかない

少し古いバージョンのブラウザのJSのなら平気で10倍近い差が出てた
でもその差がUXに影響を与えるようなユースケースはそう多くはない

ちなみにstringのswitch caseは数が増えると
.NET Core以前は内部的にDictionary使うみたいよ
.NET Coreもhash比較するのは同じだけどDictionaryをアロケートしない方法にしてるらしい
0045デフォルトの名無しさん (ワッチョイ ef63-aD55)
2019/12/13(金) 22:12:49.12ID:VulPdUq80
>>39
これで見えるかね
ttps://ideone.com/c7ILX4
このコードはswitchじゃなくDictionaryでやった
おそらくswitchのほうがこれより早くなるか最適化で同程度になるはず
switch版までは作るのめんどい

配列の境界値チェックも遅い要因なのでできるだけチェックが発生しないのが望ましい
このコードでは2文字変換したときに境界値チェックが入ってしまうので2文字変換比率が高いと性能が悪くなる
2文字変換ばかりにしてもregexよりは早い
0046デフォルトの名無しさん (ワッチョイ e752-RobM)
2019/12/13(金) 22:38:36.62ID:M1n71JyZ0
>>45
ありがとう。週末に評価してみる。

switch より Dictionary の方が処理性能がぶれない気がする。ハッシュで検索がワンショットに決まるから。switch は if カスケードを通ることで前スレで議論したパイプライン処理の影響を受けるため、処理速度がデータに強く依存する。

そんなわけでこの件の性能はコードの書き方 (チューニング含む)、データ、環境にかなり依存すると思う。

これは価値観の問題なのでみなが同じように考えるとは思わないが、正規表現で 3 - 4 倍程度の性能悪化なら、ユーザー定義関数よりチューニングより正規表現を私は採用する。
10 倍の悪化なら用途によっては考える。(パターンが複雑・多岐の場合) 正規表現は開発効率と保守性が 10 倍よいと思うので。
0047デフォルトの名無しさん (ワッチョイ 0663-aD55)
2019/12/13(金) 22:59:26.50ID:x4Cvv/aS0
>>46
switchとdicの関連は44が説明してくれてる
最適化次第でいい感じにしてくれるはずだからどっちもたいさない感じになると思う

個人的には性能差が10倍だろうが1000倍だろうが許容できるケースなら可読性を取る
今どき文字→数値変換でc-'0'なんて書かずに大体int.Parse使うのと同じ

UIに入力された氏名のローマ字変換みたいな1ユーザー1回で済むような処理に速度なんて無意味
GB単位のログデータをいじるなら数倍の差でも考慮すべき
なんなら入力データの傾向に応じてチューニングしやすい単純処理のほうが更に高性能にしやすい
0048デフォルトの名無しさん (ワッチョイ fb68-xO71)
2019/12/13(金) 23:21:38.26ID:Lnvxq+5t0
俺なら、ひらがな小文字の変換は、変換元「ちゃ」とか「ぱっ」のパターンを文字数降順で優先的に置き換えるかな。
配列で変換パターンを保持して、それにない文字パターンは先頭から徐々に削っていく。
それなら「ぱ」と「は゜」なんかも判りやすく対応できると思うよ。
0049デフォルトの名無しさん (ワッチョイ e752-RobM)
2019/12/13(金) 23:36:31.48ID:M1n71JyZ0
>>44, 45, 47
みんな有益な考察をしてくれるのでありがたい。感謝。

今まで正規表現が際立って遅いと体感することなかったけど、利用目的を想定した評価をきちんとしたことなかったので一連の議論はとても参考になりました。
0050デフォルトの名無しさん (ワッチョイ a201-VrMI)
2019/12/13(金) 23:57:37.29ID:+9OE4qBy0
オリジナルの文字列を1文字ずらしでzipして
2文字ずつ取得するイテレータでやるのがいいかなとか思ってたが
多少非効率でも↓ここの実装みたいに繰り返し変換していく方が
条件分岐が少なくて読みやすいかも

https://tools.m-bsys.com/original_tooles/romaji.php
https://tools.m-bsys.com/js/romaji.js

function hebonG(s) {
s = s.replace(/ん([aiueoy])/g, "n$1");
s = s.replace(/ん/g, "n");
s = s.replace(/n([bpm])/g, "m$1");

var hebonGMap = {
"kuぁ": "kua", "kuぃ": "kui", "kuぇ": "kue", "kuぉ": "kuo",

}

s = s.replace(/っch/g, "tch");
s = s.replace(/っ([kstnhmyrwgzdbp])/g, "$1$1");
0052デフォルトの名無しさん (ワッチョイ e22c-3siJ)
2019/12/14(土) 11:24:37.56ID:8NRAnTxB0
>>4
Ruby では、条件分岐しなくても、変換用の辞書で書ける

>>16
も、これに似ている

hash = { 'ab' => 'あ', 'xy' => 'ん' }

p re = Regexp.union( hash.keys ) #=> /ab|xy/

p "9xy9ab9xyx".gsub( re, hash )
#=> 9ん9あ9んx
0053デフォルトの名無しさん (ワッチョイ e752-RobM)
2019/12/14(土) 16:02:25.78ID:BZ704rid0
>>51
まあね。ただ、C# の Match Evaluator 付き Regex.Replace は事前コンパイルできないと思う。

ちなみにあの後何度か測り直したのだが、switch より事前コンパイルなし正規表現は 2 倍遅かった。同等ではなかった、すまん。

45 によると Dictionary & ユーザー定義文字列操作は正規表現より 3-4 倍良かったそうだから、今回のケースでは Dictionary : switch : 事前コンパイルなし正規表現 = 3-4 : 2 : 1 くらいの性能比かと考えられる。

switch はカスケードがさらに増えると内部で Dictionary 化して最適化されるから、一般論としては 正規表現は事前コンパイルすれば switch に肉薄する、あるいは、多少超えるかもしれないが switch に Dictionary 最適化がかかったらまた離されるかもって感じではないかと。

>>52
ありがとう。Match Evaluator 正規表現でハッシュ置換するのはもう四半世紀も使っているテクだけど他で見たことなかったから、Ruby の例は参考になる。
0054デフォルトの名無しさん (アウアウイー Sa1f-f14Z)
2019/12/15(日) 00:27:58.57ID:x+hGNtUDa
このスレにいる人たちで
C#を日本語で記述ってのを実際にやってる人、どれくらいいるかな
https://togetter.com/li/1441951 を読んで試してみてもいいかなと思ったんだけど
VisualStudioのコード補完が利く環境ならIME切替の手間もさほどかからない気もするし
何か致命的なデメリットとかあるんだろうか
0055デフォルトの名無しさん (アウアウウー Sa3b-xnB/)
2019/12/15(日) 02:49:23.51ID:SZPXyEbKa
>>54
ほとんどいないのでは?w
デメリットはインテリセンスとの相性の悪さに尽きるね。

どうでもいいけど「C#を日本語で記述」の是非というより識別子に日本語を使うことの是非だよね
論より証拠、やってみたらいかに非合理な試みか分かると思うよ
0060デフォルトの名無しさん (ワッチョイ a201-VrMI)
2019/12/15(日) 14:56:15.21ID:pFDibfNW0
補完はomnisharp + migemoで解決できる

他言語で変数名に日本語使うのはよくやってるけど扱う対象の用語が固まってる場合は便利
そうじゃない場合は結構厳格に命名ルールを決めないと逆にわかりにくくなったりする
0061デフォルトの名無しさん (ワッチョイ 972d-3OBQ)
2019/12/15(日) 16:18:24.21ID:QBANyAHK0
俺が英語ができなかったり、デザインパターンの理解が足りなかったりするせいだとは思うけどさ
どうしてもファイル名=ネームスペース名=クラス名=主なメソッド名になりがちなんだわ
単一責任の原則に合わせた時、ファイル名〜メソッド名まで決める簡単な基準とかあったら教えて欲しいな
0062デフォルトの名無しさん (ワイーワ2 FFfa-EbeN)
2019/12/15(日) 16:21:28.32ID:NIombkpjF
Javaやりすぎると後遺症でそうなることがあるな
0063デフォルトの名無しさん (ワッチョイ a201-VrMI)
2019/12/15(日) 16:49:35.38ID:pFDibfNW0
ファイル名=publicクラス名.csは一般的

ネームスペース名はそのクラスが属するレイヤーとかコンポーネントの名前
アーキテクチャが整理されてればあんまり迷わないと思う

クラス名=主なメソッド名は状況による
FormatterクラスにFormatメソッドがあるのは自然

Utilitiies > Formatter > Format
0064デフォルトの名無しさん (スッップ Sd02-PR0H)
2019/12/15(日) 17:58:43.69ID:LwtoOKkQd
日本語を使った感想

メリット
名称に悩まない(重要)
比較的読みやすい

デメリット
インテリセンスと相性が悪い
imeの切り替えが面倒
大文字小文字がないから名称が被りやすい
システムハンガリアン推奨

他にも何かあった気がする
0065デフォルトの名無しさん (アウアウウー Sa3b-xnB/)
2019/12/15(日) 18:23:34.11ID:yHa/r3w4a
プロパティーやフィールドはいいけど、メソッドやイベントの名前は馬鹿っぽくはなるねw
0068デフォルトの名無しさん (アウアウカー Sac7-+v21)
2019/12/15(日) 18:49:58.62ID:yNhbn0Xna
>>54
DBテーブル名/カラム名が日本語名のWindows業務システムで、
Entityクラスや画面コントロールの命名をDBそのまんまの日本語にしたら
ソースが滅茶苦茶読みやすくとても良い感じになった
以後、積極的に日本語で命名するようにしてる

自分の書き方だと、
日本語を使うのは画面項目や業務用語の名詞のみ、動詞は英語
英語とチャンポンして Update利用情報()、Is有効期限内 みたいなメソッド/ブロパティをよく作る
ローカル変数はiとかsとかtとか適当なプレフィクスをつけて無理やりcamelにする
フィールドは_始まり
とかかな
日本語で書くコメントが大幅に減らせてメリット大だと思う

デメリットは…C#関係ないけど
postgresだとテーブル名が日本語だとテーブルエクスポートが出来なくて不便、
多分ASP.NETみたいなWebシステムだと日本語名を使うのはリスク高い、
とか
0070デフォルトの名無しさん (ワッチョイ 1b84-uKDx)
2019/12/15(日) 21:16:07.17ID:eTsOryw+0
Listについて質問なのですが
BindingList<T>にはToList()では代入できないのでしょうか?
LINQの結果をToListで代入しようと思ってたのですが
型が違うとか出るんです(自作クラスによるListです)
普通のList<T>へならできるのでBindingList固有の問題かと思います
仕方なくforeachで一つずつ代入して一応目的は達成してるんですが
LINQでforeach使わず抽出しておきながら
最後に代入でforeach使うのはバカらしいなあ・・・と思いまして
どうすれば直接LINQの結果をBindingListに入れられるのでしょう?
0072デフォルトの名無しさん (ワッチョイ 1b84-DoXq)
2019/12/15(日) 22:05:28.60ID:eTsOryw+0
>>71
おお!何かわからんけど、できた
初期化したらキャストできるの?
でもdataGridViewのDataSorceプロパティに入れてたのも外れるから
もう一度入れ直さないといけないけど・・・
0073デフォルトの名無しさん (ワッチョイ 57da-boqi)
2019/12/16(月) 05:42:00.98ID:cXUrIyKd0
razor page のコーディングについてなんですが、
1ページのデータ量が多くなれば必然的にソースも長くなりますが、2000行とかになるとごちゃっとして「目に優しくない」ソースになっちゃいます。
目に優しいコーディング方法やら規約やら法則があれば教えてください。
0080デフォルトの名無しさん (アウアウイー Sa1f-f14Z)
2019/12/16(月) 21:08:24.24ID:LIM2IbDka
2010だとNuGetすら使えないんじゃ

54だけどレスありがとう>ALL
実践してる人もそこそこいるのね
テーブルやカラムを日本語で命名できるのってAccessに限らないのか・・・・
不具合の事例も知りたいけど、具体的に出てきたのは>>67くらい?
C#に閉じた範囲で使うぶんには大丈夫そうかな・・・・今度試してみるよ
0082デフォルトの名無しさん (ワッチョイ 5f01-rutQ)
2019/12/17(火) 09:59:27.04ID:GVP8bqm50
>>80
全角ピリオドとか&とかヤバそうに思えるのは使わないのが無難
date前月末とか昔から使ってます

昔々のACCESSで一部の通常全角文字が使えないとかありましたが、今はもう大丈夫と思ってます
将来的にトラブル可能性はゼロではないとしても、可読性のメリットのほうが遥かに大きい
例えば「要介護認定等基準時間」みたいなのを英字変数にするとかアホにもほどがある
0083ダーク王鍬大使 ◆SoVpkB15jY (ワッチョイ 9702-X5Um)
2019/12/17(火) 18:03:06.99ID:9VuoOKjt0
質問でふ(^^
Unityのアセットとか覗いたりするとifは使われてまふよね(^^
Switchが使われているの見たことないんでふが(^^
あれって使っちゃいけないとかってあるんでふか?(^^

ボッキング!(^^
0086デフォルトの名無しさん (スッップ Sd02-IB+3)
2019/12/17(火) 19:40:18.25ID:vR4SZ06Rd
class Hoge{
int Id
ICollection<Hoge> Hoges
}
ってクラスをEntityFramework使ってテーブルにしたんだけど無理だったりする?
Hogeテーブル(Id)と、Gehoテーブル(id、HogeId、HogeId2)後ろ二つ外部キーみたいなイメージなんだけどこういうパターンが調べても出てこない
0089デフォルトの名無しさん (ワッチョイ 17da-UiIE)
2019/12/19(木) 12:09:36.23ID:WCM9NoNV0
jsonファイルを読んで、木構造を編集して、jsonファイルに出力する
ファイルの入出力はJson.NETを使用
この場合内部のデータ構造はどう持つのがいいでしょうか?

Json.NETのJTokenを使うか、自作するか考えてますが、
標準的な手法は有りますか?
0090デフォルトの名無しさん (ドコグロ MMdf-On3P)
2019/12/19(木) 12:13:14.10ID:+iaW+uMUM
ちゃんと型を付けてデシリアライズ→加工→シリアライズする
型を付けるまでもないアドホックな処理ならそもそもC#なんか使わずに他のスクリプト言語を使う
0091デフォルトの名無しさん (ワッチョイ d75f-r9Jq)
2019/12/19(木) 18:39:36.79ID:IsJpyVgV0
質問なのですが
エンティクラスを配列に入れて使うようなことはできないでしょうか?
数が多いのでループでコードをすっきりさせたいです。

こんな感じなのを
public class test()
{
using (var context = new MyContext(connection))
{
var datalist1 = context.MyEntities1.ToList();

var datalist100 = context.MyEntities100.ToList();
}

//以下 共通処理

}


こんな感じで使いたい
string[] MyEntitiesList = new string[100];
MyEntitiesList[0] = "MyEntities1";
MyEntitiesList[1] = "MyEntities2";

MyEntitiesList[99] = "MyEntities100";

for(var i =0;i<100;i++)
{
var datalist1 = context.MyEntitiesList[i].ToList();
}
0092デフォルトの名無しさん (エムゾネ FFbf-hPjh)
2019/12/19(木) 19:11:55.40ID:aq+5Nz0cF
var datalist1 =
上書きで良いなら最後のだけ入れろ
0093デフォルトの名無しさん (ワッチョイ d75f-r9Jq)
2019/12/19(木) 19:54:28.09ID:IsJpyVgV0
>>92
すまないよくわからないのでもう少し説明をお願いしたい

>>91
こんな感じで使いたいを修正してみました。

string[] MyList = new string[100];
MyList[0] = "MyEntities1";
MyList[1] = "MyEntities2";

MyList[99] = "MyEntities100";


public class test(int i)
{
for(var i =0;i<100;i++)
{
using (var context = new MyContext(connection))
{
      var datalist1 = context.MyList[i].ToList();

     //以下 共通処理
       }
}
     }
0094デフォルトの名無しさん (ブーイモ MMdb-R6SS)
2019/12/19(木) 20:10:40.73ID:AGyCFxKvM
>>93
92 は for ブロック内部の代入式の左辺が変わってないよ、というツッコミ。

やりたいことは、抽出対象プロパティをテキストで指定してシステマティックにデータ抽出したいってことでしょ?

Dictionary やインデクサで、テキスト => 対象プロパティ or 抽出メソッド、のマップを作って、Reflection か何かで呼び出せばできそうな気がするけど、LINQ to Entities でワークするかどうかは試してみないとわからないな。
0095デフォルトの名無しさん (ワッチョイ 1752-R6SS)
2019/12/19(木) 20:25:17.21ID:qKbwpXVq0
>>93
有益な回答を得るためにもう少し説明が必要かも。

なぜ抽出対象プロパティをテキストで指定する必要があるの?
1 カラムごとに 100 回抽出しようとしているけど、まとめて 100 カラムをワンショットで抽出してから加工するのではなぜダメなの?

また環境が EF6 なのか EF Core なのかも言及した方がいいかもね。
0097デフォルトの名無しさん (ワッチョイ d75f-r9Jq)
2019/12/19(木) 20:58:33.77ID:IsJpyVgV0
そうですそうです。
データを取り出すところ以外はほぼ変わらないのに
↑のコードだけでも1テーブルの数が多い場合余裕で1万行超えてしまうので

public bool test1()
{

public bool test2()
{

〜〜〜〜
public bool test1000()
{

と用意して
test1();
test2();
〜〜
test100();


public bool test()
{


for(var i =0;i<100;i++)
{
test( iLop );
}

だけにできないかと思っています。
0099デフォルトの名無しさん (ワッチョイ 1752-R6SS)
2019/12/19(木) 21:11:26.20ID:qKbwpXVq0
抽出テーブルを動的に指定したいなら、DbSet<T> を返すプロパティが DbContext の派生クラスに定義されていると思います。

型引数 T にテキストは直接指定できないので、その DbSet<T> 型のプロパティをラップするメソッドを定義して、テキストを引数で渡してやればよいのではないでしょうか。こんな感じで。

class MyDbContext : DbContext {
DbSet<MyEntityDataModel1> MyEntity1 { get; set; }

DbSet<T> GetTable<T>(string table) where T : CommonBaseClassOfMyEntityDataModels =>
this.GetType().GetProperty(table) as IQueryable<T>;
}

// 呼び出し側
context.GetTable(“MyEntity1”).ToList();
0100デフォルトの名無しさん (ワッチョイ 1752-R6SS)
2019/12/19(木) 21:54:02.04ID:qKbwpXVq0
>>97
そういう目的ならテーブル名をテキストで指定する必要もなくて、

foreach (var prop in context.GetProperties())
{
var table = (prop as IQueryable<CommonBaseClass>).ToList();

// table に対するテスト処理
}

でよいかもしれない。

ただし下準備として、DbContext の全プロパティのデータコンテナを共通で受ける基底クラス CommonBaseClass を定義する必要がある。

似たようなことはやったことあるのだけど、このコードが手直しなく動くかどうかはわからない。

テスト処理もラムダ式のリストで用意しておいて、各テーブルと Zip() して適用するなど、LINQ を活用するとよいと思うよ。
0101デフォルトの名無しさん (ワッチョイ 17da-UiIE)
2019/12/19(木) 21:59:04.37ID:WCM9NoNV0
>>90
説明が稚拙で申し訳ないです

プログラムはフォームで、木構造の編集とはノードのコピーや削除、値の編集などをGUIで行います

GUIの理由はJSONファイルはあるスマートウォッチのカスタムフェイス用で配置などを確認するためです

自分が知りたい事はc#でよく使われる木構造を扱うライブラリです
0104デフォルトの名無しさん (ワッチョイ 1752-R6SS)
2019/12/19(木) 23:56:40.46ID:qKbwpXVq0
プロパティ DbSet<EntityModel1> MyEntity1 や DbSet<EntityModel2> MyEntity2 の型引数 EntityModel1, EntityModel2 があるとすると、その共通基底クラス BaseEntityModel を定義する必要があります。

class EntityModel1 : BaseEntityModel {} というように。BaseEntityModel は抽象クラスでも可。

そうすると、.GetProperty() の返り値の型が、DbSet<EntityModel1> だったり DbSet<EntityModel2> だったりするのだけど、これが IQueryable<BaseEntityModel> という型で共通的に受けられるということを想定しています。
0107デフォルトの名無しさん (アウアウウー Sa5b-On3P)
2019/12/20(金) 02:04:01.33ID:aZ9V3LMHa
>>101
よく分からん理屈だなあ
そのスマートウォッチの設定に限らず、世の中のアプリが扱うデータなんて大半は木構造なわけだが、
そいつらがみんな木構造を明示的に扱うようなGUIを持ってるか?
断言するが、明示的に木構造を扱うようなUIが必要なのはフォルダツリーのように再帰的な構造を扱う必要がある場合だけだ
それ以外は必ずもっと適したUIがある
0108デフォルトの名無しさん (ワッチョイ 972d-vnDE)
2019/12/20(金) 02:21:20.80ID:oj5hMkFq0
while文がネストしていた時、階層の奥から一番外側のwhileループまでブレイクするにはどうするのが正しいのでしょうか?
while(true){ while(true){
if(true) 外側のwhileまでbreak;
}}
よろしくお願いします
0110デフォルトの名無しさん (ワッチョイ 9fad-WY45)
2019/12/20(金) 03:01:50.54ID:1digpYZT0
ここでいいのか分からないんですが質問させて下さい。
macでのvisual studioないしはC#の解説の載っているサイト、もしくは操作方法などを教えてください。
つい先日3Dモデリングやゲーム開発に憧れてC#の本を手に取りました。情報系の知識はないに等しく、せいぜい中学の授業レベルです。
「やさしいC# 第3版」を手に進めようとしたのですが、当方macで作業しようとしていたため、本の内容と実際の動きが異なり、四苦八苦しています。
現状なんとかhello worldはできましたが手順が理解できておらず困惑しています。
よろしくお願いします。
0111デフォルトの名無しさん (ワッチョイ 17da-UiIE)
2019/12/20(金) 05:17:47.97ID:GjFm0fld0
>>107
漏れてて申し訳ないです

そのスマートウォッチではノードの記述順によって表示順が決まるので木構造の順番を入れ替えたい

入れ替える枝の深さもまちまちですので木構造を直接編集できた方が良いと思った訳です

また、全てを木構造で扱うのではなく、末端部は類型化されてますのでクラスにして編集の予定です
0112デフォルトの名無しさん (ワッチョイ 1752-R6SS)
2019/12/20(金) 07:23:20.70ID:NMJ3uqPu0
>>106
当初は利用目的がわからなかったため、.GetProperties() やジェネリックで対象を動的に指定して DbSet<T> 型プロパティを呼び出す方法を提案しましたが、
DbContext に MyEntiyty1, MyEntity2, ... と 100 個のテーブルがあり、個々のテーブルに対応した Test1, Test2 ... というテスト関数を地の文で定義しており、
これをシステマティックに対応させたいというのが課題の本質であるなら、実はジェネリックとか使わなくてもできます。

テスト関数 Test1 は DbSet<MyEntityDataModel1> が入力で bool が出力として bool result1 = context.MyEntiti1.Test1() or Test1(context.MyEntity1)
と記述できるように定義されていると思いますが、これを下記のように変形すればよいと思います。

1. MyDbContext を入力として bool result1 = context.Test1() or Test1(context) と記述できるようにテスト関数を書き換える
(Test1 内部の冒頭で context.MyEntity1 と対象を指定する)
2. テスト関数をラムダ式にし、地の文で定義している Test1, Test2 ... というメソッド群をリストオブジェクトにする
  List<Func<MyDbContext, bool>> TestList =
new [] { context => { context.MyEntity1 /* ... */ },
context => { context.MyEntity2 /* ... */ }, ... };
3. using ブロック内 for/foreach 文でリストオブジェクトをキックする
  using (var context = new MyDbContext())
  {
bool result[100];

    for (var i = 0; i < 100; i++)
    {
     result[i] = TestList[i](context);
    }
  }
0114デフォルトの名無しさん (オイコラミネオ MMab-7F0B)
2019/12/20(金) 19:28:07.00ID:laM9bMPJM
>>110
まずMACを捨てましょう
プログラミングはwindowsでないと、今は良くても後々面倒だと思います
私がゲーム開発してた頃はDirectX使ってました
3Dプログラミングはサインコサインタンジェント使いまくりなので数学の知識がいります
2Dは足し算引き算ぐらいなので初心者でもできると思います
画面にドット絵表示までが鬼門ですがそこ乗り越えられたら楽しい世界が待ってるのでがんばってください!
0116デフォルトの名無しさん (ワッチョイ d75f-r9Jq)
2019/12/20(金) 20:09:06.50ID:wMdfjBuG0
>>112
こんな書き方もできるのか勉強になりました。

色々調べて試してみて>>100
をベースにして思ってたように動かせました。
コードすっきりになりました!ありがとうございます。
0117デフォルトの名無しさん (ワッチョイ b763-CWbB)
2019/12/20(金) 21:29:38.47ID:qHTdS2+z0
そもそもweb周りなんかだとはMacかなり多いのにプログラミングはWinで!なんて発想はどこから来るんでしょうか

2Dであろうと三角関数くらいはガンガン使います
0121デフォルトの名無しさん (ワッチョイ b763-CWbB)
2019/12/20(金) 22:31:48.04ID:qHTdS2+z0
>>120
まじか
同じ世界に住んでるようで違う世界なんだな
金融医療なんかと比べりゃ薄給かもしれんが世間の平均以上はあるでしょ
そら平均ないとこもいっぱいあるし中間搾取が多い部類だとは思うが…
日本は世界的に見てweb系、というかプログラマ自体が安いってのはあるけどそれでも他業種に比べりゃ全然マシだと思うよ
0123デフォルトの名無しさん (オイコラミネオ MMab-7F0B)
2019/12/20(金) 23:56:36.17ID:laM9bMPJM
webは金になるよ
プログラマーの花形だから
求められるスキルは最下位だけども
組み込みプログラマーとゲームプログラマーが最上位
前者はハードの知識も求められるし、後者はプログラムの真髄まで知っとかないといけない
ゲームプログラマー経験してたら、他の分野のプログラマーの仕事はほんと簡単だもん
若い時はムチャやって良かったと心の底から思う
0125デフォルトの名無しさん (ワッチョイ 9fad-2sPR)
2019/12/21(土) 01:32:51.93ID:Mk9xcjQY0
110の者です。反応してくださった方々ありがとうございます。

ひとまずUnityのガイドで勉強してみます。

C#を勉強するなら、現状手元にはmac book airしかないためWindowsを入れるしかないみたいですね…(スペックギリギリですが…)

一応理系なので三角関数自体は大丈夫です。

ちなみにプログラミングの初心者がまず勉強すべきもの、もしくは買うべき本などありませんでしょうか?
場違いの質問で申し訳ありませんが、教えていただけると嬉しいです。
0127デフォルトの名無しさん (アウアウウー Sa5b-kT4h)
2019/12/21(土) 02:36:40.50ID:zyAIfpOSa
ゲームは知らんけど、組み込みはほんとピンキリだよw
学者みたいに何でも知ってる人もいるけど、狭い範囲のことしか知らないくせに
コード書かせたら構造化以前なんて人もゴロゴロいる

web系は仕事内容は良く知らんけどストレス度は高そうだよねw
なんか俺は最先端のとんがったことやってるんだぞ的な自己陶酔系の人が多いように感じるのは、
そうでも思わないとたぶんやってられないんだろうなと想像
0128デフォルトの名無しさん (ワッチョイ 9fad-YiuP)
2019/12/21(土) 05:00:47.48ID:biYUElkB0
>>125
Unityならmacで十分だよ

Windowsでないと後々面倒というのは、会社で使うのはWindowsがほとんどだから
もし仕事にするなら、今から使い慣れてた方がいいということ

開発行為自体だと、unix系のアプリケーションならmacの方が色々揃ってるからやりやすいし
Windowsのアプリケーションなら、当然Windowsがやりやすいよ
0130デフォルトの名無しさん (ワッチョイ 9f52-1WEo)
2019/12/21(土) 09:37:34.69ID:k+w4ikT00
>>123
2Dなら足し算引き算だけなんていってる人が"プログラムの真髄"なんて言っても、自分がやったことある範囲の知識がすべてなんだなって感じで説得力ゼロだぞw
0132デフォルトの名無しさん (ワッチョイ 7707-7F0B)
2019/12/21(土) 12:58:47.60ID:jr0+pgES0
プログラムかじった事ない人にいきなり三角関数必要とか言って作れると思う?
3Dは数学の知識が最低減ないと作れないけど、2Dは三角関数知らなくても作れる
分かったような口聞くな
0134デフォルトの名無しさん (ワッチョイ 9f01-pdcM)
2019/12/21(土) 13:17:44.87ID:tKqa0Mcd0
>>132
>プログラムかじった事ない人にいきなり三角関数必要とか言って作れると思う?

この文章だけで頭の悪さがよく分かる
自然言語でまともな文章書けないやつに
まともなプログラム書けるやつはいない
0135デフォルトの名無しさん (スッップ Sdbf-CWbB)
2019/12/21(土) 13:31:19.22ID:B9cNmAcsd
三角関数なしに2Dゲームを作ることはできる
数学知識なしに3Dゲームも作れる
流石に加減乗除くらいは必要だが
無くても何かは作れると何を作るにも不要かどうかは別の話
0137デフォルトの名無しさん (アウアウウー Sa5b-kT4h)
2019/12/21(土) 17:06:21.58ID:ToibKenqa
下らない話はそのぐらいにしておいたら?
中学生じみてるよw
0142デフォルトの名無しさん (ワッチョイ d72f-+Tiu)
2019/12/21(土) 21:45:23.13ID:/91O1xjY0
C#でコルモゴロフスミノフ検定した上で、単回帰分析とかするライブラリってありますか?
統計解析するならテキストファイルにデータ書き出して、
PythonとかRにわたすほうがいい?
0145デフォルトの名無しさん (ワッチョイ 9f24-prDO)
2019/12/22(日) 00:25:07.44ID:7hF/cDg80
byte[]として受け取ったmp3をファイル化せずにそのままmp3tagの読み書きを行えるライブラリはないでしょうか?
出来る限り通信のやり取りだけで済ませたいため、受け取ったmp3バイナリをそのまま処理して受け流したいと考えています。
taglibは試してみましたが、FileStreamとして渡さないと上手く機能しないようでした
0146デフォルトの名無しさん (ワッチョイ 7790-MEwc)
2019/12/22(日) 00:38:07.26ID:GX5OjjKF0
Streamクラスとして抽象化されてるんじゃないの?
taglibは入力にStreamを受け入れんじゃなくて、FileStreamというより具象的な入力を受け入れるような馬鹿な設計になってるの?

byte[]をMemoryStreamでラップして渡せないの?
0148デフォルトの名無しさん (アウアウウー Sa5b-kT4h)
2019/12/22(日) 02:10:14.34ID:LPMS/GLqa
ビットマップを編集するライブラリがFileStrem前提になってたら馬鹿設計だけど
Exifを編集するライブラリがそうでも別に馬鹿とは思わないなあ
0149デフォルトの名無しさん (ワッチョイ 7790-MEwc)
2019/12/22(日) 04:41:32.86ID:GX5OjjKF0
まじで言ってる?
例えば、カメラで撮影したローカルにあるJPEG画像を投稿サイトにアップロードする機能つくるとき、EXIFを消してアップロードしたいありがちな機能。

MemoryStreamを渡せれば、元のファイル変更せずにメモリ上で修正してアップロードして破棄できる。
同じことをやるにはFileStreamだと一々コピーしないといけない。
0151デフォルトの名無しさん (ワッチョイ f742-prDO)
2019/12/22(日) 08:25:01.65ID:/NGpR+eY0
TaglibSharpの.net Standard版をUWPから使っているが
TagLib.File.IFileAbstractionってのを使ってストリームを操作している
自分でこのインターフェースを実装すれば割と簡単に行けると思うよ
実装してクラスをTagLib.File.Createに渡せば問題ない
0152デフォルトの名無しさん (アウアウウー Sa5b-kT4h)
2019/12/22(日) 12:48:45.77ID:d/zyo53Ma
>>149
それ、別にFileStreamを受け取ってStreamを吐く仕様で何も困らないのでは?
0153デフォルトの名無しさん (ワッチョイ 9f24-prDO)
2019/12/22(日) 13:18:15.55ID:7hF/cDg80
>>146>>151
ありがとうございます。
IFileAbstractionを実装したクラスでCreateしていましたが、CloseStreamで内部のMemoryStreamをDisposeしてしまっていたため、挙動がおかしくなっていただけでした
TagLib.File.Save()を行うことで初めて内部のstreamにTag情報が書き込まれ、同時にCloseStreamも呼ばれるためそこでは内部のstreamを閉じずに自前の後処理を行ってから閉じることで希望の動作になりました
0154デフォルトの名無しさん (ワッチョイ 5701-EwPn)
2019/12/22(日) 16:13:05.02ID:thbQEK090
ヽ(・ω・)/ズコー
まあ、バグ調べてて「俺ってバカ?」って思うことはよくあることだ
バグ作り込む気は全く無いのに、毎度あるのは何でか不思議でならない
(まあ最近は熟知してない言語で作ることが増えてきたのもあるが、COBOLごときでも一緒だったな…)
0155デフォルトの名無しさん (ワッチョイ d75f-JuL9)
2019/12/22(日) 22:16:50.41ID:TCqgMSVE0
ライブラリを作ろうかと思うのですが
あるクラスをライブラリ内ではインスタンス化できるようにしたいけど
ライブラリを使う人はインスタンス化できないようにする
というようなことは可能ですか?
参考になるサイトなどありますか?

クラスのプロパティは基本的にすべて読み出しだけ可能にする予定です。
0157デフォルトの名無しさん (ワッチョイ 7790-MEwc)
2019/12/22(日) 22:28:00.73ID:t9cAONDx0
>>152
じゃあさあ。ネットワークから受け取った画像をファイルに保存せずに、そのまんまEXIF修正して別のサーバーに送り返す場合、どうするの?

と、使う方次第で色んな用件があるわけ。

実装コスト増えるならまだしも、今回のケースでは読み書きできてシークできるStreamであれば良さそうなのに、それをFileStreamに限定するの意味がわからない。
0158デフォルトの名無しさん (ワッチョイ 972d-vnDE)
2019/12/22(日) 22:37:29.12ID:b8EKEEl60
この動画の人がVisual StudioでやっているAuthenticatonをオンにする設定は、dotnetコマンドではどうやるのですか?
https://youtu.be/RUZLIh4Vo20?t=63
0160デフォルトの名無しさん (ワッチョイ 7f0d-9COd)
2019/12/23(月) 02:14:36.96ID:CbUt8X2i0
c#からpythonのmatplotlibを呼んでみたらグラフ描画に10秒くらいかかった・・・
めんどくさい数値演算とかをPythonライブラリに丸投げしたかったけど厳しい
グラフ描画はwinformでやるにしても描画するための連続データを戻り値として受け渡しするのなぁ
0164デフォルトの名無しさん (ラクッペ MMdb-uJpR)
2019/12/23(月) 09:06:54.33ID:5ISBodU5M
>>163
食ってかかるなよ

>>160
ふーん。日記ならママにでも聞かせとけよ
0165デフォルトの名無しさん (ワッチョイ 9750-+Tiu)
2019/12/23(月) 14:12:00.92ID:CVji7Zdt0
自分で使う用のWinデスクトップアプリケーションを作ってみたいのですが
VScodeにC#の拡張をインストールしたところ、".net Coreが無い"というメッセージが出ました
.net frameworkを後から入れるつもりだったのですが
現在はframeworkではなくCoreを使用するのでしょうか?

軽くしらべたところ、Coreはサーバサイ用、frameworkはデスクトプ用っぽいんですが
Coreでデスクトップアプリを作成するチュートリアルもあるようでした
0166デフォルトの名無しさん (ワッチョイ 1788-CWbB)
2019/12/23(月) 14:29:00.57ID:FZMFlrDL0
coreはサーバー用ではないよ
今ならデスクトップアプリでもcoreで作るけど別にframework使えないってわけでもない
古い環境への配慮とか考えなくていいならcoreでいいんじゃない?
0168デフォルトの名無しさん (ワッチョイ 5702-Rp4x)
2019/12/23(月) 15:38:13.00ID:Wyd1VJ4y0
WebBrowserでカスタムHeaderの送信とResponse Headerの取得ができません
.net core 3.1を使っています。バグでしょうか?
0183ャfフォルトの名末ウしさん (ワッチョイ f761-prDO)
2019/12/24(火) 13:55:17.48ID:rY4O3lLw0
流れ読まずに。

private int hoge(){
 using(/* なんか入る */){
  /* ひたすら処理 */
  return nanka;
 }
}

こういうreturnの書き方は一般的なのでしょうか?
usingの中カッコの外にreturn文がないと値の返し損ねがないか心配なのですが
VisualStudioの警告は出ないしアリなのかナシなのか諸兄のご意見をいただきたく。
0184デフォルトの名無しさん (ドコグロ MMdf-On3P)
2019/12/24(火) 14:15:20.75ID:4hGbK3LLM
>>183
普通にアリ
メソッドから戻る直前にDisposeが実行される
なお、C#8以降では以下のように書けるため、従来のusingブロックはほとんどの場合必要なくなった
using var x = new Hoge("Arial", 10.0f);
x.Foo();
// メソッドを抜けるときに自動的に x.Dispose が呼ばれる
0186デフォルトの名無しさん (スププ Sdbf-FdL6)
2019/12/24(火) 16:17:46.84ID:pJ4JfZbNd
>>181,179
ありがとう。DIコンテナにUnityを使ってて、App.xaml の RegisterTypes で RegisterSingleton で登録する共用クラスがあるんだけど、このコンストラクタに引数を渡したいです
UnityContainerの中で生成するタイミングがわからなくて渡し方がわかりません
0193デフォルトの名無しさん (ワッチョイ f12d-vQnI)
2019/12/26(木) 03:51:48.92ID:bzjIw0U90
作ったプログラムをUbuntuのバックグラウンドで動かし続けたいんだけどさあ
nohup dotnet run &
だと、動かないのかすぐ終わっちゃうのかわかんないけどダメだったぜ
どうすればよかんべえな?
0194デフォルトの名無しさん (ワイーワ2 FF7a-v1fK)
2019/12/26(木) 09:37:04.58ID:qmNoWNu8F
>>192
既にライブラリじゃないですね
0198デフォルトの名無しさん (ワッチョイ 082c-avnG)
2019/12/27(金) 23:38:38.82ID:rZaePzzs0
頻出パターンだと思うんだけど、
ツリービューとかデータグリッドを選択したら詳細を表示する画面で、詳細部分のリジョンにナビゲーションで登録する時って、
詳細のビューのコードビハインドに書くしかないのかね。
サンプルがそうなってるけど、コードビハインドに書くのに抵抗がある
0199デフォルトの名無しさん (アウアウウー Sa83-BCWm)
2019/12/28(土) 00:09:08.65ID:L8M+Vbvra
React等の仮想DOMを使ったモダンなMVVM系Webフレームワークでは、コンポーネントとしてVMを階層化する。
この場合、親VMが子VMとしてツリービューVMと詳細VMを持つ形になるだろう。
そして、ツリービューの選択項目が変更されたらツリービューVMがそれを受けて親VMに通知し、親VMが詳細VMの表示対象データのプロパティを更新する。
WPFの原始的なMVVMではそのへんはあまり洗練されていないし、そもそもWPF自体誰も使ってないから特にベストプラクティスのようなものも無い。
WebのMVVMを真似するのもコードビハインドを書くのも君の自由だ。
0202デフォルトの名無しさん (ワッチョイ 082c-avnG)
2019/12/28(土) 11:25:47.63ID:aAyiCa3V0
>>200
ごめんなさい。モジュールでレジスタービューウィズリジョンじゃなくて、レジスターフォーナビゲーションを使って登録するとこのことです
公式サンプルのベーシックリジョンナビゲーションの書き方をみての質問です
0205デフォルトの名無しさん (ワッチョイ 4624-K0SF)
2019/12/29(日) 16:58:05.30ID:Jl+XQSo+0
JavaScriptによって書き換えられた後のhtmlを取得する方法ってWebBrowserでInvokeScriptなどを使用する以外にはないでしょうか?
出来ればHttpClientやWebClientで済ませたいのですが
0208デフォルトの名無しさん (ワッチョイ 4624-K0SF)
2019/12/30(月) 09:57:04.44ID:yg3zWj/W0
WebBrowserクラスやヘッドレスブラウザを使うところまで行ってしまうとC#で作る利点が薄れてしまってChrome拡張で作るか、となってしまうんですよね・・・
一般的な行数のスクリプトであればソースを見てC#のコードに置き換えるということで今まで解決してきたのですが、そうはいかない量のコードだとやはりブラウザに頼る他ないですよね
0209デフォルトの名無しさん (ワッチョイ d81b-hoej)
2019/12/30(月) 13:48:14.76ID:sCWLu8Vm0
コントロールに適用したいStyleがあるので、Generic.xaml を作成して、
App.xaml で ResourceDictionary.Merge Dictionaryしました。その中で自作のコンバータークラスを使いたくて定義したのですが、どうしても認識してくれません。ビルドは通るのですが、実行時に見つからないエラーがでます(xaml parse exeption)
同じ定義を App.xaml の中で、Generic.xamlをマージする前に書くと、何故か実行時にエラーも出ませんし、ちゃんと動きます。
Generic.xaml の中でコンバーターを定義することは出来ないのでしょうか
0211デフォルトの名無しさん (ラクペッ MMb7-f88z)
2019/12/30(月) 14:36:52.54ID:Nw7Rp9O2M
メンバーはこっちも同じだから直に荒れる
0215デフォルトの名無しさん (ワッチョイ 0c01-PaHz)
2019/12/30(月) 20:45:49.11ID:w8cwRlld0
>>209
>Generic.xaml の中でコンバーターを定義することは出来ないのでしょうか

Generic.xamlの中では定義できないんじゃないかと思うなら
自分で違う任意のxamlを定義してApp.xamlでMergedDictionariesして
使えるかどうかで切り分けたらいいんじゃない?
0217デフォルトの名無しさん (ワッチョイ d81b-hoej)
2019/12/30(月) 20:57:31.58ID:sCWLu8Vm0
>>215,216
そうかコンバーターって静的でもインスタンスが必要だからリソースとしては定義できないってことですかね…。同じことしてる人がいるもんですね。ありがとうございます。
0220デフォルトの名無しさん (ワッチョイ d81b-hoej)
2019/12/30(月) 21:22:58.79ID:sCWLu8Vm0
>>218
言葉足らずですみません
質問にも書いている通り、Generic.xaml の外側に書けば view でも App.xaml でも定義出来ることは確認してるんです。ただ generic.xaml の中でしか必要ないのであれば、generic.xaml の中に書けないかというのが質問でした
0223デフォルトの名無しさん (ワッチョイ d81b-hoej)
2019/12/30(月) 23:48:06.69ID:sCWLu8Vm0
>>221,222
あーなるほど。すみませんいただいた回答の記述を読み違えました。これ参考にしてやってみます
MarkupExtension を継承するのはやったことないので、これも調べてやってみます。ありがとう
0226デフォルトの名無しさん (ワッチョイ 0245-E95m)
2020/01/04(土) 17:30:49.79ID:lajN/sCS0
デザインパターン使う場合のクラス名とかってそのパターンに則ったクラス名付けた方がいいよね?
StrategyパターンならContextとかXXStrategyとか

Contextはふわっとしててイマイチな気がするんだけどXXContextにしたほうがいいんだろうか
0230デフォルトの名無しさん (ワッチョイ 2252-rouQ)
2020/01/04(土) 23:23:49.91ID:TMQyheu90
>>228
まずは細かいところに引っ掛からず自分の分かりやすい命名で学習を進めればいいよ。
慣れてきたら標準的ライブラリや参考書等を真似たりして自然に落ち着くとこに落ち着くと思う。
0231デフォルトの名無しさん (アウアウウー Saa5-pIXJ)
2020/01/05(日) 18:41:51.12ID:k4uQmGiya
関数名を文字列で指定して実行する方法ってないですか?
テスト用の関数が何個もあってif文による分岐とか面倒過ぎます。
0233デフォルトの名無しさん (アウアウウー Saa5-pIXJ)
2020/01/05(日) 18:46:16.34ID:k4uQmGiya
>>232
うわぁ知らなかった
つーかググってくださいだろ
0236デフォルトの名無しさん (アウアウウー Saa5-pIXJ)
2020/01/05(日) 18:54:40.52ID:k4uQmGiya
>>235
すいません本当は感謝してます
それにしてもこのスレ、入門っていう割には
ifとかforの質問がなくて何か上級者ぶってる気がします
DOMとかMVVMとかそんな文法知らないんですけど
0237デフォルトの名無しさん (ワッチョイ 2252-rouQ)
2020/01/05(日) 19:25:28.08ID:y+bEWN5I0
>>236
初心者と言ったってそれが指す範囲に幅があるし、初心者なんだから自分の知らないことが出てきて当たり前だろう。
いちいちつまらないケチを付けないと気がすまないタイプなのか?
0244デフォルトの名無しさん (ワッチョイ 422c-RM0q)
2020/01/05(日) 23:00:41.14ID:BPHXVrhY0
初心者は馬鹿だから、勉強項目のレベルが分かってない!

初心者のくせに、リフレクションみたいな黒魔術・メタプログラミングをやりたがるw
自分がやりたい機能の、勉強レベルが分かってないから、
難しい事でも、それが分からずにやりたがる

勉強レベル
1. 初心者用の本
2. Effective 何々、逆引きレシピ本
3. フレームワーク・テスト技法
4. メタプログラミング(黒魔術、動的定義)
0245デフォルトの名無しさん (オッペケ Srf1-Fu3+)
2020/01/05(日) 23:35:24.29ID:VZarSSAfr
文字列で指定した関数を実行したいということは数十年前から初心者にはありがちな願望だが
それはダメなやり方とされている

約40年前の自分も同じ願望を持った
0250デフォルトの名無しさん (ワッチョイ c263-rB7U)
2020/01/06(月) 00:39:27.05ID:z7GoHnb80
>>249
https://docs.microsoft.com/ja-jp/dotnet/api/system.environment.exit?view=netframework-4.8
@No__t-0 パラメーターの場合は、0以外の数値を使用してエラーを示します。 アプリケーションでは、独自のエラーコードを列挙で定義し、シナリオに基づいて適切なエラーコードを返すことができます。
たとえば、必要なファイルが存在しないことを示す値1を返し、ファイルの形式が正しくないことを示す値2を返します。 Windows オペレーティングシステムで使用される終了コードの一覧については、Windows のマニュアルの「システムエラーコード」を参照してください。

https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes?redirectedfrom=MSDN
0251デフォルトの名無しさん (オッペケ Srf1-71dz)
2020/01/06(月) 01:45:05.98ID:D/5LCEUkr
>>250
エラー以外が 0 っていう定義は、C(Unix)でもそうだからわかるけど、その0を定義してる、
Cにおける stdlib.h の EXIT_SUCCESS のようなものは無いの?
あと、「@No_t-0パラメータ」ってなんでしょう?
ググったり、手元にあるオライリーの「プログラミングC#」の索引を調べてみましたが、それらしい情報が出てきません
0252デフォルトの名無しさん (ワッチョイ c263-rB7U)
2020/01/06(月) 01:51:03.87ID:z7GoHnb80
>>251
>Cにおける stdlib.h の EXIT_SUCCESS のようなものは無いの?
ありません
何かエラーで意味ある情報出したいのなら定義済みの例外投げるのがいいんじゃないかな
それでも成功したときは情報出せないけど

>あと、「@No_t-0パラメータ」ってなんでしょう?
英語版見た感じ機械翻訳のミスっぽい
https://docs.microsoft.com/en-us/dotnet/api/system.environment.exit?view=netframework-4.8
0253デフォルトの名無しさん (オッペケ Srf1-71dz)
2020/01/06(月) 01:58:33.40ID:D/5LCEUkr
>>252
>>239
>コンソールアプリで、終了コードにマジックナンバー書きたくないのですが

という前提なので例外は問題の解決になりません

標準の定義が存在しないことが断定できれば、独自定義を持つ理由にできるのですが
0254デフォルトの名無しさん (アウアウウー Saa5-CnQr)
2020/01/06(月) 02:10:48.41ID:UfUfyfRwa
なんか日本人的だなあw

標準の定義が存在しようがしまいが終了コードの意味なんて
使う人が分かればそれでいいでしょ。

そもそも今時そんなもの使う人いるのかなw
いないと思うよ。だって前時代的な過去の遺物だから
0256デフォルトの名無しさん (ワッチョイ e179-E95m)
2020/01/06(月) 05:58:28.75ID:YSZbxSNB0
例外と終了コードの対応Dictionaryを作って
最上層で例外をキャッチした場合はそれを終了コードにすればいい

そもそも特殊な場面を除くとしたときC#使うような環境で
終了コードなんて 0 or not 0 以外で使う奴いるのか?
エラーメッセージを直接ログに吐くのが主流だろう
0257デフォルトの名無しさん (ワッチョイ 4602-71dz)
2020/01/06(月) 07:45:31.89ID:i8hCm9on0
いや、コンソールアプリの終了コードだから、最初から最上層のはなししかしてないんです。

>そもそも特殊な場面を除くとしたときC#使うような環境で
>終了コードなんて 0 or not 0 以外で使う奴いるのか?

言ってることは理解できるし、自分もそう思うけど、

それは

Environment .exit 0;

という記述の妥当性は場数を踏まないと理解できない、ってことじゃね?
場数を踏まないと理解できないようなコードを最上層には置きたくない
0260デフォルトの名無しさん (ワッチョイ be7c-lxBK)
2020/01/06(月) 11:05:38.74ID:jysEDvVa0
もともとの質問としては終了コードのシステム定義がないのかって話でしょ
.NETの基本クラスライブラリでは定義されてない、で終わる話
じゃあどうするかとかは別の話
0266デフォルトの名無しさん (ラクッペ MM85-QvtZ)
2020/01/06(月) 11:27:38.34ID:fbdBGVpXM
新春ガイジ品評会
0267デフォルトの名無しさん (ワッチョイ d188-IJNu)
2020/01/06(月) 11:28:48.24ID:jV/UXfSz0
enumなりconstなりstatic readonlyなりで定義
外部に公開する必要がある情報ならreadme等に記載
OSSならコード見ろ
仮に標準で定義されていても各数値が何を意味しているのか?はドキュメントかコードを参照するしかないじゃん
0268デフォルトの名無しさん (ワッチョイ 4602-71dz)
2020/01/06(月) 11:50:48.98ID:i8hCm9on0
>>264
>>261

>>267
数値の意味と、それがどこで定義されているかは別の問題では?

標準で定義されていれば、例え規格が変わっても、対応した処理系でコンパイルしなおせば同じコードがそのまま使えるけれど、ローカルで定義していたらそうはいかない
0269デフォルトの名無しさん (ワッチョイ 2252-rouQ)
2020/01/06(月) 12:02:59.68ID:vrofCXbf0
>>268
そもそもerrno.hが終了コードを表しているというのが勘違いだぞ。あれはシステムコールや標準ライブラリ関数の戻り値の定義であって、あくまでもCのコードの中の話だ。
0272デフォルトの名無しさん (ワッチョイ 814f-olRn)
2020/01/06(月) 13:03:54.64ID:HSlK76Pq0
初心者のつまらん質問で申し訳ありません
メッセージボックスを親フォームの中央に表示させたくて、方法を探したところ
Win32APIを使った方法を見つけましたが、結構コード量が多くて面倒くさそう・・・
これなら自前のモーダルフォームを作って親フォームの位置取得して表示させる方が簡単ですかね?
皆さんはどうされてます?
0281デフォルトの名無しさん (ワッチョイ 41e8-E95m)
2020/01/06(月) 17:00:25.20ID:/c/Em2OW0
>>272
APIをラップしたクラスを作ることをお勧めする

自分でFormから作ってもいいけど文字列に合わせてウィンドウサイズを調整したり
パラメータに合わせてアイコンとかボタンを作ったりする方が面倒だと思うよ
0282デフォルトの名無しさん (オイコラミネオ MM49-Ivq/)
2020/01/06(月) 17:11:39.14ID:D3635f2eM
>>272
そんなの気にしてたの最初の頃だけだったな〜
自前でフォーム作ってもアイコンとかほぼ互換にするには手間かかる
APIでも大して変わらんのでは

他でも使い回すなら手間かかるかではなく、使い勝手がいいように組める方優先
0283デフォルトの名無しさん (ワッチョイ 42ad-f3Fz)
2020/01/06(月) 18:34:31.97ID:HrPzlOWn0
おそらくエラー定義に拘ってる人は
元々自分で定義したらC使いの上司に
「EXIT_SUCEESSとかあるだろが二重定義するなゴラァ!」
とレビューで怒られて
「自分で定義してね♡」って書いてある公式ドキュメントが欲しいんだと思う
上司を納得させられる
0287デフォルトの名無しさん (アウアウウー Saa5-CnQr)
2020/01/06(月) 19:09:21.84ID:vUR1r/Pua
>>272
自分なら自作するというかしてました。
標準のMessageBoxは使い辛いところが多いので。

(1) モーダルじゃない表示も可能
(2) カウントダウンして自動的に消える
(3) 背景だけ半透明表示可能

ついでにこんな機能付きのを作ったらどうでしょうか。
0288デフォルトの名無しさん (ワッチョイ 4602-71dz)
2020/01/06(月) 19:12:29.35ID:i8hCm9on0
>>284
だから、処理系で定義されてるのとローカルで定義されてるのじゃ根本的に違うよ
ローカルで定義してて変更したらソースコードのリビジョンが変わる
処理系の変更だけならビルド番号が変わるだけ
0291デフォルトの名無しさん (ワッチョイ 42ad-f3Fz)
2020/01/06(月) 19:43:24.53ID:HrPzlOWn0
>>286
システムエラーコードとアプリケーションエラーコードがごっちゃに書いてあるのが混乱の元な気がしてきた

"In your application, you can define your own error codes in an enumeration, and return the appropriate error code based on the scenario"
canが弱く見えるのでは
「C#はヘッダファイルとかないから各自自分で定義するように!」くらいあると

そっから飛べる先に
https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes--0-499-
とかがあってさも定数があるかのように見えるのも混乱のもとかと

まあ"use a non-zero number to indicate an error"と書くなら最低ゼロくらいは定義しといてくれというのはわからんでもない
0302デフォルトの名無しさん (ワッチョイ 7197-IH4P)
2020/01/06(月) 23:14:02.24ID:v3NiRowX0
>>301
地道に宣言するにしても、Dictionaryに地道に値を入れていく以外に簡単に生成できる方法がある
(テキストから読み込むとか、keyとvalueが同一でよい)のなら、一旦Dictionaryを作って
そこからC#のコードを文字列処理で生成してソースコードにコピペとかすると楽だよ。
C#コードの生成はもちろんC#以外の言語でもなんでもいいから慣れてる言語でやればいいし。
0305デフォルトの名無しさん (ワッチョイ 422c-RM0q)
2020/01/06(月) 23:58:53.91ID:jMeFAWx00
どうせ戻り値は、4バイト整数だろ

signed int, -2,147,483,648 〜 2,147,483,647
unsigned int, 0 〜 4,294,967,295

システムが、0 〜 1,073,741,823
カスタムが、1,073,741,824 〜 2,147,483,647
の範囲を使うとして、

ひとまずカスタムは、1,073,742,000 〜 1,610,612,000 の範囲を使っておけばよい
0306デフォルトの名無しさん (ワッチョイ e563-IJNu)
2020/01/07(火) 00:06:26.34ID:W22n+t+k0
処理系が正確に何指してるか不明ではあるが.NETのバージョンとかコンパイラのバージョンだったとして…
それ更新したら普通バージョン上げないの?
ソースコード変わってないからビルド番号しか上げない、みたいな運用聞いたこと無いけど…
乗っかってる大元を変えるって結構大きな変更だからコードの変更が一切不要でも念の為リビジョンなりバージョンなり上げない?
0307デフォルトの名無しさん (ワッチョイ 4224-UAPS)
2020/01/07(火) 08:52:49.60ID:xOWyMMFH0
htmlファイルをディスク上に作らずに、こちらのプログラム上で仮想生成したhtmlをWindows規定のブラウザで開かせる方法ってないでしょうか?
ウインドウメッセージなどでデータを送りつける等の方法があれば良いのですが
0310デフォルトの名無しさん (アウウィフ FFa5-p4uH)
2020/01/07(火) 16:12:15.29ID:2Dq0zKSWF
おまいら printf の戻り値はちゃんと毎回確認するんだぞ判ったか
0311デフォルトの名無しさん (ワッチョイ 9901-8/Ff)
2020/01/07(火) 17:16:35.91ID:PuPIfAOU0
お断りします。
0312デフォルトの名無しさん (ワッチョイ e5ae-W/+2)
2020/01/07(火) 17:27:42.26ID:Tv0SPXaP0
Excelによる計算をマスターとした場合、
C#で浮動小数点の誤差まで再現するには、どうしたら良いのでしょうか?
floatやdoubleやdecimalをそのまま使うだけでは、完全一致はしないですよね?
0315デフォルトの名無しさん (ワッチョイ e5ae-W/+2)
2020/01/07(火) 18:25:35.96ID:Tv0SPXaP0
>>313
はい、Excelの計算誤差も含めてC#で再現したいのです
Excel固有の関数の再現では無く、除算乗算程度です

>>314
Excelは簡単な計算でも誤差が出る時があるのは理解していますが、それでもExceによる計算結果lを「神様」として完全一致させるのが理想です
https://docs.microsoft.com/ja-jp/office/troubleshoot/excel/floating-point-arithmetic-inaccurate-result
https://answers.microsoft.com/ja-jp/office/forum/office_2013_release-excel/excel%E3%81%AE%E5%8D%98%E7%B4%94%E3%81%AA%E8%A8%88/e5421c34-8053-4132-a0a6-14729e505376
0316デフォルトの名無しさん (ワッチョイ d188-IJNu)
2020/01/07(火) 18:30:52.77ID:RhWBTAz60
内部でexcel操作するライブラリを使って実際にexcelに計算させてその結果をもらう
って方式じゃだめかな?
何にせよ絶対関わりたくない要求仕様だなw
0318デフォルトの名無しさん (ワッチョイ e5ae-W/+2)
2020/01/07(火) 18:59:31.78ID:Tv0SPXaP0
>>316
ExcelライブラリやEEPlusが使えれば良かったのですが、今回はライセンスの関係もあってExcelが無いPCで動作させる必要があるので、Excelを裏で動かす様なことは出来ないのです。

>>317
15桁処理なので、やるとしたら計算毎に桁数をカウントするとかになりそうですかね・・・。
C#で普通に計算した方が精度も出るので、すっごく無駄なことをやることになりますね。
0321デフォルトの名無しさん (アウアウウー Saa5-pIXJ)
2020/01/07(火) 20:18:05.17ID:cpbbTuYka
これはC#じゃなくて、CやC++に言えることかもしれませんが、
List<int> test=new List<int>();
for(int i=0; i<100000000; i++)
test.Add(123456789);
このような膨大な要素のリストを作った場合でも、
プログラムが動くのは、変数はメモリではなくHDD領域に格納されているからでしょうか?
メモリに全て格納すれば、メモリ不足でプログラムは動きませんよね?
0322デフォルトの名無しさん (アウアウウー Saa5-CnQr)
2020/01/07(火) 20:25:58.17ID:IHn/p+8Ca
>>315
8086の時代じゃあるまいし、30年前だって実数計算なんかHW処理だよw
つまり、CPUさえ同一なら(変なことをやってないかぎり)VBだろうがExcelだろうがC#だろうが計算結果は同じになるはず。

現に>>315の計算C#でやっても同じ答えが出るよ
0325デフォルトの名無しさん (ワッチョイ adda-eJH9)
2020/01/07(火) 20:28:50.54ID:23MsATD60
>>321
10000000/1024/1024=95.36
95.36*4=381MB
まぁ今のPCスペックじゃ余裕じゃね。

ある時、テンプレートで消費されるメモリの方が格納データより多くなる
どこに限界があるか自分で計ってみなされ
0326デフォルトの名無しさん (ワッチョイ 2252-rouQ)
2020/01/07(火) 20:33:16.30ID:YKIaA9us0
>>322
C++でアプリ作ったときは浮動小数点制御ワードの設定次第で、演算の精度や丸め方向が変わって演算結果に差異が出たけど、C#やexcelではどうなんだろう? 同じ条件で決めうちなのかな?
0327デフォルトの名無しさん (ワッチョイ 5f9b-Eg5K)
2020/01/08(水) 16:03:59.03ID:Sre2vN3k0
google spreadsheet とか ms office online とか 360 でも再現されるのかな
0328デフォルトの名無しさん (ワッチョイ 5f7d-tgR8)
2020/01/10(金) 02:04:40.36ID:aPGnNlsf0
非同期メソッド(async/await)の必要性について教えてください。

Task.RunやTask.Factory.StartNewメソッドを使えば、タスクを別スレッドで生成・実行できると思います。
またこれらのメソッドによる戻り値を呼び出し側で使いたければ、Task<TResult>クラスのResultプロパティを利用してやればよいと思います。

となると、上記のメソッドと比べ、非同期メソッド(async/await)の必要性や有用性って何なんでしょうか?
0333デフォルトの名無しさん (ワッチョイ df2d-guBg)
2020/01/10(金) 21:01:49.43ID:kvQnOJve0
本当はここの話題じゃないのかも知れないけどさあ
.NetCoreアプリ(〜.dllファイル)に対するAppArmorの設定ってどうやるのか解説してるサイトや書籍があったら教えてくれんかな?
dotnetコマンドに対する制約しかかけられないのかな・・・・
0336デフォルトの名無しさん (ワッチョイ df35-e1y7)
2020/01/10(金) 21:46:24.01ID:nE2xZxkX0
>>335
kwsk
0340デフォルトの名無しさん (ワッチョイ df35-e1y7)
2020/01/10(金) 23:25:42.90ID:nE2xZxkX0
>>339
なんで?
0341デフォルトの名無しさん (ワッチョイ df4f-lB9F)
2020/01/10(金) 23:40:56.46ID:c4Cc7glv0
コールバック引数に関数リテラルを書いてるからネストが深くなるわけで、それが嫌なら
関数を切り出しておけばいい。
async/awaitを使う場合は最初からそうするしかないってだけ。
0342デフォルトの名無しさん (ワッチョイ df35-sGtB)
2020/01/10(金) 23:45:01.53ID:nE2xZxkX0
まあ逐一処理みたいに並べて書けるから便利だよね。
別の場所に用意したコールバック関数の中に次の処理書くよりマシかな
0344デフォルトの名無しさん (ワッチョイ df35-sGtB)
2020/01/10(金) 23:51:08.53ID:nE2xZxkX0
いや、こうか。
そうしないとコールバックで繋いでないな。
f1(x1,y1,
 f2(x2,y2,
  f3(x3,y3,
   f4(x4,y3)
  )
 )
)
0346デフォルトの名無しさん (ワッチョイ 7f24-lB9F)
2020/01/11(土) 10:39:28.88ID:LYbiGn3M0
C#で明示的にメモリを開放する手段はGC.Collect以外にはないんでしょうか?
画像やオーディオファイルを扱うアプリを作っている最中ですが、数百MBのデータを扱い終えても数分はメモリ使用量がそのままで少し気持ち悪いです
GC.Collectを行うと副作用も色々とあるようなので他に手段があればと
0350デフォルトの名無しさん (ワッチョイ df35-e1y7)
2020/01/11(土) 11:44:58.26ID:tdQ2h9sk0
>>347
普通にミスった
関数ポインタ的なものを渡してるつもりだったけど実行演算子付けてたら意味ないな

f1(x1,y1,(y1,y2)=>
 f2(x2,y2,(x3,y3)=>
  f3(x3,y3,(x4,y4)=>
   f4(x4,y4)
  )
 )
)

多分こうかな
やっぱりこのほうがいいな
そもそもこんなに非同期処理並べるときあるか分からないけど
await f1(x1,y1)
await f2(x2,y2)
await f3(x3,y3)
f4(x4,y4)
0352デフォルトの名無しさん (ワッチョイ df35-e1y7)
2020/01/11(土) 12:03:26.24ID:tdQ2h9sk0
こうか
f1(x1,y1,async (y1,y2)=>
 await f2(x2,y2,async (x3,y3)=>
  await f3(x3,y3,async (x4,y4)=>
   f4(x4,y4)
  )
 )
)
0353デフォルトの名無しさん (ワッチョイ df35-e1y7)
2020/01/11(土) 12:04:51.20ID:tdQ2h9sk0
いや、これだとasync, await使ってるから本末転倒やな
もう時間ない
0354デフォルトの名無しさん (ワッチョイ 5f0c-lB9F)
2020/01/11(土) 12:28:03.20ID:yg8EbsDw0
>>346
> GC.Collectを行うと副作用も色々とある
あくまで一般的な方針ってだけなので別に自分のアプリで問題(望ましくない時にスパイクを起こすとか)無ければ好きに呼べば良いよ
別にイリーガルなAPIというわけでもない
まあ一般的な話で言えば「メモリ残っててなんか気持ち悪い」程度の理由で呼ぶ必要はまったくないが
0355デフォルトの名無しさん (ラクッペ MMf3-elwi)
2020/01/11(土) 12:48:55.66ID:iMRI2zWpM
>>350のコールバックが非同期で呼び出されるってことだろうから普通に並べて呼ぶだけじゃ無理じゃね
0356デフォルトの名無しさん (ワッチョイ 7f24-lB9F)
2020/01/12(日) 10:53:37.47ID:dSru1J0h0
>>354
たしかに基本的には問題になりませんが、
数GBを消費することもあり、もしそのときに使用者が他に重いプログラムを起動するなどするとメモリ不足になる場合もあるかなと・・・
こういうプログラムはGC任せにするのではなくC++などで作るべきという結論になるんでしょうか?
0358デフォルトの名無しさん (ワッチョイ df4f-lB9F)
2020/01/12(日) 12:06:08.27ID:EKUpo6h10
>>346
IDisposableなオブジェクトがあれば不要になった時点できちんとDispose()するようにするとかかな。
画像を扱っているんであればSystem.Drawing.Imageとかいろいろあるんでは。
0360デフォルトの名無しさん (ワッチョイ 7f24-lB9F)
2020/01/12(日) 12:28:05.83ID:dSru1J0h0
主にはMemoryStreamで巨大データを扱っていてちゃんとDisposeは行っていますが、タスクマネージャーで監視している限りだと中々メモリ使用量が減りません
0361デフォルトの名無しさん (ワッチョイ 5f0c-lB9F)
2020/01/12(日) 12:32:04.56ID:21O0ncu50
>>356
その消費されているメモリがどのメモリなのかきちんと把握しないと意味がないよ

マネージドメモリが消費されればそれだけ手動でCollectせずともGCは働くはず
なのに残っているとしたらstatic変数等で無駄に参照し続けている可能性がある

アンマネージドなメモリなら既に書かれてる通りDisposeを必要な場面で呼び出していない可能性がある
加えてGC性能の観点からはDispose(正確にはファイナライザの方だけど)をGC任せにするのは
程度問題ではあるけど基本的にはご法度

現状「メモリが大量に消費されているが手動でCollectして大丈夫か」の情報だけでは現状方針は立てようがない
0363デフォルトの名無しさん (ワッチョイ 5f0c-lB9F)
2020/01/12(日) 12:52:17.43ID:21O0ncu50
>>362
タスクマネージャ眺めてるだけじゃ開発者が手続きを間違えいてるのか
.NETのGCがクソなのかも判断できないという話だよ

CLRProfilerなり使ってもうちょっと詳細詰めてみたら?
0364デフォルトの名無しさん (ワッチョイ 7f24-lB9F)
2020/01/12(日) 13:07:52.95ID:dSru1J0h0
>>363
言葉足らずでしたが、Dispose処理を行ったであろうタイミングで減らないというだけであって待つなりそこでCG.Collectを行えばちゃんと解放はされます
ただ上でも言ったようにGC.Collectは副作用があるようなのでC++のdeleteのようなものは無いのかなと
0365デフォルトの名無しさん (ワッチョイ 5fde-Eq4u)
2020/01/12(日) 13:49:29.53ID:GXqrVy4G0
GCって動かしてやらないと限界まで解放しないよ
限界までいって開放時のその時起きるのはストップザ・ワールドと呼ばれる有名な現象

その前にもメモリの残量を見てるアプリが動かなくなる
あ、メモリ少ないじゃん俺起動やめんべ
こういうのも絡んで再現不能な不具合を多々撒き散らす
常駐アプリならストップザ・ワールドが困るなら定期的に解放せんとまずい

ちなみにストップザ・ワールドは10分は動かなかったときがある
0366デフォルトの名無しさん (ワッチョイ 5f0c-lB9F)
2020/01/12(日) 13:50:45.08ID:21O0ncu50
>>364
まあ生存しているマネージドメモリの正体がわかり切っていて処理の途中でも無いなら
(例えば単純にユーザー操作からファイルの読み込みが完了して結果が表示された後とか)
それはCollect使っても構わない場面だと思うよ

結局副作用と言ってもヒューリスティックなGCの調整に影響が出て
細かくGCが起きる場面でのスループットが低下する、かもしれない
とかその程度だしね
0370デフォルトの名無しさん (ブーイモ MM0f-2EI0)
2020/01/12(日) 14:21:33.28ID:EstEf4vMM
>>364
大きなメモリブロックを頻繁に扱うならアンマネージドメモリを使いなよ
アンマネージドメモリなら開放したいときに無駄なく開放できる
今はspanがあるからアンマネージドメモリの扱いも簡単だ
GCの手動実行は開放したいメモリ以外にもマークアンドスイープが発生しちゃうから効率が悪い
ちなみにMemoryStream.Disposeはインターフェース共通化のために実装してあるだけで呼び出す意味はない
0373デフォルトの名無しさん (アウアウウー Saa3-7oRq)
2020/01/12(日) 14:49:38.22ID:KwEpglzAa
ストップザワールドてw
PC-98の時代で頭が止まってるのかwww
0374デフォルトの名無しさん (ワッチョイ 7f01-KDxU)
2020/01/12(日) 16:50:21.94ID:M8sF3s6B0
時間経過だけを条件にフルGCがされることってあるのかな?
メモリリークではないと言ってるけど状況的にそう言える根拠はないような・・・
- 数GBが開放されない
- 数分待てば開放される(ように見える)
- GC.Collectすれば開放される
- タスクマネージャーでのみ確認
0375デフォルトの名無しさん (ワッチョイ dfa7-Eq4u)
2020/01/12(日) 17:07:03.57ID:M6sT7X550
MSDNより

ガベージ コレクションの条件
ガベージ コレクションは、次のいずれかの条件に当てはまる場合に発生します。
・システムの物理メモリが少ない場合。 OS からのメモリ不足通知またはホストによって示されたメモリ不足のいずれかによって検出されます。
・マネージド ヒープで割り当てられたオブジェクトによって使用されているメモリが、許容されるしきい値を超える場合。 このしきい値は、プロセスの進行に合わせて絶えず調整されます。
・GC.Collect メソッドが呼び出された場合。 ほとんどの場合、ガベージ コレクターは継続して実行されるため、このメソッドを呼び出す必要はありません。 このメソッドは、主に特別な状況やテストで使用されます。
0380デフォルトの名無しさん (ワッチョイ dfe5-alJZ)
2020/01/13(月) 00:43:38.40ID:5i4YDTtr0
csvファイルを取り込むため下のようなプログラムを作ったのですが
データに「"1,234",test」のようなカンマ区切りの金額データが含まれるため
「1」「234」「test」のように列が分けられ配列に格納されてしまいます。
「1234」「test」のような形で配列を取得するにはどうしたら良いでしょうか?

static void Main(string[] args)
{
string textFile = @"C:\temp\test.csv";
System.Text.Encoding enc = System.Text.Encoding.GetEncoding("shift_jis");
string[] lines = System.IO.File.ReadAllLines(textFile, enc);
foreach(string line in lines)
{
string[] stArrayData = line.Split(',');
Console.WriteLine(stArrayData);
}
}
0384デフォルトの名無しさん (ワッチョイ 7f2c-JQ6m)
2020/01/13(月) 04:40:58.64ID:6QaMEdT10
Ruby なら、CSV モジュールを使うだけ

CSVでは、要素内に、列区切り文字(カンマ)・行区切り文字(改行)がある場合は、
その要素をクォート文字(ダブルクォーテーション)で囲まなければならない

要素内に、クォート文字がある場合は、クォート文字を2つにしてから、
その要素をクォート文字で囲まなければならない
0386デフォルトの名無しさん (ワッチョイ 5fda-KD25)
2020/01/13(月) 11:21:19.23ID:5a7SXLUb0
元々のCSVはSuperCalc の形式(オズボーン1にバンドルされていた)
今目にするCSVの仕様は、管理工学研究所が定義したK3形式が元になっている

で、実際の処理には何の関係も無い
0390デフォルトの名無しさん (ワッチョイ dfe5-alJZ)
2020/01/13(月) 16:30:16.82ID:5i4YDTtr0
csvhelperなるものがあるのですね
情報ありがとうございます
ドボンさんの情報は以前は参考にさせて頂いてましたが、
.NET2.0くらいのやり方が多いので、今はより洗練された方法がありそうだなと
思っておりました
0392384 (ワッチョイ 7f2c-JQ6m)
2020/01/13(月) 22:56:09.48ID:6QaMEdT10
>>385
クォート文字の有り無しは、混在できる

CSVでは、要素内に、列区切り文字(カンマ)・行区切り文字(改行)・クォート文字(ダブルクォーテーション)がある場合は、
その要素をクォート文字(ダブルクォーテーション)で囲まなければならない

ただし要素内に、クォート文字がある場合は、クォート文字を2つにしてから、
その要素をクォート文字で囲まなければならない

でも要素内に、それらの特殊文字が無いなら、クォート文字で囲まなくてもよい
0393デフォルトの名無しさん (アウアウウー Saa3-7oRq)
2020/01/13(月) 23:01:31.99ID:kDbPI+DBa
それCSVっていうよりBASIC系のエスケープっぽいねw
そもそもCSVってカチッとした仕様がなかった気がするんだけど
0396デフォルトの名無しさん (アウアウウー Saa3-7oRq)
2020/01/13(月) 23:30:20.68ID:kDbPI+DBa
>>394
斜め読みした感じ、それって定義じゃないのでは?
むしろ定義なんかないってはっきり言ってない?
定義はないけど多くの実装の最大公約数的な仕様はこうだって書いてあるだけじゃないの?
0397デフォルトの名無しさん (ワッチョイ 5f17-lB9F)
2020/01/13(月) 23:36:49.28ID:VaOcNYgw0
けっこう色々な種類のcsvファイル触ってきたけどこの定義から外れたもの見たことないから
とりあえずこの通りに実装しとけば問題ないけどね
0399デフォルトの名無しさん (アウアウウー Saa3-7oRq)
2020/01/13(月) 23:40:16.54ID:kDbPI+DBa
よく見ると冒頭にちゃんと
Category: Informational
と書いてあるね
0404デフォルトの名無しさん (ワッチョイ 7f01-qx2z)
2020/01/14(火) 07:56:37.29ID:RxBpnTJ90
>>402
例えば時系列の数値データとかだと今でもCSVが最適解のケースが多いと思う
構造が必要なデータとかでないとXMLやjsonはちょっと冗長
まあC#ならライブラリも充実してるからぶっちゃけどうとでもなるけど
0407デフォルトの名無しさん (アウアウウー Saa3-7oRq)
2020/01/14(火) 12:25:10.48ID:1JLYJ3w5a
CSVを使う動機は他のプログラムにデータを渡すことでしょ。
例えばエクセル。日本も欧米もエクセルスキー多いからな

閉じたシステムでしか使わないデータのフォーマットなんか何だっていいでしょ。
あえてCSVを使う理由なんかどこにもないと思うけど
0408デフォルトの名無しさん (ワッチョイ 5fde-Eq4u)
2020/01/14(火) 12:27:31.80ID:Kx+Dz7Lq0
>>405


構造がネストしてたってCSVに入れなければならないときがある
そもそもネストしたぐらいでリストにできないんじゃデータベースにどうやって入れるんだ?
parentid持ってりゃネストしてたって再構築できるだろ
0409デフォルトの名無しさん (ワッチョイ 7f52-4RSc)
2020/01/14(火) 13:05:22.12ID:eL1p+DpS0
まあ、いつものRuby君だからな。
聞き齧った情報を単純化して暗記だけして、関われそうな話題が出るとここぞとばかりに唱え続けるのはいつものこと。
0410デフォルトの名無しさん (ワッチョイ df35-e1y7)
2020/01/14(火) 13:09:26.15ID:Cb2SImdL0
CSVで親IDとか使うの?
0412デフォルトの名無しさん (ドコグロ MM7f-qx2z)
2020/01/14(火) 13:58:11.66ID:/uoR9pL9M
>>408
> parentid持ってりゃネストしてたって再構築できるだろ
それデータとして構造持ってるわけじゃないだろ
リスト構造が作れるからメモリーは構造持ってると言うようなもんだし
0413デフォルトの名無しさん (ドコグロ MM7f-JyDu)
2020/01/14(火) 14:06:50.32ID:/8RfG7cVM
CSVは項目の増減があるとウザいんだよな
もちろんちゃんとヘッダ付けてスキーマが変わった時点でファイルを区切ればいいんだけど、
CSVは文化的に周辺のツールやDBのコマンドなどのエコシステムが全体的にスキーマは不変であるという前提で設計されてて、変更に弱い傾向がある気がするわ
選べるならJSON Linesの方が好き
0415デフォルトの名無しさん (ワッチョイ ff42-lB9F)
2020/01/14(火) 15:11:21.78ID:EWDA2lfk0
CSVは方言があるから、きちっと規則が決まっているフォーマットのほうがあらゆる場所で使いやすい
データをそのまんま見る必要はまったくないからな
0416デフォルトの名無しさん (ワッチョイ 7f01-qx2z)
2020/01/14(火) 15:19:51.61ID:RxBpnTJ90
>>413
> CSVは文化的に周辺のツールやDBのコマンドなどのエコシステムが全体的にスキーマは不変であるという前提で設計されてて、変更に弱い傾向がある気がするわ
それCSVの問題じゃないだろ…
そもそも文化的にとかイミフだし
0417デフォルトの名無しさん (ドコグロ MM7f-JyDu)
2020/01/14(火) 17:27:20.18ID:/8RfG7cVM
>>416
仕事してるなら感覚的に伝わると思ったけど、具体的に言おうか?
CSVはヘッダが必須ではないから、CSVを扱うソフトウェアやシステムはヘッダに依存せずに設定として列の項目名を持つようになっているケースがよくある。
だから列の増減や差し替えがあったりするとたとえ直接関係のない列の変更であっても各所に散財する設定を変更して回らなければならなくなることが多い。
0419デフォルトの名無しさん (ワッチョイ df2f-JQ6m)
2020/01/14(火) 18:09:29.11ID:pFXvs9YC0
まあCSVがデータ交換の第一候補とされる時代で、動的なスキーマ扱うのは大変だったからな
たんに昔は大変だったってだけの話だが、それを文化的にっていうならそうなんじゃね
0421デフォルトの名無しさん (ワッチョイ df2d-guBg)
2020/01/14(火) 20:12:40.85ID:hCHR2L1S0
ASP.Net CoreでWebページを作れるようになりたくて勉強中なんだけどさ
これって、内臓のWebサーバを使う限り、Let’s Encryptでもらった証明書は使えないもんなの?
0423デフォルトの名無しさん (ワッチョイ df2d-guBg)
2020/01/14(火) 20:34:04.12ID:hCHR2L1S0
おお、運用する時はこれが良いな
正直、サーバの設定もわかんないので任せっきりの方が安心そうだ
ただ勉強中は、100円で買ったドメイン + 安物VPS + 無料証明書でうまく動いてくれたらすごく助かるんだけど・・・・無理なのかな?
0425デフォルトの名無しさん (オッペケ Srb3-lZna)
2020/01/14(火) 21:41:46.70ID:X7PL8nyZr
エディタ次第で見た目が変わるからと
人が加工しづらいからだろうね

タブが入ってますと言っても判らんかもしれない
文字列が長いとそろわないのでタブの位置がおかしくなるかもしれない
0426デフォルトの名無しさん (ワッチョイ 5f63-hsX7)
2020/01/14(火) 22:06:19.07ID:iQtyfXTR0
csvよりtsvが優秀な点って何?
結局データ内にtabがある可能性があるならおなじじゃね?
だからカンマとかタブとかひっくるめてcharcter separated valuesの意味とされることも多いんでしょうが
0429デフォルトの名無しさん (アウアウイー Sab3-VpI/)
2020/01/14(火) 23:48:13.12ID:ohbZmYwxa
えっcsvってcomma-separated-valuesの略だと思ってた
character-separated-valuesが正しいのね

カンマは含むけどTABを含むことはないデータを扱うのであればTSVのほうがちょっとだけ楽
あとTSVならExcelへのデータコピペ貼り付けが楽ちん
なnだけどExcelは拡張子tsvを認識してくれるわけじゃないし
デフォルト状態のテキストエディタだとTSVを開くとTABが見えなくて一般エンドユーザには扱いづらい
このあたりが普及しなかった理由かなあとも思う
0430デフォルトの名無しさん (アウアウウー Saa3-7oRq)
2020/01/14(火) 23:53:37.69ID:1JLYJ3w5a
そういえばTSV使えばクリップボード経由でスプレッドシートに矩形のデータの貼り付けが出来たねw
0431デフォルトの名無しさん (ワッチョイ 7f2c-JQ6m)
2020/01/14(火) 23:53:53.34ID:3sd16sWN0
>>413
ヘッダー行無しで、列名を使わずに、
数字インデックスで、各列にアクセスするのは、ナンセンスw

各列の順序に、依存してはならない!
列名でアクセスすべき!
0432デフォルトの名無しさん (ワッチョイ c563-slCE)
2020/01/15(水) 00:02:56.00ID:DW97+S7b0
>>429
別にどっちが正しいとか無いよ
個人的にはカンマの意味で使うことのほうが多いしRFCでもカンマだし

csvよりtsvのほうがいろいろ優秀とかいうほんまか?みたいな説があったから気になった
改行以外の制御文字は非エンジニアには理解しづらいし表示は環境依存になること多いし別にどっちが優秀とか全く思わん
0437デフォルトの名無しさん (ワッチョイ 02ad-NcMA)
2020/01/15(水) 03:11:55.49ID:5FatvImR0
>>426
大抵の場合カンマもダブルクォートも気にしなくてよくなる分有利だと思う
データ内にtabが必要なデータって出会ったことある?

完全に自分で決めていい場合なんかはまずデータで発生しない垂直タブとかにすることもある

あとbcpはいい加減囲み文字に対応してくれ・・・
0439デフォルトの名無しさん (ワッチョイ 412d-GCXE)
2020/01/15(水) 06:40:51.71ID:p7xf33n60
ASP.Net coreを学習してて思ったんだけど、cshtmlファイルって簡単にプレビューすることってできないの?
もしかしてデザインを確認するたびにWebアプリをビルドして動かさなきゃならないのかな・・・・・?
0440デフォルトの名無しさん (アウアウウー Sa05-mgaX)
2020/01/15(水) 08:55:22.37ID:4wm3SGsoa
>>439
プレビューは無理だが、実行中に変更して保存すれば自動的に反映される
今時のWeb開発はReactのようなブラウザ側でテンプレートをレンダリングするフレームワークを使うのが主流だから、
いわゆるライブプレビュー問題はそもそも関心の対象から外れつつある
0441デフォルトの名無しさん (ワッチョイ 412d-GCXE)
2020/01/15(水) 10:19:44.72ID:p7xf33n60
>>440
ありがとう、簡単に反映されて見やすくなったよ!!!
しかも学習が進む前に主流がここにないこともわかって助かったぜ!!!
わからない点もあるけど、RazorやMVCを勉強するより、WebAPI+Reactのセットを勉強すれば良いのかな
0442デフォルトの名無しさん (ワッチョイ bd02-otum)
2020/01/15(水) 19:15:28.96ID:JJ7ufGPT0
System.Drawing.Imageで、ビットマップを読み込んでそこで色々加工した後
ヘッダーまで含めたDIBビットマップ情報を取得したいです(変換したいです)。
要するにバイナリでファイルから読んだのと同じ情報にSystem.Drawing.Imageから変換したいのですができますか?
今はやり方が分からないので、Imageからファイルを読み込んで一通り加工した後、一旦Saveでファイルに書き込み
それを自分でSystem.IO.FileStreamでバイナリとして読んでます。効率が悪いので直接Imageから変換したいです。
0446デフォルトの名無しさん (ワッチョイ 412d-GCXE)
2020/01/16(木) 00:54:44.90ID:kpHwVwjt0
一度作ったプロジェクトに、後からテンプレートのオプション相当の機能を追加するのってどうやるの?
https://docs.microsoft.com/ja-jp/aspnet/core/security/authentication/identity?view=aspnetcore-3.1&;tabs=netcore-cli
上の方のチュートリアルからやってきた流れで作ったものに認証を追加しようとしたら、どう言う作業になるのか全然わかんないぜ
プロジェクトを作る時は予めオプション全部盛りにしといた方が無難なのかな?
0447デフォルトの名無しさん (ワッチョイ dd2c-gGzZ)
2020/01/16(木) 01:22:36.75ID:f63ovSMJ0
>>429
拡張子 .tsv は認識しないけど、Unicode や UTF-8 とかのタブ区切りテキストの拡張子が .csv の場合はちゃんとExcelで開けるよ。ボムで判定してるぽいから使いどころがアレだけど
0448デフォルトの名無しさん (ワイーワ2 FF4a-8L6A)
2020/01/16(木) 11:54:51.58ID:sHruIOmXF
kingなんとかっていう中華パチモンのexcelモドキがあるが
あれのマクロとかはMSexcelと互換なのか?
0450デフォルトの名無しさん (ワッチョイ b957-otum)
2020/01/17(金) 02:24:02.75ID:gAZZjojh0
優秀か?
0451デフォルトの名無しさん (アウアウエー Sa0a-pN7o)
2020/01/17(金) 02:41:14.31ID:7cpcgOXta
>>449
それは逆だと思うよw
メモ帳かワードパッドでタブ区切りで何か書いてみたら分かると思うけど
0455デフォルトの名無しさん (アウウィフ FF05-otum)
2020/01/17(金) 11:07:56.81ID:fMuYUnvEF
仮に8タブで揃えてもどうせデータに8文字以上あったらずれるしな
0459デフォルトの名無しさん (アウアウエー Sa0a-pN7o)
2020/01/17(金) 12:38:34.71ID:cvTIAb58a
なんか話が通じてない気が

1, 2, 3, 4, 5
100, 200, 300, 400, 500
10000, 20000, 30000, 40000, 50000

例えばこれをメモ帳にコピペして", "をタブに置換してみれば
TSVのビジュアル面での優位性が分かる
くどいけどメモ帳ね。今時のエディタでやれとは言ってない
0460デフォルトの名無しさん (アウウィフ FF05-otum)
2020/01/17(金) 13:13:41.21ID:fMuYUnvEF
メモ帳最強だな
1 2 3
100 200 300
10000 20000 30000
10000000 20000000 30000000
0462デフォルトの名無しさん (アウアウエー Sa0a-pN7o)
2020/01/17(金) 14:09:00.25ID:cvTIAb58a
>>461
文脈読めないとアスペルガーって言われるよw

CSVの方が普及したのに深い理由があるとは思えないけど、
あえて言えばデータをエクスポートするコードを書くプログラマの立場になれば、
CSVの方が吐き出されたデータが意図した通りになってるか目視でチェックしやすいのはあるかもね。

スプレッドシートで見た時マトリックス状になってないデータだと
,,,1, 2, 3,,,,
行のデータがこんな風になるけど、こういうのTSVだと検証しづらいよね。
0468デフォルトの名無しさん (アウアウエー Sa0a-otum)
2020/01/17(金) 22:14:44.38ID:qzTGRUF3a
いつも思ってるんだけど
営業ってゴミ以下じゃないですか?
こいつらってSEもPGも出来ないのに
何故か技術職より高級取りですよね?
そのくせ飲み会なんかでは
お互い苦労を労ってみたいな、苦労人ぶりますよね?
営業ってほんと何もしてないんじゃないですか?
皆さんは休日もc#の勉強でしょう?大変だと思います。
理不尽だと思いません?
0469デフォルトの名無しさん (アウアウエー Sa0a-otum)
2020/01/17(金) 22:15:41.03ID:qzTGRUF3a
皆さん営業に対して切れそうになったことってありますか?
0471デフォルトの名無しさん (アウアウエー Sa0a-otum)
2020/01/17(金) 22:19:09.18ID:qzTGRUF3a
どう考えてもプログラマって人生削って仕事してますよね?
そのくせ営業はキャバクラにいくと苦労自慢ですよね
こいつらの苦労って何なんでしょうか?w
人生楽してるくせに、苦労人ぶって注目を浴びる
サイコパスなんですかね?
0472デフォルトの名無しさん (ラクッペ MM41-iig7)
2020/01/17(金) 22:19:56.28ID:W1hXbFsmM
静かにしてろガイジ
0475デフォルトの名無しさん (アウアウエー Sa0a-otum)
2020/01/17(金) 22:23:01.68ID:qzTGRUF3a
>>470
そもそも営業といっても技術営業というのもあり、そちらは尊敬してます
僕が言うのは一般的な営業です
また飲食店とかそういう華やかな社会での営業なら、美人やイケメンが適当に
営業しても良いと思いますが、技術職ですからね
冴えないおっさんや、仏頂面の爺が営業してるじゃないですか?
能力もないくせに、 PGもできないくせに、何であんなに偉そうなんですか?

ここにいる人は、凄い技術をもった集団だと思います。
だけど営業だけは本当にゴミ以下なんじゃないかって思うんですよ。
努力することもなくSE,PGが開発した商品で飯をくってる奴らだと思いません?
0476デフォルトの名無しさん (アウアウエー Sa0a-otum)
2020/01/17(金) 22:29:22.69ID:qzTGRUF3a
>>473
最近は技術職の人がそのまま営業したほうがいいんじゃないかって言われてませんか?
皆さんが営業したほうが遥かに良いと思います。僕ですらしたことあるんですから。
そもそも技術職の人同士が直接対話したほうが、手間が省けますよね?
例えば、滅茶苦茶美人や、華があるイケメンが、技術を超えたところで会社の関係を良好に
する潤滑油のような存在であるなら別です、これに関しては僕は例外として認めます。
だけどですね、冴えないクソムカツク顔した偉そうなおっさんが、何のスキルもないくせに
ただその会社に行って名刺を渡して、外で飲んだりする。こういうのってよくあると思いますけど
むかつかないですか?こいつら会社にいるの?って思いません?
だってどう考えても、現場の人が死にそうになりながら恋人も出来ず、休日も納期に追われてなんて
僕はもう見ていて辛すぎるんですよ。仲間で鬱になった人が何人もいます。全員技術職です。
営業はいません。いたとしても技術営業の人です。
0477デフォルトの名無しさん (ワッチョイ f901-U231)
2020/01/17(金) 22:30:03.14ID:qsbCac+G0
>>475
担当役員とあうために、派閥構成調べたり、その裏取りしたり
なんならアポイント調整してもらうために、部下の接待したりするんだけど
君できる?
で、当然会っただけじゃ話進まないから、会うまでにプレゼンの構成考えて、それに合致する統計情報集めて
何なら役員の他のプロジェクトの様子調べて、そのプレゼンに盛り込んだりするんだけど?
0479デフォルトの名無しさん (アウアウエー Sa0a-otum)
2020/01/17(金) 22:35:45.25ID:qzTGRUF3a
>>478
システム開発に営業なんて必要ない
技術者同士の対話でいい、何故納得しないんですか?
0480デフォルトの名無しさん (アウアウエー Sa0a-otum)
2020/01/17(金) 22:38:25.08ID:qzTGRUF3a
>>477
そもそもシステム開発部署には派閥なんてない
営業の派閥とか気持ち悪すぎ、どんだけいるんだよ不必要なのにw
0482デフォルトの名無しさん (アウアウエー Sa0a-otum)
2020/01/17(金) 22:40:39.99ID:qzTGRUF3a
営業に逆らったらクビになるから
こういう真実味のある話は嫌いなんですね、わかります
それに皆さんが不満はないのは、ある程度給料を貰ってるからでは?
皆の幸福を全体で考えるなら、どう考えても営業は邪魔でいらない
こんな奴らが苦労人ぶるのは俺は不愉快極まりない
0483デフォルトの名無しさん (ワッチョイ 412d-GCXE)
2020/01/17(金) 22:41:01.13ID:MkV0nw930
頑張って相手にしてる人もいるけど、アフィブログに転載するための種まきじゃねえの?
0484デフォルトの名無しさん (ワッチョイ e252-iiEx)
2020/01/17(金) 22:41:34.48ID:oRcV/dFn0
>>479
自分の身近な不満を感情のままにぶちまけてるだけで、他人を納得させるような論理的、合理的な説明を一切していないのに、なんで納得させられると思ってるの?
0486デフォルトの名無しさん (ワッチョイ c563-slCE)
2020/01/17(金) 22:45:10.80ID:7c6Znq+s0
そんな単純な話じゃ金が動かない
金が動かなきゃ何もできない
金を動かせる人間と話ができなきゃ開発がスタートしない

そうやって他職種を罵倒するようなやつは君が嫌がる営業と同じだということに気付いてない
0488デフォルトの名無しさん (ワッチョイ e252-iiEx)
2020/01/17(金) 22:48:29.59ID:oRcV/dFn0
>>475
ここにいる人達がすごい技術を持った集団だなんて本気で思ってるのか?
もしそうだとしたら世間を知らなすぎというか技術者に過剰な夢をみているか、自分を含めた技術者というものを特別視し過ぎだ。
もしくは、自分の主張を受けいれてもらおうと、不必要に相手を持ち上げているのではないか? それが意図したものかそうでないか知らないが、もし無意識に癖でやってるなら改めた方がいいぞ。
0491デフォルトの名無しさん (アウアウエー Sa0a-otum)
2020/01/17(金) 22:56:37.76ID:qzTGRUF3a
>>488
常に技術力を磨いてる技術者と、休日もコネや接待のことしか考えてない
営業はどっちが頭良いと思うんですか?
営業は、確かにちょっとしたテクニックで相手に好かれたりするこつとか
そういうのは得意かもしれません。小手先のテクニックを磨いて、そこに
論理なんて全くないんですよ。流されやすい人間の心理なんかを心得てるにすぎないんですよ。
論理的に考えている水準が全然違う。例えば簡単なC言語のプログラムだって、大学1年
の時は全く手に負えないわけじゃないですか?そんなこともできないの?ってのが
生涯続いて取り返しがなくなってるのが営業の人達だと思うんですね。
0492デフォルトの名無しさん (アウアウエー Sa0a-otum)
2020/01/17(金) 22:59:49.23ID:qzTGRUF3a
>>486
だから悪しき営業文化があるだけじゃないですか?
規模の大きい企業だと営業を通すしかないですからね。
あの部署のあの技術者さんと直接対話したい!あの人となら
良い付き合いができそうだ
ってそういう試みをしてる人がいてもコンプライアンスで禁止されるから
できないだけじゃないですか
0493デフォルトの名無しさん (アウアウエー Sa0a-otum)
2020/01/17(金) 23:11:33.03ID:qzTGRUF3a
誰も賛同してくれなくて違和感を感じる
俺以上にもっと深い視点で切り込んでさらに否定的になってくれたりしないのか
0494デフォルトの名無しさん (アウアウエー Sa0a-otum)
2020/01/17(金) 23:13:28.58ID:qzTGRUF3a
>>483
都合が悪いといつもアフィ扱い
0499デフォルトの名無しさん (ワッチョイ 6e63-iig7)
2020/01/18(土) 09:09:16.54ID:Y/6fKVhZ0
無職・だめとかメンヘラ板の間違いだろ
0501デフォルトの名無しさん (ワッチョイ 8259-6zBS)
2020/01/18(土) 13:20:05.43ID:T0jlPL4l0
>>500
これはフィールドに依存、これは静的関数みたいな別けは何基準でしてる?
少なくとも自分の中での基準は明確にしておきたいんだけど全然わからん
使い方次第だろうけどあとからコロコロ変わるのよね……
0502デフォルトの名無しさん (ワッチョイ 8679-6zBS)
2020/01/18(土) 13:36:35.87ID:wrxXpMgf0
プロパティにフィールドのラッパー以上の仕事をさせない
処理を必要とするものはメソッドにする
ジェネリックコレクションもそうなっている

オブジェクト指向信者だから単純な静的関数はあまり使わない
0503デフォルトの名無しさん (アウアウエー Sa0a-pN7o)
2020/01/18(土) 14:33:05.38ID:AzzMP3A9a
バッキングフィールドに値を代入するのだって処理ですよw
0506デフォルトの名無しさん (アウアウエー Sa0a-pN7o)
2020/01/18(土) 19:08:15.28ID:AzzMP3A9a
違うよw
端的に
>処理を必要とするものはメソッドにする
こんな方針間違ってます。
羹に懲りてなんちゃらそのものだね。
0507デフォルトの名無しさん (ワッチョイ dd1a-nNT5)
2020/01/18(土) 20:01:07.67ID:p3+FYMMX0
先輩方、Blittableな構造体の実装だけを動的に付け替える方法って何か無いもんですか?
巷で持て囃されるストラテジパターンは参照を使う都合で非Blittableになってしまうので、今はメソッドをenumで指定して愚直にswitchで振り分けていますが、発火の度に分岐を走らせるのはとても優雅とは思えんのです
0514デフォルトの名無しさん (ワッチョイ dd1a-nNT5)
2020/01/18(土) 21:49:52.66ID:p3+FYMMX0
>>513
あざっす大先輩
Cと同じように関数ポインタを使えというのは素晴らしいアイデアなのですが、C#での具体的なやり方が分からんのです
なのでそこのところ詳しくご教示頂けるとありがたいです
0516デフォルトの名無しさん (アウアウエー Sa0a-pN7o)
2020/01/18(土) 22:30:29.21ID:AzzMP3A9a
その構造体をrefで渡す必要がないなら構造体をクラスでラップすればいいだけでは?
refで渡す必要があるならこんな方法しかない気が
struct MyStruct:IDisposable
{
  public int X;
  public void RegisterAction(Action<MyStruct> action)
  {
    ActionTable.Add(this, action);
  }

  public void Action()
  {
    ActionTable[this](this);
  }

  public void Dispose()
  {
    ActionTable.Remove(this);
  }

  private static Dictionary<MyStruct, Action<MyStruct>> ActionTable
    = new Dictionary<MyStruct, Action<MyStruct>>();    
}
0518デフォルトの名無しさん (ワッチョイ a9a7-oy3B)
2020/01/19(日) 01:04:08.98ID:CTmJNu4H0
実際に処理が分岐してんのに分岐してないようにみせるのって何がいいんだ?

同じルート通ってるのに違う処理呼ばれてんだろ?
ドキュメントにそれの記述がない状態でそれということを理解するためには
ブレークで止めてステップ実行でもするしかないじゃないか?
お前がスマートだと思ってるコードは他人には読み難いだけのクソコードである可能性を心配したほうがいいな
心が壊れてしまう前に
何十年もそんなくだらないことに時間を割いたあとでは大変だ
0519デフォルトの名無しさん (ワッチョイ 6e63-iig7)
2020/01/19(日) 01:46:20.77ID:Ev0CJ8lF0
大変なおつむからどうにかしとけ生ゴミ
0520デフォルトの名無しさん (ワッチョイ f901-YUdL)
2020/01/19(日) 02:12:12.57ID:bwAT5wiO0
>>518
まあ、誰しも最初からわかってるわけではないので、言ってることがわからんでもない
LINQわかりにくいからループ回せやみたいなもんかな?

〉実際に処理が分岐してんのに分岐してないようにみせるのって何がいいんだ?
まずその捉え方が間違い
actionのメリットをググれば残りの疑問も解消する
0522デフォルトの名無しさん (ワッチョイ cd0c-A78j)
2020/01/19(日) 08:12:00.36ID:n+8OO44x0
>>514
正直なぜBlittableなのか、参照型ではだめなのか、という話から詰めた方がいいと思うけど

struct Foo {
 public int data;
 public IntPtr fn;
}

static class FooDo {
 public static Do1(ref Foo x) {}
 public static Do2(ref Foo x) {}
}

こんなのをMarshal.GetFunctionPointerForDelegate/GetDelegateForFunctionPointerで相互変換する
厳密にBlittableじゃなくて値型で良いならdelegeteそのままで持てば良いけど
0523デフォルトの名無しさん (ワッチョイ a9a7-oy3B)
2020/01/19(日) 08:13:14.51ID:CTmJNu4H0
>>520
ねーよ
だって俺が他人のソースを読むときに一番嫌なのは見えにくい動作だもの
ここが隠れてわかりにくい時点でその組み方に何の魅力も感じない
たくさん処理が分岐してるのであればそれを明示的に記述したい
思いっきりswitch caseで書きたい
ソースにhtmlのようなフォント設定機能があったら太字にしてサイズは72ぐらいで表示したい
0524デフォルトの名無しさん (ワッチョイ e252-iiEx)
2020/01/19(日) 08:57:48.92ID:Wel1D6/w0
>>523
小学校からの通知や町内の回覧板に漢字が使われていたら、「俺は漢字は読めねーんだ!覚える気もしねぇ。俺が読めるようにひらがなだけ使え!」って言ってるようなもんだな。
難読漢字を多用してるならともかく、常用漢字も読めないならお前が勉強しろよ。
0525デフォルトの名無しさん (ワッチョイ f901-YUdL)
2020/01/19(日) 09:07:37.25ID:bwAT5wiO0
>>523
〉だって俺が他人のソースを読むときに一番嫌なのは見えにくい動作だもの
誰だってそれは同じ

〉ここが隠れてわかりにくい時点でその組み方に何の魅力も感じない
それは、共通処理が隠れてわからないから全部インライン展開しろやと言ってるのと同じで、バカの理論。
引数にactionがある時点で、呼び出し元で処理を指定するのが判断できる
そういう共通処理なんだなとわかる
使い方もわかる
わかりにくいところはない
この程度のことをわかりにくいと思うなら、相当センス無いよ

〉思いっきりswitch caseで書きたい
actionを知らなくて(使い方に慣れてない。メリットを理解できてない)そういう人も多いからどちらでもどうぞ
action書けるとこは全部書けとも思ってない。メリット大なとこだけ書く(書き直させる)だけでも可と思ってるので
0527デフォルトの名無しさん (ワッチョイ a9a7-oy3B)
2020/01/19(日) 09:19:15.16ID:CTmJNu4H0
俺の価値観はさっきレスした通り
わかりやすい、明示的に、を何より優先する
お前のactionの処理は全部でいくつあるのかソース中を検索かけて隅々まで見ないとわからないじゃないか
欠陥コード乙
0536デフォルトの名無しさん (ブーイモ MM22-l/UV)
2020/01/19(日) 09:45:42.06ID:DBQFxOO/M
明示的に書いてあるほうがいいってのは数が少ない場合に限る
明示的に書いてあっても数が増えると同時に考えなければならない事項が増えて脳に多大な負担がかかるようになる
だから細かいことは気にしなくてもうまく行く仕組みを確立して脳の負担を減らすことの重要性が増す

というのがコードリーディングの観点での評価
他にもリビルド不要で拡張可能であるかどうか
開放閉鎖の原則を満たすかどうか
といった観点でも評価ができる
0539デフォルトの名無しさん (オッペケ Srd1-JESV)
2020/01/19(日) 10:32:09.72ID:MaygjnBtr
コンパイラやバイトコードのツール類は巨大なsweichがドカーンと鎮座してるけど
内容がはっきりしてるからわかりやすい
検索したら内容は終えるし

そうじゃなくて内容に応じて動的に変わる場合はそれじゃ賄えないのでdelegate使うけど追うのは大変なのはわかる
でもそれはswich caseに落とし込めない
落とし込むとバグの温床になる
0547デフォルトの名無しさん (ラクペッ MM99-iig7)
2020/01/19(日) 12:41:58.91ID:/DZ7cGa+M
ガイジの相手をするなガイジ予備軍が
0549デフォルトの名無しさん (アウウィフ FF05-otum)
2020/01/19(日) 18:32:06.96ID:ehZNNwbSF
>>465
「tsv」という呼称では呼ばれていなかったがタブ区切りデータは普通にあった
個人的にはアセンブラとか機械語だけで書かれてるプログラムが使ってることが多かった印象

他には「:」区切りや「;」区切りも割と良く見かけた
0550デフォルトの名無しさん (アウウィフ FF05-otum)
2020/01/19(日) 18:36:52.64ID:ehZNNwbSF
>>469
切れたことならあるよ
0551デフォルトの名無しさん (アウウィフ FF05-otum)
2020/01/19(日) 18:40:17.51ID:ehZNNwbSF
>>484
感情はあくまで感情だから合理的に納得させる必要は無いでしょう
0552デフォルトの名無しさん (アウウィフ FF05-otum)
2020/01/19(日) 18:41:50.89ID:ehZNNwbSF
>>482
逆らっても首になるとは限らない
もしその程度で首になるような会社なら辞めた方が良い
営業に対しては言いたいことを言った方が良い
0556デフォルトの名無しさん (ワイーワ2 FF4a-otum)
2020/01/20(月) 13:02:26.55ID:0GX6odYxF
1E
1F
って書いて欲しい
0557デフォルトの名無しさん (ワッチョイ 872d-N7cG)
2020/01/22(水) 05:35:21.57ID:jiAXPaf20
単一のページ内で、Blazor ServerとBlazor Webassemblyを混ぜて使うことってできないのですか?
主にBlazor Webassemblyを使いたいものの、乗っ取られると危険な処理はBlazor ServerのビルドインSignalRに全部まかせたいんです
0559デフォルトの名無しさん (ワッチョイ 872d-N7cG)
2020/01/24(金) 10:59:53.85ID:dGUW4YWx0
>>558
ちゃんとできる人ならそれもいいかもしれませんが、私のレベルで手を出すのは危険なのです
0560デフォルトの名無しさん (ドコグロ MM7f-9ipO)
2020/01/24(金) 11:40:10.55ID:JmCTVAd4M
意味がわからん
Web APIなんて枯れきった技術だろう
Blazorはバグだらけで、問題があったら自分でソース見たりgithubのissue上げたりできない奴は手を出してはいけない代物
0561デフォルトの名無しさん (ワッチョイ 872d-N7cG)
2020/01/24(金) 12:12:18.20ID:dGUW4YWx0
あなたは優秀なのかもしれませんが、私はマイクロソフトの技術者の足元にも及ばないので勘弁してください
0562デフォルトの名無しさん (ラクッペ MMcb-FqWS)
2020/01/24(金) 12:33:53.87ID:/3SSBVjjM
百姓は畑を耕してろ
一丁前にコードを書くな
0565デフォルトの名無しさん (ワッチョイ a738-LPmA)
2020/01/24(金) 17:28:13.96ID:j9CjfTQQ0
Blazorは表面的には簡単に見えても
本質的には難易度高いはずだけどな
(見えないところで無理してる分)

サーバサイド技術は基本的な知識だから学習するに越したことは無いよ
つーけ後で結局手詰まりになる
0576デフォルトの名無しさん (ワッチョイ bf8c-hW+K)
2020/01/24(金) 23:04:24.05ID:7w/aTgJB0
blazorアイデアはいいんだけどいかんせんバイナリサイズがでかいのがどうにかしてほしい(サーバーサイドの方にはあまり将来性がないように見えるので)
せめてcorert経由するようになれば軽くなるんじゃないかと思うんだが
0577デフォルトの名無しさん (アウアウウー Sa4b-9ipO)
2020/01/25(土) 01:41:58.91ID:d2esTLOPa
>>572
HTML/CSSはどのみち必須なんだから、クラシックなMVCアプリならほとんど変わらんよ
Blazorの意義はJSをゴリゴリ書かなくてもSPAを作れることにあるわけだけど、業務系でそんなもん要求されない
0578デフォルトの名無しさん (ブーイモ MMcf-PIvP)
2020/01/25(土) 08:09:35.21ID:uZBTkj+yM
業務系は巨大で複雑なUIが多いからSPAのほうがうまくハマる
今は高度なJSスキルが必要だから避けられてるけどC#で書けるって理解されたら業務系でも採用が増えるだろうね
JSを排除できるメリットはかなり大きい
それに加えてMVCよりBlazorのほうが構文とアーキテクチャが直感的で簡単なのもポイント
BlazorはHTTP/HTMLの事情を詳しく知らなくても書けるように出来てる
MVCはHTTP/HTMLフレンドリで必要な前提知識が多いから業務系では採用しにくい
0581デフォルトの名無しさん (アウアウウー Sa4b-FkkX)
2020/01/25(土) 11:56:16.01ID:yEmrfQyPa
swtich分って必要なんですか?
普通に変数1個にして外部ファイルで設定すればいいだけじゃ?
0583デフォルトの名無しさん (アウアウウー Sa4b-FkkX)
2020/01/25(土) 12:47:14.80ID:yEmrfQyPa
1=りんご
2=バナナ
3=キウイ
4=いちご
5=みかん

こんな感じのテキストファイル作ればいいだけじゃ?
0587デフォルトの名無しさん (ワッチョイ 872d-N7cG)
2020/01/25(土) 14:20:20.86ID:ZOSNmQ0W0
文字列やバイナリを処理する辺りでswitchが出てくるのは仕方ないにしても、それ以外でswitch文が出てきたらほぼ設計ミスだろうな
0588デフォルトの名無しさん (ワッチョイ 872d-N7cG)
2020/01/25(土) 14:22:56.55ID:ZOSNmQ0W0
ごめん、入力を受け付けるようなものは使ってもミスでも何でもないな
0589デフォルトの名無しさん (ワッチョイ 5f52-zhKY)
2020/01/25(土) 14:29:09.12ID:yYit9skn0
>>583
それでいいと思うなら、もうそれでいいよ。
switchが役立つと思う場面に出会ったことがないなら無理に使わなくていい。
普通にプログラミングの学習をしたり実際に何か作り始めれば、そう遠くないうちに役に立つと思える場面に出会うはず。
0591デフォルトの名無しさん (ワッチョイ 7f63-FqWS)
2020/01/25(土) 14:46:40.30ID:r9Vw3y6V0
>>583
使い道がないのはお前の存在も同じだから
中央線にでも飛び込んで死ね
0592デフォルトの名無しさん (アウアウウー Sa4b-2gyN)
2020/01/25(土) 14:56:41.64ID:GuCewVbja
プログラミングに限らずどのフィールドでもそうだけど、
イキってる系の連中の主張は話半分に聞いておくのがいいと思うよw
0593デフォルトの名無しさん (ワッチョイ 5f01-oRbG)
2020/01/25(土) 15:17:19.02ID:m3Nt4oA+0
>>583
条件文をマッピングテーブルで置き換えるという古典的なリファクタリング方法の一つ
どちらかが常に優れてるわけではなく状況に応じて選択するもの

C#のバージョンや分岐の数によっては
コンパイラがswitch文をdictionaryのlookupに変換してる
0596デフォルトの名無しさん (ワッチョイ 5f01-oRbG)
2020/01/25(土) 18:16:56.04ID:m3Nt4oA+0
>>594
Roslynから変わったのは文字列で分岐される場合のみの話

文字列比較でhash tableをlookupするんじゃなく
数値比較で事前にハッシュしたsort済みarrayをlookupするようになってる
細かい部分を抜きにすると数値をキーにしたSortedDictionaryのlookupと同じ
でこういうのは今の>>583には不必要な知識
0597デフォルトの名無しさん (アウアウウー Sa4b-kxbL)
2020/01/25(土) 22:26:55.47ID:wDceYoyFa
流れよく分かんないんだけど
つまりenumで分岐して処理呼び出す場合はswitchと配列のどっちが何倍くらい速いの?

public static int Execute(this Test type, int value){
 // 無難にベタ書き
 switch(type){
  case Test.One: return Method(value);
 }

 // 配列からメソッドを呼ぶ
 return methods[(int)type](value);
}

こんな風にenumに処理持たせてやりたいんだ俺
0601デフォルトの名無しさん (ワッチョイ 0763-Lndp)
2020/01/26(日) 00:22:55.28ID:P1M2Ekec0
配列はちゃんと理解してないと境界値チェックが入って意外に遅くなることがあるよ
だいたい気にならんレベルだけど競技プロとかやるようなら結構影響してくる
0602デフォルトの名無しさん (アウアウウー Sa4b-2gyN)
2020/01/26(日) 00:30:35.09ID:1Qgc/rXOa
>>597
仮に配列使う方が効率的だとしてもenumの値に依存するような実装は論外でしょうw
やってはいけない、の見本みたいなもの
0603デフォルトの名無しさん (ワッチョイ 0763-Lndp)
2020/01/26(日) 01:00:25.24ID:P1M2Ekec0
俺もCから入ったから配列にして呼び出す処理は昔はよく書いた
enumを配列の添字にするのもよくやった
処理速度気にする開発することは多少あるけど基本的にどっちもC#ではやらんな

enumに処理持たせたいって要件ならそれぞれの値ごとにclass作って継承させるかな?
詳細仕様次第ではあるけど
そんなんめんどくせってなるようなレベルならぶっちゃけどっちだって変わらん話なんだから好きにすれば?って思う
0605デフォルトの名無しさん (アウアウウー Sa4b-2gyN)
2020/01/26(日) 02:46:23.95ID:1Qgc/rXOa
過去に散々既出だと思うけどdelegate自体がもともと重いんだろうね。
単なる関数ポインタとは違うから
0608デフォルトの名無しさん (アウアウウー Sa4b-FkkX)
2020/01/28(火) 19:46:47.61ID:eMbEeMz/a
>>585
内部的なロジックミスにならんようにすればいいだけ
プログラムが長大になる原因はテキストを利用しないからだと思いますよ
1万行のプログラムが果たしてそれだけ必要なのか?って思います
0609デフォルトの名無しさん (アウアウウー Sa4b-FkkX)
2020/01/28(火) 19:48:39.10ID:eMbEeMz/a
>>589
俺も思いますね
というか文法的な事でももっと改善してよって事多いですよね!

0<input<&&input<5→うぜー
0<input<5→これでいいだろうが
0610デフォルトの名無しさん (ワッチョイ 0763-Lndp)
2020/01/28(火) 20:37:03.72ID:WmWS3LeK0
>>609
範囲チェックの改善なんて散々議論されてるし今も要望で上がってる
気になるなら見てくればいいよ
なぜ未だに入っていないかとかもちゃんと説明されてる
0611デフォルトの名無しさん (アウアウウー Sa4b-FkkX)
2020/01/28(火) 20:54:23.00ID:eMbEeMz/a
>>610
何で?ググるの面倒なので
0612デフォルトの名無しさん (ワッチョイ 5f52-zhKY)
2020/01/28(火) 20:56:03.48ID:ciqR13vi0
>>609
もうID変わってるだろうけど>>589なのだが、皮肉のつもりで言ったのが通じてないようだ。
switchの用途として>>583みたいなのでいいのではなんて言うのは圧倒的に経験が少ない証拠だろう。ちょっと慣れて自分でコードを書けるようになればそんなバカな発想はしなくなるよ。
そんな段階で>>609みたいな文法にケチつける前に、なんでその文法が必要なのか、何でそういう形式になってるのか理解する努力をしなよ。
C#のような後発の言語が生まれる過程では、君みたいな初心者が考えるようなことはとっくの昔に議論済みでそれらを踏まえた上で今の形がある。疑問を持つのは多いに結構だけど、往々にして言語の仕様が悪いのではなく、単に自分が無知なだけだから。
0616デフォルトの名無しさん (ワッチョイ 47a7-zUmo)
2020/01/28(火) 21:23:16.25ID:q5l9JsKl0
JavaScriptとPHPに慣れたら多次元連想配列無い言語がオワコンに見えるようになった
しかし

var obj = getExExBigData();

↑超絶巨大データ(フォーマット・ドキュメント不明)
勘弁してくれよってのも事実
c#の未来はどうなるのか?
0617デフォルトの名無しさん (ワッチョイ 7dda-mRwA)
2020/01/29(水) 04:42:05.41ID:9DDwBhYq0
DataGridViewで、Cellに不正な値が入力された場合はフォーカスの移動を禁止するようにしたいのですが、
以下の方法では、移動してしまいます。
移動させないようにするにはどうすればよいでしょうか。

private void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (String.IsNullOrEmpty(this.dataGridView[e.ColumnIndex, e.RowIndex].Value as string))
{
e.Cancel = true;
}
}
0621デフォルトの名無しさん (ワッチョイ 667b-UZ8j)
2020/01/29(水) 17:28:02.98ID:HGA4G3kr0
>>617
この人だけじゃないけど、まずこういうところに質問投げる前に分岐がきちんと機能しているか確かめた方がいい
それの場合は this.dataGridView[e.ColumnIndex, e.RowIndex].Value as stringの内容確認
直接の回答としてはhttp://dobon.net/vb/dotnet/datagridview/cellvalidating.htmlを参考にして書き直せ
解説を入れると
DataGridViewでセルに直接値を入力した場合はフォーカスが変わるか.EndEdit()などしないと入力された値が反映されない
そのイベント自体そのために用意されているはず
だからそのメソッドの中で「dataGridView[e.ColumnIndex, e.RowIndex].Value」は入力する前のセルの値で
入力された値を参照したかったら「e.FormattedValue」を見ないといけない
0622デフォルトの名無しさん (アウアウウー Sa21-0Ybi)
2020/01/29(水) 20:53:31.76ID:2z1gsFLxa
>>612
この言語って文字列操作に特化してるからテキストを利用するのって
全然普通だと思いますけどね。

後0<input&&input<10じゃないとだめなのは、何となくですが
数式はポーランド記法によって処理されることに関係しますか?
分かりませんけど。
0627デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/01/29(水) 21:45:33.03ID:Bye/BSTsa
>>623
それは出来ない理由にはなってないんじゃないの?
あんまり自信はないが、

評価結果が数値 < 評価結果が数値
評価結果が数値 < 評価結果が数値 < 評価結果が数値

両者を別の演算として区別することはやってできないことはないはず。
0628デフォルトの名無しさん (ワッチョイ 4a52-G6DY)
2020/01/29(水) 21:59:18.87ID:iDUguYS70
>>627
既存のルールに新たに3値を並べて比較する構文を追加するとしたら、既存のルールを維持したまま、新たなルールに伴う考えうる様々な組み合わせについて明確で一貫性や完全性のあるルールを作らなければならないが、かなり複雑なものになるだろう。
やってやれないことはないにしても、デメリット(手間と複雑さや混乱)に見合うメリットがないから、ほとんどの人に望まれていないし、言語仕様として追加されることもないだろう。
0630デフォルトの名無しさん (アウアウウー Sa21-0Ybi)
2020/01/29(水) 22:18:04.76ID:2z1gsFLxa
<・・・小文字だからC#の言語に従う
<・・・大文字なので特別に数学的記法とみなす

これでどうだろう
0633デフォルトの名無しさん (アウアウウー Sa21-0Ybi)
2020/01/29(水) 22:34:24.68ID:2z1gsFLxa
>>631
#defineか?
0634デフォルトの名無しさん (ワッチョイ 0a1b-jgyw)
2020/01/29(水) 22:39:08.64ID:7ZbwpcWy0
>>627
そりゃ実装すれば何だって可能だが、論理的な矛盾になるから無理なんだよ
演算子の優先順位と結合則で二項演算するのが原則なのに、そこを横紙破りしてしまったら誰も付いて行けない
0639デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/01/29(水) 23:06:16.31ID:Bye/BSTsa
>>634
文脈依存キーワードと何も違わないと思うよ
0641デフォルトの名無しさん (アウアウウー Sa21-0Ybi)
2020/01/29(水) 23:24:37.56ID:2z1gsFLxa
>>637の答えがほぼ>>638ってことで良いですか?
また便利な情報を得てしまったわ
0644デフォルトの名無しさん (ワッチョイ 6abd-0Ybi)
2020/01/29(水) 23:57:35.84ID:fVMIrPAj0
C#のターゲットフレームワークってどういう仕様なんでしょうか?
わかりやすいサイト教えてもらえると助かります。

exe 4.5 dll 3.5 
→ ビルドできるからok?
exe 3.5 dll 4.5 
→ コンパイルエラー
  ただし動的に読み込んだ場合は動いてるっぽい?
0647デフォルトの名無しさん (ワッチョイ 5942-unxX)
2020/01/30(木) 14:25:04.44ID:XrVMMkZO0
visual studio2019 30日たったら使えなくなったんだけど
無料じゃないの?
PC替えるまで以前のバージョンはずっと使えてたんだけど
2019は違うの?
無料版使い方おしえてください
0648デフォルトの名無しさん (ワッチョイ 3d2d-XhTL)
2020/01/30(木) 14:27:27.39ID:UIStC4VF0
ログインすれば無料のまま使えるよ
0650デフォルトの名無しさん (アウアウエー Sa52-/fp1)
2020/01/31(金) 03:22:54.75ID:A50vozAla
ボタンを押すと計算開始して結果をテキストボックスに表示する処理(数十秒かかります)
まずボタンを押してその処理がまだ終わってないうちに、またボタンを押すと次の処理がどんどん溜まっていくのですが、
これを防止する方法はないでしょうか
(例えばついボタンをダブルクリックをしてしまった時に1回表示してからまた同じ処理に入ってしまう)

ボタン押したら結果が表示されるまで全部のボタンのenabledをfalseにする処理入れてみたのですがこれではうまく回避できませんでした
0655デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/01/31(金) 13:16:14.42ID:59NEldNla
>>653
何も難しくないよw
>ボタンのenabledをfalseにする処理入れてみたのですがこれではうまく回避できません
これは「重い処理」の後にそれをやってるからそうなる

ボタンのイベントハンドラで真っ先にEnabled = falseにすればそんなことは起こらない。
0657デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/01/31(金) 14:58:26.86ID:59NEldNla
>>656
はいはい頭悪そうワロタw
0658デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/01/31(金) 15:16:23.75ID:59NEldNla
なぜかコードが貼れないので割愛するけど、実際にやって>>655が正しいことを確認した
当たり前の話だがw
0661デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/01/31(金) 15:25:15.63ID:59NEldNla
つくづく馬鹿な奴w
偉そうに他人様に命令する前に自分は実際にコード書いて確認したのかとw

まあ普通こんなレベルの話は確認するまでもないけどね
0662デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/01/31(金) 15:41:48.86ID:59NEldNla
どうでもいいけど

(1) Thread.Sleep
(2) Task.Delay
(3) ビジーループ

いずれのダミーを使ってもイベントハンドラの頭でEnabled = falseとすることで
ボタン連打によるイベントハンドラへの意図しない「再入」を抑止できることを確認した
0663デフォルトの名無しさん (ワッチョイ 3d2d-XhTL)
2020/01/31(金) 15:43:04.01ID:xcV7YFLC0
イベントを呼び出すのが毎回同じスレッドなんだから、>>655の方法で完璧に止まると思うけどな
0664デフォルトの名無しさん (ワッチョイ 5d2f-KoMo)
2020/01/31(金) 16:25:21.45ID:6LQhDtiB0
>>662
>(例えばついボタンをダブルクリックをしてしまった時に1回表示してからまた同じ処理に入ってしまう)
再入が問題じゃないって気づけよ
タイミングによってクリックイベントが2回キューイングされることがあるのが問題なんだよ
0665デフォルトの名無しさん (ワッチョイ 6663-3Mgd)
2020/01/31(金) 16:55:17.80ID:rVrHfFzc0
ガイジに何を気付けって?
お前も方面が違うだけで同じガイジだな
0666デフォルトの名無しさん (ワッチョイ 667b-UZ8j)
2020/01/31(金) 17:43:12.90ID:Wmzh3pBZ0
>>650
イベント処理に入る前にイベントハンドラを外しておくといい。button1.Click-=button_Clickみたいな感じで
ただValueChangedとかならともかくボタンで普通はやらないと思う。「enabledをfalse」になっているボタンでイベントが実行されるのはおかしい
計算処理を非同期に渡して計算が終わらないうちにEnabledを復帰させるとか変なことやっていないか?
EnabledでなくVisibleをfalse->trueに変えてみて確認したら?
動作に関しては他の人がいろいろ言っているようだけど一度ミニマムコード作って自分で動作確認するのが一番確実
0667デフォルトの名無しさん (ワッチョイ 2a01-I+PI)
2020/01/31(金) 18:37:18.25ID:y3M2GGQ20
private void button1_Click(object sender, EventArgs e) {
button1.Enabled = false;
//重い処理
button1.Enabled = true;
}

上のコードでもユーザーが最初のクリックをしてから
イベントハンドラが呼ばれてEnabled = falseが設定されて
さらにそれからクリックできなくなるまでの間に
複数回のクリックが発生する可能性がある
(Windowメッセージのキューに溜まる)

だからEnabled = trueに戻す前に
溜まったクリックイベントを流してやる必要がある
0668デフォルトの名無しさん (ラクッペ MM6d-3Mgd)
2020/01/31(金) 19:04:25.31ID:AyZqOEveM
難しすぎて分かんねえよ兄貴
0669デフォルトの名無しさん (ワッチョイ ea01-CWn9)
2020/01/31(金) 19:05:05.53ID:EEAl6aZb0
>>663
イベントは非同期でキューイングされるから>>655では不完全
アマチュアレベルとか自分しか使わないならそれで良いけど不特定多数が使うようなソフトだとダメダメ
ID:59NEldNlaはコード書いて確認する姿勢は良いけど確認がザル過ぎる
てか、アプリ作ってたらこの手の経験はしてるはずなんだが…
0671デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/01/31(金) 19:29:46.30ID:59NEldNla
>>667
そんな必要ないってば...
君がOSのコード書く立場になってよく考えてよ。
君はメッセージをエンキューする時にウィンドウが無効化されているかどうか
ノールックでやっちゃうような間抜けなコード書くの?w

そんなのありえへん
0676デフォルトの名無しさん (オッペケ Srbd-Y6bJ)
2020/01/31(金) 20:12:38.30ID:J9WtEN9Ir
今日も仕事で新型コロナウイルスなんて騒ぎすぎだという老人の独演会を30分聞かされた
対策も必要ない死ぬ人は死ぬでいいじゃないかと言う話

老害しなないかな
0677デフォルトの名無しさん (ワッチョイ 3d2d-XhTL)
2020/01/31(金) 20:19:21.81ID:xcV7YFLC0
キューが溜まる派は、button1.Enabled = false;なし、かつ、非同期処理なしにすれば簡単に再現コードができるんだろう
でも現実には再現しないから困ってんだろうな
0678デフォルトの名無しさん (ワッチョイ 3d2d-XhTL)
2020/01/31(金) 20:19:22.13ID:xcV7YFLC0
キューが溜まる派は、button1.Enabled = false;なし、かつ、非同期処理なしにすれば簡単に再現コードができるんだろう
でも現実には再現しないから困ってんだろうな
0679デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/01/31(金) 20:31:30.36ID:59NEldNla
ちなみに念のためこんなのもやってみたが

//button1をクリックした後button2を連打せよ
private void button1_Click(object sender, EventArgs e)
{
  Thread.Sleep(5000);
}

private void button2_Click(object sender, EventArgs e)
{
  MessageBox.Show("Button Clicked !");
}

Win32に詳しくないので理由を与えることが出来ないけど、
この場合もメッセージボックスは1度しか表示されない
0680デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/01/31(金) 20:46:38.12ID:59NEldNla
>>676
完全スレ違いだけどそれはその老害の言ってることの方がただしいw

専門家はたいしたリスクないから騒ぎすぎだと言ってるのに
どっかの怪しいネットde真実クンの被害妄想を真に受ける奴がどうかしてるよ

こういうの認知バイアスって言うんだけどさ
0681デフォルトの名無しさん (オッペケ Srbd-Y6bJ)
2020/01/31(金) 21:00:47.10ID:J9WtEN9Ir
一流の専門家wとWHOと各国の対応見る限り
誰かの方が認知バイアスかかってると思う

世の中でこういわれてるけど逆の方に○○と言うのを言って俺スゲーしたいのが老害
0682デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/01/31(金) 21:06:43.84ID:59NEldNla
>>679
いや待て、ひょっとしてMessageBoxがフォーカスを奪うのが関係しているのかと思って
Console.WriteLine("Button Clicked !");

に変えてみたらなんと複数回表示されるなww
何てこったw

この現象は以下のコードで回避できた
private void button2_Click(object sender, EventArgs e)
{
  if (button2.Enabled)
  {
    button2.Enabled = false;
    Console.WriteLine("Button Clicked !");
  }
  Application.DoEvents();      
  button2.Enabled = true;
}
0684デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/01/31(金) 21:09:59.26ID:59NEldNla
>>681
WHOは声明で過剰反応するなと言ってる。
多くの伝染疾患の専門家の意見も同じ

各国政府の対応はよく言えば安全牌、悪く言えば役人や政治家の保身だね
テールリスクとしてはヤバいことになる可能性は確かにゼロではない。
その場合に誰も批判されたくないしね。
費用負担するのは納税者であって役人でも政治家でもないし
0689デフォルトの名無しさん (ワッチョイ 6a59-/fp1)
2020/01/31(金) 23:16:44.01ID:1nDsQqma0
引数でリスト渡すけど要素を変更して欲しくない時って結局どうすりゃいいの?
Immutableは使えない環境の場合

ReadOnlyCollectionは引数の型としては想定してないみたいだけど、キャスト防ごうと思ったらこれしかないよね?
0693デフォルトの名無しさん (ワッチョイ 6ab9-ol1H)
2020/02/01(土) 01:36:17.36ID:XuRc8/EP0
質問お願いいたします。

カスタム日時書式指定文字列を使って、
例えば DateTime.Now.ToString("M月") と書けば、
今なら "2月" という文字列が受け取れます。

しかし、DateTime.Now.ToString("M") と書いても
"2" という文字列ではなく "2月1日" という文字列が返ってきてしまいます。

これは "M" という文字列が(カスタムでなく)標準の日時書式指定文字列と
解釈されてしまっているからのようなのですが、
DateTime.Now.ToString(...) のような書き方で
"2" という文字列を受け取ることは可能でしょうか。

もちろん DateTime.Now.Month.ToString() と書けば
"2" を得ることはできますが、IFormattable インターフェース経由で
文字列を取得したいという事情があり、
Month プロパティを使う方法は避けたいと考えております。

もし何かおわかりのことがあればご教授いただけると幸いです。
どうぞよろしくお願いいたします。
0697デフォルトの名無しさん (ワッチョイ 6ab9-ol1H)
2020/02/01(土) 02:05:13.79ID:XuRc8/EP0
>>695
おお!まさに探していたものです。
'escape' 等をキーワードにして検索を試していたのですが
少し的が外れていたようです。
本当に感謝です。どうもありがとうございます。

>>694
ご提案どうもありがとうございます。
ただ今回は IFormattable.ToString の引数だけを使って
文字列を取得したかったので、
% を使う方法を使わせていただこうと思います。
0700デフォルトの名無しさん (ワッチョイ a5b0-x1ET)
2020/02/01(土) 08:01:32.31ID:22BQCiJ60
しょーもない質問なんですが
起動時、必要なファイル(iniとか)を探して、無ければ起動しないというプロセスは
Form1_Load()にifでApplication.Exit()書いて強制終了にしてしまえば良いのでしょうか?
Form1_Load()の途中で強制終了はwindows的に無問題でしょうか?
0704デフォルトの名無しさん (ワッチョイ a5b0-x1ET)
2020/02/01(土) 10:09:48.17ID:22BQCiJ60
>>702
すんません。よく分かってないのですが、
Main()の中の3行をifでスルーさせれば良いってことですか?
それともRunの手前でExit()ってことですか?
0705デフォルトの名無しさん (ワッチョイ 39da-KENp)
2020/02/01(土) 10:22:15.63ID:a0E2Gls+0
>>704
正常ならform作ってrun、異常ならformを作らない。

テンプレのApplication3行は、最初の2行がGUIの設定、最後がformの作成&実行。

判定条件がファイルの有無なら、GUIの設定待つ理由無いでしょ
0711デフォルトの名無しさん (ラクッペ MM6d-3Mgd)
2020/02/01(土) 12:04:42.89ID:2IjxM/PsM
C#しか書けない奴はこれだから使えない
0712デフォルトの名無しさん (ワッチョイ 66b0-x1ET)
2020/02/01(土) 13:11:09.93ID:neZT0y0y0
まあここは初心者スレなんだし勘弁してくれや
使えない部下との仕事のウサばらしは他でやってくれ
こっちは趣味で自分の使うアプリしか作ったことないから
「もしファイルが無かったら」なんて仮想の対策なんてしたこと無かったしww
それにC#というより「コンピュータのプログラムが動く仕組みは」に近い分野だったね

>>705
>>708
色々実験して、なんとなくできた。
Runが実行されなかったらExitは必要無いんだな。
ありがと。
0715デフォルトの名無しさん (ワッチョイ 6aad-unxX)
2020/02/01(土) 13:49:16.30ID:OqODUHFj0
>>706
「EnableWindowが戻る前だがWS_DISABLEDが立った後」だから状態変化後の通知でしょ
MSの動詞の使い方なんぞに一貫性は期待しちゃ駄目よ

もともとが定義の雑な質問なんだから現段階でこっちにイチャモン付けても実りはないと思うで
0717デフォルトの名無しさん (ワッチョイ 6aad-unxX)
2020/02/01(土) 15:00:01.57ID:OqODUHFj0
Winformsのコントロール実装だと大体Enabledの中で状態変数を変化させて
ついでにEnableWindowを呼んでネイティブ層での入力を無効化し
ついでにInvalidateを呼んでペイントハンドラをポストして
のちに出キューされたペイントハンドラがコントロールの状態を見ながら描画って流れやね
0718デフォルトの名無しさん (ワッチョイ 39da-KENp)
2020/02/01(土) 15:32:06.42ID:a0E2Gls+0
>>712
時間のかかる大規模な初期化をするなら、
フォーム作ってスプラッシュを立ち上げて
その中でってのはあるけど、
小規模ならフォーム作る前にしちゃうと簡単

good luck!
0721デフォルトの名無しさん (ワッチョイ 491a-jgyw)
2020/02/01(土) 20:05:49.65ID:75XTVAQS0
先輩方、設計に関して質問があります
GameManagerというシングルトンにリソースやシステムの参照を固めて、
各々のクラスから静的経由でアクセスする神スタイルって何かデメリットありますか?

最初はResourceManagerみたいに細分化していたんですが、規模が大きくなるにつれてあれはどのクラスが持ってたっけ?と頭がとっ散らかって来たので、
ならいっそpartialでファイル分けた神クラスを用意した方が分かりやすさはあると思ったんです
俺、何か間違えてますかね?
0722デフォルトの名無しさん (ワッチョイ 6917-unxX)
2020/02/01(土) 20:12:40.38ID:hqbU2d/k0
神クラスでググればいっぱい出てくるだろ
つか神クラスって単語知ってるならもう何度も見てると思うけど
自分に都合の悪いところは見ないタイプかな?
0723デフォルトの名無しさん (ワッチョイ 7938-egZw)
2020/02/01(土) 20:21:47.40ID:BvtANEfa0
参照を直接持つ神クラスは巨大なクラスになって破綻しそう
partialはファイルで分けるだけの問題だし

画像リソースやサウンドクラスの参照を返す、サービスロケータパターンなら有り得る

XNAだとgameクラスがこれに相当
unityのGetComponentでは、コンポーネントパターンとの組み合わせで使われてたりはする

サービスロケータにも宗教的な賛否はあるが実用的ではある
0724デフォルトの名無しさん (ワッチョイ 491a-jgyw)
2020/02/01(土) 20:33:59.73ID:75XTVAQS0
>>722
いや、単体で完結するクラスはしっかり最小構成で切り分けてるっすよ
ただ互いが互いを参照し合うクモの巣みたいなクラス群は、
参照先を一本にまとめる方が理に適っているのではないかと思って、
デザパタでいうFacadeやMadiatorを突き詰めて行ったら、
全てがGameManagerに集約されて神クラスっぽくなったのでこれはどうなんだと思った次第で
0725デフォルトの名無しさん (ワッチョイ 4a52-G6DY)
2020/02/01(土) 20:41:23.47ID:JWECbGc70
>>721
どのクラスが持ってるか分からなくなるのはクラス分けが下手だったからだろう。
すべて神クラスに押し込んだら、こんどは逆にあるメンバが元々何のために用意したものか分からなくなったり、別のメンバと取り違えたりして、破綻するだけだと思うぞ。
0726デフォルトの名無しさん (ブーイモ MM0a-YgEg)
2020/02/01(土) 20:42:04.40ID:XYPXtNPRM
互いに参照し合うってのがそもそもあまり良くないけどそれは別の問題としておいておくとする
参照しあうとしても必要な相互参照だけ持ってればいい
相互参照してるから神クラスにするって発想は全く繋がらない
無関係な参照を持ってたらコード読んだ人が混乱するだろ
0727デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/02/01(土) 21:01:38.43ID:agRHfxgWa
>>724
プログラムと同じ寿命で複数個所からアクセスする必要があるインスタンスを
グローバル変数として提供する静的クラスは是か非か、という意味なら
個人的には支持しますね。
0728デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/02/01(土) 21:03:13.43ID:agRHfxgWa
いや、グローバル変数という言い方は変かw
「グローバル変数」と書くべきだった
0729デフォルトの名無しさん (アウアウウー Sa21-jaaY)
2020/02/01(土) 21:34:07.42ID:Ar+g0K07a
>>724
実際にコードを書く人間を無視して、設計ありきで開発を統制しようとすると必ず破綻するものだ
モジュール化は基本的に開発の作業単位と一致しているのが理想
その作業単位こそがメソッドになったりクラスになったり、
開発チームや部門などもっと大きな粒度ならドメインやマイクロサービスになるわけだ
君が一人で開発していて、一緒に全部触ることが多いんだったらそれらは一箇所にあるのが自然
0736デフォルトの名無しさん (ワッチョイ a5b0-/fp1)
2020/02/02(日) 17:49:10.92ID:PECaEDf90
オブジェクト指向が全然わかりません。助けてください。

オブジェクト指向では、クラスしか使わないのでしょうか。
そもそも関数とクラスの使い分けがわかりません。
関数、クラスどちらでも良いように思えてしまいます。

クラス内で別のクラスや関数を使うことはあるのでしょうか。
その場合、呼ぶクラスの配置は、外にすればよいのか混乱しています。
0738デフォルトの名無しさん (ワッチョイ 6d7b-0ef2)
2020/02/02(日) 17:57:12.48ID:2oi7q6200
>>736
オブジェクト指向が理解できなくてもC#は書けるからそれだけならスレ違い
>クラス内で別のクラスや関数を使うことはあるのでしょうか
コントロールもクラスだしむしろクラス内で別のクラス使わずに書くことの方が少ない
関数はC#には無い定義だからどんな意味で書いているかわからない
初心者ならそんなこと気にせずにコード書いておけばそのうち身につく
0741デフォルトの名無しさん (ワッチョイ ea01-CWn9)
2020/02/02(日) 20:19:18.10ID:o79zkFFu0
>>735
if(isEscape){
 switch(f){
 case 'c':
  result += Code;
  break;
 case 'n':
  result += Name;
  break;
 case 'y':
  result += DateTime.Now.ToString("yyyy");
  break;
 case 'm':
  result += DateTime.Now.ToString("MM");
  break;
 case 'd':
  result += DateTime.Now.ToString("dd");
  break;
 default:
  result += f;
  break;
 }
 isEscape = false;
} else if(f == '%'){
 isEscape = true;
} else {
 result += f;
}
0742デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/02/02(日) 20:24:30.59ID:p5iYeTFJa
>>735
別の意見の人もいるかもしれんけど、
とりあえず置換箇所を抜き出す部分と置換する部分は
分けた方が後でメンテしやすいコードになると思うよ
0744デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/02/02(日) 21:50:42.59ID:p5iYeTFJa
>>735
書いてみた
俺も暇だな
ただし大人の事情でProductはイミュータブルなクラスに変えさせてもらったw
https://ideone.com/Ck6bNl
0745デフォルトの名無しさん (ブーイモ MM8e-YgEg)
2020/02/02(日) 22:59:32.43ID:1z8f9n64M
こういうのは結局if羅列が正解なんだよな
switchだと値の単純比較しかできないからifで柔軟に分岐させるほうがいい
あらかじめ書式を増やせるような工夫は大抵の場合YAGNIでコードを複雑に遅くするだけで終わる
0746デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/02/02(日) 23:04:32.56ID:p5iYeTFJa
>>745
なんか2行目と3行目が矛盾してると思うんだけどw
0747デフォルトの名無しさん (ワッチョイ aa89-unxX)
2020/02/02(日) 23:04:47.87ID:IAcIXRCS0
>>737
.NetCoreでもswitchべた書きなんですね
参考になります

>>743
ご指摘の通り%が出力できない仕様でした
>>741さんのがよりスマートで%も出力できますね

>>742
>>744さんのコードのような感じでしょうか
高度すぎて自分には発想にも至らなかったです。すごく勉強になります

みなさんありがとうございます
0749デフォルトの名無しさん (アウアウウー Sa21-G+gO)
2020/02/02(日) 23:07:46.54ID:p5iYeTFJa
それはともかく、くどいようだけど、
どんな方法で実装するにしろ置換箇所の検出と置換は
分けた方がいいと思うよ

>>741とか>>735みたいな両者が混然一体となったカオスなコードはあかんw
0750デフォルトの名無しさん (ワッチョイ aa89-unxX)
2020/02/02(日) 23:21:57.19ID:IAcIXRCS0
>>749
趣味プログラマーということもあり、
あまり人から教えてもらえる機会がないのでとてもありがたいです

ただの直感ですが、リファクタリング大好きなあのMDさんだったりして、
と感じましたw
0755デフォルトの名無しさん (ワッチョイ 2a01-I+PI)
2020/02/02(日) 23:57:18.28ID:Ng7YaIlp0
>>744
うーん、参考にはなるがpremature abstractionに感じる

置換箇所の検出と置換を分けるかどうかより
Productが直接SymbolTranslatorを参照したり
formatルールがコンストラクタに入り込んできてたり
EvaluatorみたいなProductと関係ないメソッドが生えてるほうがずっと気になる

クラスを分けるならまずProductFormatterに委譲する形にしておいて
他のFormatterを書く時にもう一段階抽象化するかどうかを考えたほうがいい気がする
0757デフォルトの名無しさん (ブーイモ MM8e-YgEg)
2020/02/03(月) 01:40:48.87ID:uUg+nbORM
>>756
while Nが文字列長より小さい
if N文字目以後に%を含まない then 終了
if N文字目が% then ネストしてプレースホルダ解析してNを更新
else 次の%直前までまとめて読み取ってNを更新

例えばこういうの
0764デフォルトの名無しさん (ワッチョイ 2a01-I+PI)
2020/02/04(火) 23:41:46.07ID:26FK/H9g0
>>762
了解、ありがとう

>>763
処理別 × 型別の比較をするマイクロベンチのコードで+=演算子を使ってて
処理か型を追加するたびに処理数 × 型数のコードを追加するのが
面倒くさいからGenericにしたかったんだよ

C#の場合オーバーヘッドがあるから正確な測定には適さないけど
Genericでも傾向は分かるから
0766デフォルトの名無しさん (ワッチョイ d71f-fAzD)
2020/02/05(水) 22:48:02.31ID:YDjicEKX0
ちょっと教えて下さい。

CADで書いた2次元の平面図を読み取りエクセル等のシートにに貼り付ける事は可能ですか?
可能であれは加えて、アルファベットと数字を取得も出来ますか?
0770デフォルトの名無しさん (ワッチョイ 9f84-tipF)
2020/02/06(木) 11:15:51.94ID:p3rMUukc0
質問よろしくお願いします
親フォームに作ったlistBoxのItemsプロパティを子フォームから取得したいので
公開用のpublicのプロパティを作って、(Form1)this.Ownerで取得する方法でやろうとしてるのですが
Itemsプロパティの型が分からずできません。objectではできませんでした。
同じことをtextBox.Textでやるとstring型で簡単にできました。
0772デフォルトの名無しさん (ワッチョイ 9f84-tipF)
2020/02/06(木) 11:32:10.09ID:p3rMUukc0
>>771
そこは見たのですが
どこに型が書かれてるのかわかりません
0774デフォルトの名無しさん (ワッチョイ 9f84-tipF)
2020/02/06(木) 11:42:39.07ID:p3rMUukc0
>>773
はい。親フォーム上なら取得できます。
0776デフォルトの名無しさん (アウアウウー Sa9b-WggA)
2020/02/06(木) 12:25:01.67ID:3avRIqPoa
>>770
一般的にはそもそもForm上のコントロールを外から参照するのは不適切。

それ、「PCのモニターに写っている同じ映像を別のモニターにも表示したいので
PCのモニターからHDMI出力を出せないか?」って言ってるのと同じでは?
発想が間違ってるよ。
なぜ映像のソース側にその機能を求めないでただの表示機に求める?
0777デフォルトの名無しさん (ワッチョイ 9f84-tipF)
2020/02/06(木) 12:43:34.73ID:p3rMUukc0
>>775
なるほど!
あの長い文字列からusing除いた部分が型だったのか
できました!
>>776
やり方間違ってます?
Itemsに直接行かないで、
Itemsを配列に落としてからそっちを取る情が良いのかな?
なんか二度手間
0778デフォルトの名無しさん (アウアウウー Sa9b-QEaq)
2020/02/06(木) 12:50:38.55ID:wOe8UCqWa
>>776
デイジーチェーンという既にあるものを例に出して発想が間違ってるとか無能感が凄えな
使う側が加工する発想が無いとか普段どんな神クラスを生み出してるのか興味ある
0779デフォルトの名無しさん (アウアウウー Sa9b-WggA)
2020/02/06(木) 13:02:40.83ID:3avRIqPoa
>>778
世の中こういう人が多いから糞コードで溢れてるんだなw
0781デフォルトの名無しさん (アウアウウー Sa9b-WggA)
2020/02/06(木) 13:09:27.22ID:3avRIqPoa
>>777
何でそうなるの
ListBoxのItems自体何かを参照して作ってるんでしょ?
その同じソースを子フォームも参照するのが筋ですよ。
0782デフォルトの名無しさん (アウアウウー Sa9b-WggA)
2020/02/06(木) 13:10:20.78ID:3avRIqPoa
香ばしい人が来たねw
本気で自分が正しいと思ってそうで怖いけどw
0783デフォルトの名無しさん (アウアウウー Sa9b-WggA)
2020/02/06(木) 13:16:45.15ID:3avRIqPoa
質問者の人みたいな、役割分担を意識しない有機的な(笑)コードでも
学生さんの宿題程度の小さなプログラムなら問題は顕在化しないよもちろん。

ちょっと規模がでかくなるとすぐ死ぬけどねw
こういう発想でやってると

>>780の人は一人で大きなプログラムを設計して書いたことないんだろうね
0784デフォルトの名無しさん (ワッチョイ 9f84-tipF)
2020/02/06(木) 13:16:56.29ID:p3rMUukc0
>>781
うーん。listBoxをただのソース表示用にするならそうなんでしょうけど。
それだとItems.Addとか必要無くなりますね・・・
0787デフォルトの名無しさん (ラクッペ MMcb-OK07)
2020/02/06(木) 14:34:33.24ID:wPTmJZ51M
ガイジはこんなところに来なくていいんだよ
ママと喋っててくれな
0789デフォルトの名無しさん (ワッチョイ 9f63-ssi3)
2020/02/06(木) 17:25:31.37ID:rr8+dQJ50
>>778
デイジーチェーンは普通バスがあって見る側でフィルターしてるだけでしょ
本来はI/O(型変換)が要らないところにI/O入れちゃうのはどう考えても悪手でしょ。今回の話でいえば子要素から参照したくなったときに、
リストボックスに直でaddしてるのをやめて、元リストを作ってリストボックスのdatasourceにするか手動同期するかして、トータルのI/Oが少なくなるようにリファクタリングするよね。
0792デフォルトの名無しさん (ワイーワ2 FFdf-VM48)
2020/02/06(木) 18:09:16.22ID:v+RXRHu+F
バイクは転ぶし
転んだ時のダメージも大きいし
車とぶつかっても死ぬのはバイク
百害あって一利なし
0793デフォルトの名無しさん (ワッチョイ ffb0-tipF)
2020/02/06(木) 18:09:26.47ID:yYpacz/p0
いやーここは良いスレですよ
色々情報や知識が得られて
私のいるニッチな業界のスレじゃ
下手にかかわると顔バレしそうなんで
なるべく情報出さないようにスルーが基本ですからww
0794デフォルトの名無しさん (ワッチョイ 3742-56gX)
2020/02/06(木) 18:13:45.05ID:DNa4Mn1G0
UIプログラミングの原則として、コントロールを複数のクラスからアクセスるってのは
動作の競合起こしたときにどうにもならんから普通は避けるものですね
この場合、サブフォームからメインフォームのメソッドを呼び出して処理自体をメインフォームのクラスでやらせるのが普通かな?
呼び出すにはサブフォームにFunc<T>の変数を用意して、メインでサブフォームを起動するときにコールバックをセットする
0796デフォルトの名無しさん (アウアウウー Sa9b-WggA)
2020/02/06(木) 19:37:43.07ID:3avRIqPoa
>>790
そういう比喩ならこっちの方が適切だね

バイクのエンジンのシリンダーにソレノイドを仕込んで「始動機能内蔵エンジン」
を発明(笑)した気になってるバカがいるので、そんな後でメンテに困るような
設計はやめて普通に外側にセルモーター付けろやと言ってるわけね。
0798デフォルトの名無しさん (ワッチョイ b71a-QEaq)
2020/02/06(木) 20:09:27.53ID:2CNFUZCo0
〜正午〜
>>776「コントロールを外から参照するのは不適切。何故ソース側にその機能を求めない?」

〜午後〜
>>796「内蔵なんて後でメンテに困るから普通に外側に機能を付けろ」

僅か半日の出来事である
一体何が彼を変えてしまったのか・・・
0800デフォルトの名無しさん (アウアウウー Sa9b-WggA)
2020/02/06(木) 21:02:33.81ID:3avRIqPoa
>>798
くだらなすぎワロタw
それを言うなら>>790はどうなるのかねw
これが比喩として成立していると思う人は一人もいないと思うよw

しかし、幼稚だね
0802デフォルトの名無しさん (アウアウウー Sa9b-WggA)
2020/02/06(木) 21:33:06.95ID:3avRIqPoa
まだ懲りずに言ってるしw

>>801>>798みたいなのにとっては「始動機能内蔵エンジン」実現のために
シリンダーにソレノドを仕込む機構の実現方法を聞いてる人には対しては
質問に対して真正面にベタに解答するのが正しいことなんだろうw

間違ってると思うよ。
そんな馬鹿なことなぜやるんだ、とアドバイスするのが正しいでしょ
0804デフォルトの名無しさん (ワッチョイ bfd6-QQjh)
2020/02/06(木) 22:23:36.57ID:CL10fagq0
>>777
usingってどこのことだろ。普通に一番上の方に
> public System.Windows.Forms.ListBox.ObjectCollection Items { get; }
とか
> プロパティ値 ListBox.ObjectCollection
って書いてあるのに。
0806デフォルトの名無しさん (ワッチョイ d72f-ndoi)
2020/02/06(木) 22:51:51.07ID:O+zcmlkO0
やりたいことができるようになってから、それが最適かどうか考えればいいことで
相手のレベル考えないでアドバイスしたって意味ないんだが

それなら聞かれたことだけに素直に答えてるほうがよっぽど役に立つ
0807デフォルトの名無しさん (ワッチョイ 9f63-ssi3)
2020/02/06(木) 23:31:46.82ID:rr8+dQJ50
ビューからデータを取り出してあれこれするのはそれ以外方法がない場合は基本的に避けなきゃいけないレベルのことだと思うけどなあ

jQueryでアプリ作るのが衰退してReactとかになったのも同じ理由だし。
(あくまでアプリの話でjQuery自体は今でもWebの表現に役立つライブラリで衰退してないと思う)
0808デフォルトの名無しさん (ブーイモ MMbf-gAEv)
2020/02/06(木) 23:41:34.74ID:eMC8OYbwM
フレームワークの出来次第なんだよ
WPFやWEB系の流行りの流儀をFormsに持ち込む必要はない
Formsではイベント〜Formへの問い合わせ〜サービス〜Formの更新が基本的な流れなんだからその流儀に従えばいい
逆にモデルバインディングで作りたいならFormsを捨てる
0810デフォルトの名無しさん (ワッチョイ 9f01-OQuQ)
2020/02/07(金) 00:50:21.95ID:JyRMIzlO0
モデルを分離して管理するコストに見合わないような
小規模で保守性をあまり考慮する必要がないアプリなら
Form間で密結合させるのも選択肢の一つ

仕事で作るようなそこそこの規模のアプリで
保守性が重要なケースではまずやらない
0813デフォルトの名無しさん (ブーイモ MMcf-gAEv)
2020/02/07(金) 08:06:28.65ID:PtYUZReyM
Formsではモデルを分離しても間違いなくモデルバインディングを実装するコストは意外と高い
モデルを分離しただけのつもりが状態の二重管理になっていたなんてこともしばしば起こりうる
なのでFormsでは入力が必要ならその都度ヴューに問合せたほうがいい
そうすれば状態が重複しないので管理が楽になる
モデルバインディングを使いたいならWPFにフレームワークを変更すること
0815デフォルトの名無しさん (ワントンキン MM4f-hvej)
2020/02/07(金) 19:18:34.16ID:sr6ubIFXM
DataTableのカスタムソートの方法を教えてください。
あるカラムを独自のルールでソートせたいのです。Selectで単純なソートはできるのは分かったのですが、delegate 的なので、ルールを設定できないでしょうか。
0817デフォルトの名無しさん (アウアウウー Sa9b-VM48)
2020/02/07(金) 21:48:37.46ID:m5SOWGhma
1秒ごとに、FormのTextBoxに1を加算していく・・Func1
2秒ごとに、FormのTextBoxに2を加算していく・・Func2
つまり
112112112.........このようにTextBox.Textの文字が増えていくプログラムを
非同期で作りたいと思います。
グローバル変数を一切使わずに実装することは可能でしょうか?
1週間考えてるんですが、Timerを使う方法しか思いつきません。
Timer Func1Timer
Timer Func2TImer
というグローバル変数を使ってしまうので、これはNGです。

いい方法はありますか?
0819デフォルトの名無しさん (アウアウウー Sa9b-VM48)
2020/02/07(金) 22:02:19.48ID:m5SOWGhma
>>818
検討します
ちなみにTask使えばグローバル変数は一切必要ないですか?
0821デフォルトの名無しさん (ワッチョイ 571d-uqPE)
2020/02/07(金) 22:51:59.66ID:GxNDg+Fe0
実務経験1年で月収80万稼げるエンジニアになった理由
https://www.youtube.com/watch?v=DrbbyGsHQic
意識が低いエンジニアこそフリーランスになれ
https://www.youtube.com/watch?v=nSEaAJlgjbQ
フリーランスエンジニアの週3労働ってどんな感じ?
https://www.youtube.com/watch?v=8yjoDCdbzMc
ぼくがスキルのない社畜ならこうやって脱する
https://www.youtube.com/watch?v=aae8xxbUlMM
初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話
https://www.youtube.com/watch?v=U0OCGRVLFsM
プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説
https://www.youtube.com/watch?v=iBOeiSKBIW8
貧乏人こそ社会不適合者
https://www.youtube.com/watch?v=O3BT72BIBJI
元ド貧乏が教える】貧乏を抜け出すための2つの考え方
https://www.youtube.com/watch?v=IRrCgTy3ckc
より良いオファー貰ってるのに転職しないとか何考えてるの?
https://www.youtube.com/watch?v=i0J6uRhlj7o
0822デフォルトの名無しさん (アウアウウー Sa9b-VM48)
2020/02/07(金) 23:40:24.00ID:m5SOWGhma
>>820
非同期プログラミングでフォーム上の値を変えたいってだけです。
TextBoxの値を変えるっていう超単純なプログラムでまずは試すってことです。
0824デフォルトの名無しさん (ワッチョイ 9f01-OQuQ)
2020/02/08(土) 00:01:02.29ID:0wE1WgKD0
>>817
グローバル変数を使ってしまうの意味がわからないよ

加算というか文字列を追加する処理をトリガーするメソッドで
タイマー2つ作ってイベントハンドラを設定してやればいいでしょ
複数スレッドから同じ変数を更新するなら同期かConcurrentは必要
0825デフォルトの名無しさん (アウアウウー Sa9b-VM48)
2020/02/08(土) 00:15:07.81ID:UjdtFeS9a
>>824
すいません、クラス変数です。
public class Sample
{
public Timer Func1Timer;← こういう宣言するのが嫌
public Timer Func2Timer;← 嫌

 public Method()
{

}
}
0828デフォルトの名無しさん (アウアウウー Sa9b-VM48)
2020/02/08(土) 00:53:34.25ID:UjdtFeS9a
>>826
そこらへんちょっと理解できてなくて…
サンプルコード頂けますか?
0835デフォルトの名無しさん (ワッチョイ bfd6-QQjh)
2020/02/08(土) 02:05:01.32ID:aFNvUF1K0
>>822
大体1秒、2秒で良いなら

private async void Form1_Load( object sender, EventArgs e )
{
var odd = false;
while ( true )
{
await Task.Delay( TimeSpan.FromSeconds( 1.0 ) );
this.textBox1.Text += "1";
if ( odd )
{
this.textBox2.Text += "2";
}
odd = !odd;
}
}
0836デフォルトの名無しさん (アウアウウー Sa9b-WggA)
2020/02/08(土) 03:29:13.50ID:i8sbDftDa
>>817
TextBoxのTextを操作するだけのコードが非同期っていうのがまず意味が分からないよ。

非同期っていうのは普通はUIスレッドならUIスレッドの処理をブロックせず、
同時並行で別の何かの処理をするって意味じゃないの?

何でか知らんけどとにかくフィールドを作らずにTextBoxのTextを一定間隔で操作したいなら

(1) TextBox自身を継承してそういう機能を追加する
(2) リストに登録されたActionを指定間隔で実行するstaticクラスを作る

こんなとこじゃないのかな
0839デフォルトの名無しさん (ワッチョイ 5763-Fhqg)
2020/02/08(土) 10:59:47.25ID:S7+vC9vw0
なぜフィールドを作らずに実現したいのか?
質問者はフィールドとCにおけるグローバル変数の区別がついていないだけな気がする
学習用にタイマー使ってみる、はわかるけどフィールド使わずに、って意味わかんない
0840デフォルトの名無しさん (アウアウウー Sa9b-QEaq)
2020/02/08(土) 11:14:55.30ID:iN9jv2T/a
学習用の課題に意味求めて進行止めるってまんま発達障害だな
小学校でいうと「たかしくんって誰?」とかそんな思考で問題自体に疑問持って解答諦める変なやつ
0841デフォルトの名無しさん (ラクッペ MMcb-OK07)
2020/02/08(土) 11:17:20.82ID:W0we+YORM
>>831
FizzBuzzは人口に膾炙した課題だろ
初心者の謎のこだわりでひり出されたクソと一緒だと思うのか?
0842デフォルトの名無しさん (ラクッペ MMcb-OK07)
2020/02/08(土) 11:18:52.11ID:W0we+YORM
>>840
妙なこだわりも発達障害にみられる兆候だけどな
お前の方がやばそうだな
0843デフォルトの名無しさん (ラクッペ MMcb-OK07)
2020/02/08(土) 11:20:45.26ID:W0we+YORM
貼っておきますので参考にしてくださいね
https://snabi.jp/article/77
0845デフォルトの名無しさん (アウアウウー Sa9b-VM48)
2020/02/08(土) 11:34:14.25ID:mzDbuDLWa
>>835
ありがとうございます。
Delay???
短いけど意味が分からないですw
分からないので調べます。
0846デフォルトの名無しさん (アウアウウー Sa9b-VM48)
2020/02/08(土) 11:35:29.41ID:mzDbuDLWa
>>835
クラス変数が必要無いのはかなり良いですね!
Textの変化とは関係なく、ボタンやリストを操作できる非同期ってことでいいですか?
0848デフォルトの名無しさん (ワッチョイ 9f79-Zca7)
2020/02/08(土) 12:22:44.83ID:P57LPGn+0
クラス変数とインスタンス変数という用語はC#ではあまり使わない
C#はフィールドが静的かそうでないかという文化だからそう捉えておいた方が意思疎通しやすいぞ
0851デフォルトの名無しさん (ワイーワ2 FFdf-VM48)
2020/02/08(土) 13:56:53.42ID:v1IBJgnWF
System.Drawing の Point は int か PointF の float なのに
System.Windows の Point は double で
結局3種類ある訳で
なんでこんな面倒くさいことになってんの?
0854デフォルトの名無しさん (ワッチョイ 7f02-sfHF)
2020/02/08(土) 14:27:00.86ID:i54vVeN30
>>846
まず同期処理で書くことできる?
async、awaitは非同期をあまり意識させることなく実装できるのが強み
なんで、まずは普通に書けないと話にならない
自分は非同期じゃなかったらこうするってコードをあげてみたらどう?
0855デフォルトの名無しさん (ワイーワ2 FFdf-VM48)
2020/02/08(土) 14:32:32.65ID:v1IBJgnWF
async await って Unity でも使えたっけ
0857デフォルトの名無しさん (ワイーワ2 FFdf-VM48)
2020/02/08(土) 14:41:06.06ID:v1IBJgnWF
UWP 使う積もりは無いので大丈夫
0862デフォルトの名無しさん (ワッチョイ 17b0-tipF)
2020/02/08(土) 15:45:57.77ID:ybbIdUq60
プログラムとして良い悪いは別にして
グローバル変数使わずにローカルだけでやるというのは
明確にオブジェクト指向を意識する練習でもあるから
頭の体操にはいいじゃん
0868デフォルトの名無しさん (アウアウウー Sa9b-WggA)
2020/02/08(土) 18:18:34.40ID:Ovre0sLva
>>862
オブジェクト指向関係あるかな?w

というかね、フィールドという明示的な実体を持たないくせに
インスタンスと同じ寿命を持つ「何か」が存在する、というのを
気持ち悪いと思わない人はプログラマの適正が疑わしいと個人的には思うよw
0869デフォルトの名無しさん (アウアウウー Sa9b-WggA)
2020/02/08(土) 19:07:17.64ID:Ovre0sLva
書いてみたけどくだらんなやっぱりw
protected async override void OnLoad(EventArgs e)
{
  base.OnLoad(e);
  var foo = WrapAction(() => textBox1.Text += "1", 1000);
  var bar = WrapAction(() => textBox2.Text += "2", 2000);
  await RepeatAction(() =>{foo(); bar();}, 10);
}

private async Task RepeatAction(Action a, int interval)
{
  var closed = false;
  FormClosed += (sender, e) => closed = true;
  while(!closed)
  {
    await Task.Delay(interval);
    a();
  }        
}

private Action WrapAction(Action a, int interval)
{
  var timeout = System.Environment.TickCount + interval;
  return () =>
  {
    if(Environment.TickCount >= timeout)
    {
      timeout += interval;
      a();
    }
  };
}
0870デフォルトの名無しさん (ワッチョイ d735-oJhu)
2020/02/08(土) 19:53:29.35ID:0YppiA+B0
OS:Rasbian Stretch
ランタイム:Mono JIT compiler version 4.6.2 (Debian 4.6.2.7+dfsg-1)
ソース:https://i.imgur.com/cFLOcYN.png
パッケージ:https://i.imgur.com/bWRI0Zg.png
エラー:Method 'System.Net.ServicePointManager.CloseConnectionGroups' not found.
ビルドターゲット:.NET Framework4.6.1

Windowsでは正常に動作します。
AngleSharpを入れていない場合であればMonoのほうでも動作します。
Anglesharpを入れるとバイナリのフォルダに大量のSystem.***.dllができます。
AngleSharpを入れていないと動くのに入れるとエラーが出る理由はなんですか?
0872デフォルトの名無しさん (ワッチョイ d735-oJhu)
2020/02/08(土) 20:01:31.70ID:0YppiA+B0
>>871
相談スレの方ですか?
AngleSharpを入れない場合はちゃんと動く理由がわかりません。
0873デフォルトの名無しさん (オッペケ Sr0b-RXZG)
2020/02/08(土) 20:06:39.89ID:1TiVu9qyr
エラー内容見ろ
エラー:Method 'System.Net.ServicePointManager.CloseConnectionGroups' not found.

System.Net.ServicePointManager.CloseConnectionGroupsというメソッドが見つからないと言うことだ

何故見つからないかと言えば前に書いた内容で調べるべき
0874デフォルトの名無しさん (オッペケ Sr0b-RXZG)
2020/02/08(土) 20:10:36.90ID:1TiVu9qyr
入門者なのかもしれないけどいきなり面倒な方法を使って勉強しても大変だよ
標準的な内容である程度勉強した後に発展でMONOを使うならいいと思うと書いてもまあ理解されないだろうな

標準的な入門を選ぶか
いばらの道の入門を選ぶかは個人の自由だもの
0875デフォルトの名無しさん (ワッチョイ d735-oJhu)
2020/02/08(土) 20:11:25.33ID:0YppiA+B0
>>873
AngleSharpを入れなければそのようなエラーは出ません
その理由がわからないという質問です。
0877デフォルトの名無しさん (ワッチョイ d735-oJhu)
2020/02/08(土) 20:38:36.42ID:0YppiA+B0
しかしWindowsではエラーになりません
0879デフォルトの名無しさん (ワッチョイ d735-oJhu)
2020/02/08(土) 20:44:56.35ID:0YppiA+B0
System.AggregateException: One or more errors occurred. ---> System.MissingMethodException: Method 'System.Net.ServicePointManager.CloseConnectionGroups' not found.
at System.Net.Http.HttpMessageHandler.Dispose () [0x00000] in <27bbdd4ceaf04a95b172ee502d76a725>:0
at System.Net.Http.HttpMessageInvoker.Dispose (System.Boolean disposing) [0x0001e] in <27bbdd4ceaf04a95b172ee502d76a725>:0
at System.Net.Http.HttpClient.Dispose (System.Boolean disposing) [0x0002c] in <27bbdd4ceaf04a95b172ee502d76a725>:0
at System.Net.Http.HttpMessageInvoker.Dispose () [0x00000] in <27bbdd4ceaf04a95b172ee502d76a725>:0
at ConsoleApp17.Program+<MainAsync>d__1.MoveNext () [0x00117] in <a0ba2302dc914c45933daaf9af0bf56d>:0
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00014] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Threading.Tasks.Task.Wait (System.Int32 millisecondsTimeout, System.Threading.CancellationToken cancellationToken) [0x00052] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Threading.Tasks.Task.Wait () [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
at ConsoleApp17.Program.Main (System.String[] args) [0x00005] in <a0ba2302dc914c45933daaf9af0bf56d>:0
---> (Inner Exception #0) System.MissingMethodException: Method 'System.Net.ServicePointManager.CloseConnectionGroups' not found.
at System.Net.Http.HttpMessageHandler.Dispose () [0x00000] in <27bbdd4ceaf04a95b172ee502d76a725>:0
at System.Net.Http.HttpMessageInvoker.Dispose (System.Boolean disposing) [0x0001e] in <27bbdd4ceaf04a95b172ee502d76a725>:0
at System.Net.Http.HttpClient.Dispose (System.Boolean disposing) [0x0002c] in <27bbdd4ceaf04a95b172ee502d76a725>:0
at System.Net.Http.HttpMessageInvoker.Dispose () [0x00000] in <27bbdd4ceaf04a95b172ee502d76a725>:0
at ConsoleApp17.Program+<MainAsync>d__1.MoveNext () [0x00117] in <a0ba2302dc914c45933daaf9af0bf56d>:0 <---
0882デフォルトの名無しさん (オッペケ Sr0b-RXZG)
2020/02/08(土) 21:00:10.67ID:1TiVu9qyr
.net framework ≠ monoのframework
それぞれ違う実装で別物

それを.net standardで標準化しようとしてる
でも実際にちゃんと実装されてるか不明
仕組みがすべてうまくいってるのか不明
対応したライブラリを作っている人の検証も十分かどうかわからない

動かない場合他人に聞くより自分で調べるしかない
0883デフォルトの名無しさん (ワッチョイ d735-oJhu)
2020/02/08(土) 21:04:25.30ID:0YppiA+B0
>>880
ありがとうございます!
しかしそのまま削除してしまうと下記のようなエラーが出てしまいますね…
コンパイルからするとしたら勝手にコピーされるのを禁止する的なオプションが必要そうで難しそうですね…

Unhandled Exception:
System.BadImageFormatException: Could not resolve field token 0x04000002
File name: 'ConsoleApp17'
at ConsoleApp17.Program.Main (System.String[] args) [0x00000] in <a0ba2302dc914c45933daaf9af0bf56d>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.BadImageFormatException: Could not resolve field token 0x04000002
File name: 'ConsoleApp17'
at ConsoleApp17.Program.Main (System.String[] args) [0x00000] in <a0ba2302dc914c45933daaf9af0bf56d>:0
0884デフォルトの名無しさん (ラクッペ MMcb-9sS2)
2020/02/08(土) 23:34:06.57ID:I9BdfAP3M
コンインハイブで有罪判決 ♪─O(≧∇≦)O──♪

ユーザーな cpu、gpu を勝手に使い、外部にデータを送信していたのがダメっぽい。

ユーザーの許可なく、デリゲートに処理なげるコードを書いてるc# 犯罪者も全員逮捕すべきだね。

ボタンを押した時の処理をボタンクラス等に書いておけば、インテリセンスで入力補完できて便利なのでみんなでそうすべき。
0885デフォルトの名無しさん (ワイーワ2 FFdf-VM48)
2020/02/09(日) 16:03:46.61ID:wTv3WydAF
Hoge[] hage = new Hoge[123];
List<Hoge> hige = new List<Hoge>();
foreach(Hoge h in hage) hige.Add(h);

hage.Length と hige.Count とでプロパティ名が違うのが気になります
0889デフォルトの名無しさん (ワッチョイ 17f1-LgKx)
2020/02/09(日) 17:16:40.25ID:YpWJ7Y8F0
>>888
うるさいこのハゲ!
0890デフォルトの名無しさん (ラクッペ MMcb-oJhu)
2020/02/09(日) 18:41:55.44ID:umzLclnyM
リストはコレクションを継承してるからな
コレクションに長さはおかしい
0893デフォルトの名無しさん (ワッチョイ 9f79-Zca7)
2020/02/10(月) 11:03:50.95ID:nWEhVxBk0
気になったから調べたぞ
Arrayクラスの実装に↓のようなものがあるというのが答えかな
(IListはICollectionを継承してる)

// Number of elements in the Array.
int ICollection.Count
{ get { return Length; } }

こう書くとCountはprivateになるから見えないが
インターフェイスは全部publicだからインターフェイスに直接アクセスすると当然見える
なんか微妙な挙動な気もするが
0894デフォルトの名無しさん (アウアウウー Sa9b-WggA)
2020/02/10(月) 11:45:05.82ID:IhKcOfNDa
そもそも愚問だと思うよ
逆に実装してるはずのインターフェイスのメンバーにアクセスできなかったらおかしいでしょw
意味がわからないよ

インターフェイス周辺の文法はVBの方がイケてるね。
VBの文法ならこういう変な勘違いは起こらない
0895デフォルトの名無しさん (ワッチョイ 37da-56gX)
2020/02/10(月) 11:56:37.17ID:8uBZGbTk0
何の問題もないからVBとかいらない
想像するしかないけど配列の長さとしてはLengthの方がふさわしいから隠したんだろ
ICollectionとして扱えば一貫してCountが使えるんだから何の問題もない
0897デフォルトの名無しさん (アウアウウー Sa9b-WggA)
2020/02/10(月) 12:05:13.80ID:IhKcOfNDa
明示的実装にしたのは単に混乱防止のためでしょ。
(ジェネリッククレクションは.NET 1.0の時代には存在しない)

Lengthという名前が採用されている理由はシンプルにCountにすると、
例えばnullを要素としてカウントしないアプリケーションだと違和感があるからじゃないの?
かといってCapacityとも違う。だからLengthなんでしょう。たぶん。
0898デフォルトの名無しさん (ラクッペ MMcb-oJhu)
2020/02/10(月) 12:31:42.73ID:sdl18RcGM
ぶんた。
0899デフォルトの名無しさん (アウアウウー Sa9b-WggA)
2020/02/10(月) 12:34:23.08ID:IhKcOfNDa
もっとシンプルに、たとえ多次元配列であっても配列はメモリー上の連続した領域であることを
意識させたかったのかもしれない。考えすぎかw
0901デフォルトの名無しさん (ラクッペ MMcb-oJhu)
2020/02/10(月) 15:04:17.44ID:sdl18RcGM
じゃあKosuuで。
0903デフォルトの名無しさん (ワッチョイ d77b-3biP)
2020/02/10(月) 18:14:07.48ID:dpw80QrL0
平日の昼間にスレ違いの雑談で埋めるようなところにワッチョイはもういらないよな
次スレは
ふらっと C#,C♯,C#(初心者用) Part141
https://mevius.5ch.net/test/read.cgi/tech/1544838367/
使ってここの継続は立てるなよ。前スレからだがテンプレも読めず雑談やスレ違いで埋める数人のためのスレとかいらん
0904デフォルトの名無しさん (アウアウウー Sa9b-WggA)
2020/02/10(月) 19:30:31.67ID:IhKcOfNDa
>>903
もともとワッチョイなんて有害無益なのは(普通の思考回路してたら)分かるけど
そうじゃないのに限って「声がでかい」のでそんなこと言っても無駄だと思うよw
0907デフォルトの名無しさん (ワッチョイ d735-oJhu)
2020/02/10(月) 23:26:50.94ID:Qiy0cFHh0
せっかくレッテルまで貼ったのに誰にも共感してもらえてなくて草
0908デフォルトの名無しさん (ワッチョイ 17a7-gMkZ)
2020/02/10(月) 23:28:38.33ID:N80PVT3u0
自演ができなくなると何かまずいのか?

たまに単発IDの頭のイカレタ質問と回答が書き込まれる一連のやり取りがそうなのか?
明らかに初心者の域出てるししかも誰も興味ないし
他の初心者の邪魔だからやめた方がいいぞアレ
人の気持ちを考えられない人間になると設計も自然とヘタクソになっていくから
プログラミングの腕も引きづられて落ちていくぞ
0909デフォルトの名無しさん (ワッチョイ 9f63-OK07)
2020/02/10(月) 23:56:49.13ID:hCu3Oxoe0
ようわからんが、単芝生やしてる15/15はこのスレの大古参なので、生意気な口を聞くなよ
0910デフォルトの名無しさん (ワッチョイ 9f63-OK07)
2020/02/11(火) 00:00:22.07ID:BVyNsmkt0
15/15ってなんや
(アウアウウー Sa9b-WggA)のことね
大先輩だよ
もう13年くらいいるよね
0911デフォルトの名無しさん (アウアウウー Sa9b-WggA)
2020/02/11(火) 00:12:43.21ID:FSEIJRHXa
>>905
例えば>>909-910みたいな変なの。

ちょっと前新型コロナの話題が出てたけどあれと同じだよ。
日本人は目的合理性ではなく気が済むかどうかで意思決定しがち。
日本人はこういうところ韓国人と完全に同じだね。

ワッチョイに推進論者が意図するようなプラスの効果なんか期待できないことは自明だ。
そのくせに意図せざる負の効果だけはしっかり存在する。

これ言うと荒れるかもしれないが、ワッチョイ推進論者は匿名掲示板で
「他人が何者か特定した気にならないと気が済まない」ストーカー気質の変な少数者だが、
本人たちにその自覚はない。
0912デフォルトの名無しさん (ワッチョイ d735-oJhu)
2020/02/11(火) 00:24:53.99ID:HEmsPZVy0
ワッチョイみて、なんだまたアイツか。って安心するんだろ
0913デフォルトの名無しさん (ワッチョイ 9f6a-56gX)
2020/02/11(火) 01:47:11.53ID:O1nniQPu0
>>911
負の効果なんてないだろ
自演できなくて悔しいですって正直に言えば賛成してやらんでもないぞ
0915デフォルトの名無しさん (アウアウウー Sa9b-Hkqy)
2020/02/11(火) 08:10:47.80ID:UM7DBn99a
レス番飛んで変な流れになってると思ったら謎理論を展開してる人が
意図せざる負の効果とかかっこいいこと言ってるけど
ワッチョイでNGされちゃうことで構ってくれる人が減るのが嫌なだけでしょ
0917デフォルトの名無しさん (ワッチョイ bf66-QQjh)
2020/02/11(火) 09:16:27.39ID:RZk53+g00
jsonの配列の行数が欲しくて以下のようなコードを書いたのですが

var jsonlist = DynamicJson.Parse(@"{""a"":1, ""b"":2}");
int cnt = 0;
foreach(var json in jsonlist)
{
cnt++;
}

jsonlist.Count()的な端的な書き方はあるでしょうか?
0919sage (ワッチョイ ff02-QQjh)
2020/02/11(火) 21:31:13.81ID:Ewfd3Otp0
>>917
ちらっと見た限りDynamicJsonってDynamicObject派生の独自の実装みたいだから
クラス作った人に聞くしかないのでは?

http://neue.cc/2010/04/30_256.html
0932デフォルトの名無しさん (ワッチョイ af97-hMlH)
2020/02/12(水) 10:32:34.34ID:w04clBR40
Json.NETって何だ、自分はNewtonsoft.JSONしか使ったことないけど大丈夫かと思ったら前者がライブラリ名、後者が名前空間名で同じものか、焦ったわ
0934デフォルトの名無しさん (ワッチョイ 5eda-GUQA)
2020/02/12(水) 12:13:24.49ID:25nTHRNQ0
utf8jsonは早いのかもしれないけど、publicメンバじゃないとダメとか
依存ライブラリが多いとかちょっと使い勝手がな。。

あと全体に言えるけど、
DateTime型をそのままJSONに変換したときに、JSONマッパ毎に結果が異なるのはどうにかならないかな
0938デフォルトの名無しさん (ワッチョイ 9259-GUQA)
2020/02/12(水) 20:32:47.74ID:seLTTpXD0
listの一部要素を切り出したい時ってインデックスの指定以外で早い方法ある?
要素100で0~8,3~21,10~30,50~61,~~みたいに切り出すとして切り出す長さは事前に与えられるケース

getRangeはコピーつくるみたいなので除外して、skipとtakeはどうなんだろと調べてみたらどうにも結果が安定しない
skipは先頭からn個目まで一気にスキップするわけではなくて、順番に数えてn個までの要素を跳ばしてるのかな
0940デフォルトの名無しさん (アウアウウー Sac3-+wK4)
2020/02/12(水) 20:58:26.58ID:dQ+MgkrDa
>>938
ないのでは?
あくまでIEnumerable前提の実装だから非効率なのは仕方ないよね。
分かってるだろうけどそれが気に入らないなら自分で書けばいいだけなわけで
0942デフォルトの名無しさん (ワッチョイ ff35-uDFW)
2020/02/12(水) 21:29:06.10ID:CnJeTJ1J0
IEnumerableって順序ないのにSkipの説明には「シーケンス内の指定された数の要素をバイパスし、残りの要素を返します」って書いてるけどシーケンスって順序決まった列じゃないの?
0946デフォルトの名無しさん (ワッチョイ 9259-GUQA)
2020/02/12(水) 23:47:21.81ID:seLTTpXD0
>>944
こんなのあるんだなあ。ありがとう
むしろこっちの書き方に混乱した
> sequence is IList<T> list

C#7からできるようになったみたいだけど、これのメリットって変数のスコープを限定できるって理解でいい?
0947デフォルトの名無しさん (ワッチョイ ff35-uDFW)
2020/02/13(木) 00:08:03.05ID:uK7heoRi0
>>943
IEnumerableを継承してるコレクションもシーケンスだったのか
コレクションというくらいだからおもちゃ箱のおもちゃみたいなグチャグチャな塊のイメージだった
0948デフォルトの名無しさん (ワッチョイ ef63-3blX)
2020/02/13(木) 00:34:22.49ID:naQLfQn80
>>938
arrayに変換できるならspanでアクセスするのが早いんじゃないかな?
spanができて飛び飛びのインデックスへのアクセスが多いケースでは問題なければarrayでことが増えた
0951デフォルトの名無しさん (ワッチョイ d201-b83C)
2020/02/13(木) 01:49:45.90ID:r7bSHOfr0
>>946
パターンマッチで一発でできるのがメリットでそれ以外は副産物じゃないかな

if (sequence is IList<T> list) {
return list[5..];
}

IList<T> list;
if (sequence is IList<T>) {
list = (IList<T>)sequence;
return list[5..];
}
と同じイメージで変数スコープはちょっと特殊
0957デフォルトの名無しさん (アウアウウー Sac3-+wK4)
2020/02/14(金) 19:02:11.32ID:7R4aPKWba
Option Strictは関係ないみたいね。
たぶんenumの型(intかshortかbyteか)で比較するんだろう。
別にそれでもいい気がする。
個人的にはC#の参照型の==演算子は既定で参照を比較する方が気持ち悪いと思うw
実装されてなければコンパイルエラーでよかったのに
0958デフォルトの名無しさん (ワッチョイ efda-GrpO)
2020/02/17(月) 13:08:35.25ID:x0CaePxl0
WinFormsのTreeViewで、CheckBoxの代わりにRadioButtonを使いたいのですが、
それらしい設定を見つけきれません。

どう設定すればよいのでしょうか?
0961デフォルトの名無しさん (ワッチョイ 975f-SbTe)
2020/02/18(火) 22:43:14.29ID:DxyDMMqU0
DBに接続するときに以下のようなContextがあるとしてMyEntities1、MyEntities2、MyEntities3のテーブルにデータが追加されているかをtimerを回してデータCountが変わっているか調べて追加されています。

これをデータが追加されたときのみでよいのですが、削除、変更等があったときにイベントを発生されることってできますか?

public partial class MyContext: DbContext
{
public MyContext(DbConnection connection) : base(connection, false)
{
}

public virtual DbSet<MyEntities1> MyEntities1 { get; set; }
public virtual DbSet<MyEntities2> MyEntities2 { get; set; }
public virtual DbSet<MyEntities3> MyEntities3 { get; set; }
}
0962デフォルトの名無しさん (ワッチョイ 6338-zMV9)
2020/02/18(火) 23:05:48.43ID:9xbWknqa0
DBによってはEVENTを通知する仕組みがある
仕組み以外でもtriggerとかも使える

まあ対象テーブルへの変更がEF経由のみなら、それを一律で監視するのもアリ
MyContext内部とかそのラッパーとかでeventを発火させれば済む
0965デフォルトの名無しさん (ワッチョイ 975f-SbTe)
2020/02/18(火) 23:29:55.78ID:DxyDMMqU0
>>961
情報が足りなかったすみません

対象のDBはSQL Server2000です
これにデータを追加しているアプリと
データが追加されているかを監視したいアプリは別なのですが可能でしょうか?
0966デフォルトの名無しさん (ワッチョイ 975f-SbTe)
2020/02/18(火) 23:35:16.65ID:DxyDMMqU0
後、変えられるのは監視したいアプリ側だけで
DBと 追加しているアプリは変えられないです。
0967デフォルトの名無しさん (ワッチョイ ff02-IdAT)
2020/02/19(水) 00:10:09.35ID:N9gqFXA+0
軽量でない処理を行ってその処理の内容次第で適切な区分値を返すメソッドがあるとすると
メソッド名はどんな感じにするべきですか?

つまりGetHogeKubunのようにGetをつけるのが簡単ですが、
軽量でない処理を呼び出すときはGetをつけないほうがいいという話がありますよね?
私はプロパティ構文のある.NETの場合は、
Getという文言がついているからといって軽量な処理を想定しないと思って
別に適切な命名が思いつかなければ軽量でない処理でもGetを使ってきたのですが、
その考えもどうなんだろうと思ってきました。

みなさんはどうしてますか?
0970デフォルトの名無しさん (オッペケ Sr07-p4c1)
2020/02/19(水) 00:21:14.61ID:2IDaZuEtr
英語の解釈

getは、基本的に置いてある物などを入手する場合に使われます。
努力をしないで物を得る時に使われる事が多いです。口語として一般的に使われています。
0973デフォルトの名無しさん (ワッチョイ ff01-pEhb)
2020/02/19(水) 00:49:18.60ID:GM7mImOk0
>>965
DBへの変更はできない、DBを更新してるアプリの変更はできない、かつSQL Server 2000という条件で
データの追加・更新・削除を検知したいってことでいいのかな?

そういう検知ができるようにテーブル設計されてなければ正攻法では無理
カラム追加するなりストアド使うなりバージョン上げるなりするほうが早いし安上がり
0974デフォルトの名無しさん (ワッチョイ 83de-FTwr)
2020/02/19(水) 01:08:57.84ID:nQPwUMQ20
クラサバ型のアプリなんだけど
サーバー側からイベントが欲しいって言ってんじゃね?

クライアント100台全部に通知ほしい?
また、その電文は投げっぱなしのジャーマンじゃなくて応答が欲しい?
凝ったことするときはレンサバでなければサーバー側にサービスとか動かして実現することが多いかな?
俺の経験だと
0975デフォルトの名無しさん (アウアウウー Sae7-icJa)
2020/02/19(水) 01:12:39.27ID:9hl10qC/a
>>967
>軽量でない処理を呼び出すときはGetをつけないほうがいいという話
これは聞いたことないね

MSのガイドラインではプロパティのゲッターに重い処理を書いてはいけないとなってたと思うけど、
(つまりGetXXX形式にしろ)それを聞き間違えたんじゃないか。

もちろん例外はあると思うけど、メソッド名が十分適切に「何をするメソッドか」を表現できていれば、
普通はそれが重いかどうかだいたい想像がつくのでは?

まあ、非同期メソッドにしたら軽くないことは嫌でも伝わるね
0979デフォルトの名無しさん (ワッチョイ 6388-qdXs)
2020/02/19(水) 15:06:48.11ID:uQe4y4Pa0
基本なのにいつまで経っても議論が絶えないめんどくさい話
IDEのリファクタリング機能が優秀になったおかげで修正が楽だから結構適当につけて後から気に入らなかったら直すスタイルになった
命名で悩む時間が減ったら作業効率あがる
0980デフォルトの名無しさん (ワイーワ2 FFdf-IPX/)
2020/02/19(水) 15:39:25.68ID:cGULNOoWF
string[] a = new string[]{"a","b","c"};
に対して
System.Array.Reverse(a);
でaそのものが反転してSystem.Array.Reverse(a)は戻り値がありませんが
a.Reversed() で戻り値が反転した Array で元の中身は変えない
みたいになるメソッドってありますか?
0982デフォルトの名無しさん (ワイーワ2 FFdf-IPX/)
2020/02/19(水) 16:29:59.82ID:cGULNOoWF
引数 0 を指定するメソッド 'Reverse' のオーバーロードはありません。

って出るんだけど何が変なのかな
0984デフォルトの名無しさん (ワイーワ2 FFdf-IPX/)
2020/02/19(水) 16:53:50.20ID:edMDbkMkF
ありがとう
お詫びに脱ぎます
0985デフォルトの名無しさん (ワイーワ2 FFdf-IPX/)
2020/02/19(水) 17:01:40.22ID:edMDbkMkF
980踏んだのでついでに御相談なのですが

ふらっと C#,C♯,C#(初心者用) Part146
https://mevius.5ch.net/test/read.cgi/tech/1576069931/
ここの次スレ (Part147 ?) は立てた方が良いのでしょうか?
既に
ふらっと C#,C♯,C#(初心者用) Part141
https://mevius.5ch.net/test/read.cgi/tech/1544838367/
というスレもあるようですが重複なので放置なのか使い切った方が良いのかどっち?
0988デフォルトの名無しさん (ワッチョイ 8f02-Uarg)
2020/02/19(水) 19:31:48.47ID:/KKpt7jl0
>>978
命名規則なんてチーム開発での決め事でしかないんだから周り合わせりゃいいだけ
一人で作ってんなら好きにすりゃいい
そんなもんだろ

っで時間がかかる時にGetを付けるかどうかとか決め事にするほどでもない内容だわ
データ書き換えしてるとかならわかるけど
0989デフォルトの名無しさん (ワッチョイ 035f-Hhsf)
2020/02/19(水) 19:46:09.06ID:fm92UHAO0
>>962>>964
timerを回して下のようにデータ件数を取得して比較する
増えていたら必要な処理をおこなうぐらいしか思いつかないんですが
MyContext内の監視の仕方を教えてくれませんか

using (var context = new MyContext(connection))
{
datacount1 = context.MyEntities1.Count;
datacount2 = context.MyEntities2.Count;
datacount3 = context.MyEntities3.Count;
}
//比較処理
Proc(datacount1 ,datacount2 ,datacount3)


>>973>>974
既製品が既製品のDBにInsartだけしていて情報を表示する既製品のアプリもあるのですが
DBにアクセスはできるので情報を表示する既製品のアプリを別に作りたいなと思っています

>>そういう検知ができるようにテーブル設計されてなければ正攻法では無理
これはどんな感じに設定されているのでしょうか?インデックスの最大値を検知とか?
0991デフォルトの名無しさん (ワッチョイ 7338-T5WG)
2020/02/19(水) 20:21:28.78ID:BEiBw7Bx0
それが正攻法やなあ
更新時に通知するのが一番良いけど、そこは触れなそうだし、フックポイントを用意してる気の利いた作りでも無さそうだし

何が問題で、精度や頻度やデータ件数すらわからんので、禄なアドバイスできんが
C#要素薄いし
0995デフォルトの名無しさん (ワッチョイ 035f-Hhsf)
2020/02/19(水) 21:47:53.23ID:fm92UHAO0
基本的にDML トリガー等でDB側に用意しておくものだってことか・・・

>>991
既製品のDBアプリはいじれないので
必要なtableのデータをsqlserver2010からsqlserver2019データを移動させるつもりなのですが
ほとんどのtableは1分に一回ぐらいチェックして別のDB入れるで十分だけど一部のtableはInsertされたらすぐに別のDBに入れたい
そうなると1秒間隔でtimer回して>>989のような処理ってどうなんだ・・・?tableは100ぐらいでレコード件数多いのは100万あるので
timer回さなくてもMyContextが自動でデータ変化をチェックできるようなもっといいやりかたない?って疑問があったので質問してました

>>962
>>まあ対象テーブルへの変更がEF経由のみなら、それを一律で監視するのもアリ
これが気になるんだけど変更を一律で監視ってレコード件数とかなのだろうか


>>994
>>Proc(datacount1 ,datacount2 ,datacount3)
前回のレコード件数と比較して変わってたら2019に移動のつもりで書いていました
0997デフォルトの名無しさん (ワッチョイ ff01-pEhb)
2020/02/19(水) 22:25:12.19ID:GM7mImOk0
>>995
なんでDBContextの話をしてたのかやっと理解できた
DBContextがデータベース側の変更を自動で検知するとかは無理
楽観的同時実行制御みたいな機能はあるけど求めてるものとは違う

DB移行で新旧オンラインのまま
一部テーブルを同期させたいというユースケースなら
トリガーよりも先にレプリを考えるな

詳しくはDB板で聞けば
0999デフォルトの名無しさん (ワッチョイ 035f-Hhsf)
2020/02/19(水) 22:39:28.51ID:fm92UHAO0
>>996
やっぱりそうなっちゃうかな

>>997
変更を自動で検知は無理か
レプリケーション調べてみます

ありがとう!
1000デフォルトの名無しさん (ワッチョイ ff6a-Nz9x)
2020/02/20(木) 00:18:43.15ID:C2E41YSR0
1000ならC#死亡
10011001
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 70日 2時間 6分 32秒
10021002
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

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

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