TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
HTAをもっと流行らせる計画 Part2
【.cmd】 バッチファイルスクリプト %12 【.bat】
パチンコ、パチスロの基盤のプログラム 2
Android SDK以外でのアプリ作成を全面禁止へ
数学者が技術者にプログラムを書いてもらうスレ
GARMIN社のGPSのプログラム
AI AI って夢見すぎてない?
C++相談室 part149
Subversion r15
2ちゃんねる互換P2P匿名掲示板の実装を考える 1

ふらっと C#,C♯,C#(初心者用) Part146


1 :
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part145
https://mevius.2ch.sc/test/read.cgi/tech/1570446977/
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.2ch.sc/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

2 :
C#

3 :
O2

4 :
ひらがな文字列をヘボン式ローマ字に変換するプログラム作りたいのですが
やっぱ正攻法でswitch-caseで123個くらい分岐させますか?
でも長音や促音の例外処理とか難しそうだなあ・・・

5 :
変換テーブルと検索

6 :
UNIXのShellのソースでコマンドを切り分ける場所では思いっきりswitch文の嵐だったな
1文字目でまず切り分けで、次にに文字目ってな具合で

速度なら圧倒的にswitch分だと思うが、作りやすかったり保守が簡単なのはDictionary使ったパターンだと思う

7 :
要素数が多くなれば多くなる程switch文よりDictionaryの方が速度的にも早くなるのでは?

8 :
つ libstree

9 :
>>7
C#コンパイラは多数の分岐先を持つswitchの場合には二分探索を行うコードを生成したりする
基本的に人間が最適化するより速い

10 :
>>4です
ありがとうございます
switchでコツウコツやることにします
要素の数え漏れでもっと増えそうだし
例外を拾う処理も考えなきゃww

11 :
vs2017ExpressでC#のフォームを使ってSQLiteのデータをDataGridViewに表示させたいです
セキュリティの関係でSystem.data.SQLiteを使うには申請が必要でMicrosoft.data.SQLiteを使っています
SQLiteをデータソース欄に追加する方法を教えてもらえないでしょうか?

12 :
ソース貼り忘れました
https://dotnetfiddle.net/DXwCTe
よろしくお願いします

13 :
いくら払えますか

14 :
>>13
自宅でSystem.data.SQLiteをインストールして同じコードを書いたらデータベースに接続出来ました
恐らくSQLiteConnection等の参照が足りずにエラーなっていると思いますが、解決策が思い浮かばなかったのでSQL Serverを使って試したいと思います
申し訳ありません

15 :
Microsoft Visual Studio International Feature Pack を使うんだ!
KanaConversion クラスだったかに RomajiToHiragana メソッドがあったと思う

16 :
>>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]));

17 :
あとは 50 音を全パターン書いてね。

ただし注意点があって、長いワードは短いワードよりも (例えば「ちょ」は「ち」よりも) 先に並べるんだ。
そうしないと短いワードが先に部分マッチしてしまう。

18 :
テーブル作る前提なら始めからdictionary作ればよくね?

19 :
一文字ずつ正規表現でマッチしてたらとんでもなく時間食いそうだな
姓名の変換くらいならどうとでもなるだろうけど

20 :
>>18
作っているのはテーブルだけではないし、このように書くとスッキリ書ける。

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

正規表現の方が、むしろ、最適化がかかることに期待できる。

21 :
まったくスッキリしてない
圧倒的にswitchが早い

22 :
>21
それは感情論だな。計時してみてくれよ。

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

アセンブラでゴリゴリに最適化したものと比べたら遅いだろうが、同じ言語のユーザー定義関数より目に見えて遅いことはまあないと思うよ。

23 :
これならDictionary作るわ

24 :
>>23
何か勘違いしてないか?
こっちも Dictionary つくっているが。

25 :
2文字置換を考慮したらスッキリは書けなかった
すR
こんなクソみたいなコードでもregexよりは数倍早い
https://ideone.com/c7ILX4
頭良い人がもっとスッキリしたコード書いてくれそう

長文のほうがreplaceは不利だろうから数千文字にしたけどそれでも余裕
速度気にしないならregexで良いと思う

26 :
最終文字が2文字置換対象じゃないときにsubstringで範囲外例外出るわ
条件1個追加しといて

27 :
小さい「っ」が未対応なことに気付いた
これ正規表現でもめんどいね
正規表現ならっを無視してreplaceした後に1個ずつ置換かなぁ

28 :
多少簡略化したロジックで計測してみた。

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

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

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

チューニングするなら C やアセンブラで書くべきだし、C# で書くなら正規表現で簡潔に書けるほうがよいのでは?

29 :
>>27
おもしろいところに気づいたね。

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

ちゃっと => cha $ to => cha t to

30 :
どうあがいてもregexは遅くないという結論にしたいみたいだけど
string単体で見ても遅いのにregexが遅くないわけがない
簡潔に書くならregexがスマートなパターンが多いのは分かってるよw
処理速度求められるパーサーなんかではまずregexなんか使わない

遅いと言っても数万文字の処理が何万回も必要とかでなければ気にするようなレベルではないので問題ないなら素直にregex使ったほうが良いよ
25ですでにそう言ってるしね

31 :
あるいはワンショットで置換するなら、下記のようなパターンを使って後方参照し、第1マッチ文字列が空でないなら、第2マッチ文字列の置換先の1文字目に置換するとか。

(っ?)(あ|い|う|え|お|か|き|く|け|こ)

32 :
「ンョ゛ハー ゛」みたいなのが来た時の対応とか考え出すと仕様肥大化するだろうなあ
ひらがなカタカナ両対応とか、半角カナとか、
長音の代わりにハイフン使いだした場合とか
「ヴァッソ」とか
テストパターン考えるのも厄介そうだね

33 :
LALRを受理するジェネレータ書いたことがあるんだけど、状態表の大きさは字句解析のほうが遥かに大きくなるのが普通みたいですよ。
字句解析と構文解析は一つの表にまとめられるのに、なぜ分けるのかというのが最初の疑問だけど、なぜか答えが載ってる本が無い。
実際にやってみると表の大きさが爆発的に大きくなるからでした。
状態機械は分けられる箇所があるなら積極的に分けたほうが効率的になるようです。

34 :
>>30
文字列操作だからもちろん絶対的には遅いよ。

C# で書いたユーザー定義関数と比べたときに正規表現が相対的にそんなに不利かといったらそうではないだろうという予想を立てただけで。実際測ったら同等だったわけだけど。

35 :
日経だったか「むかっっ」という促音が
重なる文章というか記事があったな

36 :
字句解析におけるNFA対DFAというのも最初に気になる部分です。
結論から言うと、NFAの選択は十分に考慮できるはずです。
僕も最初はDFAにこだわっていました。
でも、字句解析は表が大きくなりがちです。
特にregex並みの便利機能を組み込もうとすると、とても大きくなります。
たいていはNFAで十分かと思います。

37 :
ちなみに、DFAにこだわる理由は、多くの本がDFAのほうが効率的と述べているからです。
みんなそうだと思います。
最悪のケースではその通りですし、最悪のケースを考慮するのはセキュリティにも関わります。
でも最悪のケースはめったになく、たいていはNFAで十分で、たいていは効率的だと思います。

38 :
>>34
その同等だったっていうコード貼ってくれない?
25で貼ったコードで1文字2文字の比率変えてもregex側が常に3〜4倍くらい遅いんだよね
古い.NETだとsubstringが遅いとかあった気がするんだけどその影響じゃないよね?

39 :
>>38
コード書いてくれてたんだね。
25 があぼーんで読めない。。。

40 :
>>4でーす
>>16以降、何書いてるのかサッパリ分かりません!
なんせまだifとforとswitchと文字列操作のメソッドくらいしか知らないもんでww
半年くらい後に読みに来まーす

41 :
>>38
コードは長すぎて多分アップできないと思う。

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

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

1文字あるいは2文字の切り出しに Substring 使っているけど、それが遅いのかな?

42 :
ローマ字変換でばっとググってみた

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

とにかく動けばいいというならMicrosoftが配ってるらしい「Japanese Kana Conversion Library」?でもこんなの使ったことないや

43 :
ンボマはmboma
ンバッペはmbappe
だからね

練習用なんだろうけど
簡単に見えても文字変換を自力でやるのはかなり面倒くさい

44 :
正規表現のほうが単純文字列比較より遅いのは当たり前
1文字比較の場合に単純比較と同等になるような
最適化が施されてるエンジン積んでれば数倍とかの差はつかない

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

ちなみにstringのswitch caseは数が増えると
.NET Core以前は内部的にDictionary使うみたいよ
.NET Coreもhash比較するのは同じだけどDictionaryをアロケートしない方法にしてるらしい

45 :
>>39
これで見えるかね
ttps://ideone.com/c7ILX4
このコードはswitchじゃなくDictionaryでやった
おそらくswitchのほうがこれより早くなるか最適化で同程度になるはず
switch版までは作るのめんどい

配列の境界値チェックも遅い要因なのでできるだけチェックが発生しないのが望ましい
このコードでは2文字変換したときに境界値チェックが入ってしまうので2文字変換比率が高いと性能が悪くなる
2文字変換ばかりにしてもregexよりは早い

46 :
>>45
ありがとう。週末に評価してみる。

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

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

これは価値観の問題なのでみなが同じように考えるとは思わないが、正規表現で 3 - 4 倍程度の性能悪化なら、ユーザー定義関数よりチューニングより正規表現を私は採用する。
10 倍の悪化なら用途によっては考える。(パターンが複雑・多岐の場合) 正規表現は開発効率と保守性が 10 倍よいと思うので。

47 :
>>46
switchとdicの関連は44が説明してくれてる
最適化次第でいい感じにしてくれるはずだからどっちもたいさない感じになると思う

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

UIに入力された氏名のローマ字変換みたいな1ユーザー1回で済むような処理に速度なんて無意味
GB単位のログデータをいじるなら数倍の差でも考慮すべき
なんなら入力データの傾向に応じてチューニングしやすい単純処理のほうが更に高性能にしやすい

48 :
俺なら、ひらがな小文字の変換は、変換元「ちゃ」とか「ぱっ」のパターンを文字数降順で優先的に置き換えるかな。
配列で変換パターンを保持して、それにない文字パターンは先頭から徐々に削っていく。
それなら「ぱ」と「は゜」なんかも判りやすく対応できると思うよ。

49 :
>>44, 45, 47
みんな有益な考察をしてくれるのでありがたい。感謝。

今まで正規表現が際立って遅いと体感することなかったけど、利用目的を想定した評価をきちんとしたことなかったので一連の議論はとても参考になりました。

50 :
オリジナルの文字列を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");

51 :
>>49
正規表現が遅いのは、コンパイルだろ

実行時ではなく、初期化時にコンパイルするようにと、Go の本には書いてある

52 :
>>4
Ruby では、条件分岐しなくても、変換用の辞書で書ける

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

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

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

p "9xy9ab9xyx".gsub( re, hash )
#=> 9ん9あ9んx

53 :
>>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 の例は参考になる。

54 :
このスレにいる人たちで
C#を日本語で記述ってのを実際にやってる人、どれくらいいるかな
https://togetter.com/li/1441951 を読んで試してみてもいいかなと思ったんだけど
VisualStudioのコード補完が利く環境ならIME切替の手間もさほどかからない気もするし
何か致命的なデメリットとかあるんだろうか

55 :
>>54
ほとんどいないのでは?w
デメリットはインテリセンスとの相性の悪さに尽きるね。

どうでもいいけど「C#を日本語で記述」の是非というより識別子に日本語を使うことの是非だよね
論より証拠、やってみたらいかに非合理な試みか分かると思うよ

56 :
Ruby では、RSpec(BDD)のユニットテストで、
日本語の関数名を付ける人はいるけど
まあ、テストだからね

57 :
テストのメソッド名とかなら使っちゃうかな

58 :
 enumの要素で使うと便利
どうせ数はないからインテリセンスも問題なし

59 :
>>54
補完のために半角英数+日本語が便利
これなら最初だけだしIME切り替えは

60 :
補完はomnisharp + migemoで解決できる

他言語で変数名に日本語使うのはよくやってるけど扱う対象の用語が固まってる場合は便利
そうじゃない場合は結構厳格に命名ルールを決めないと逆にわかりにくくなったりする

61 :
俺が英語ができなかったり、デザインパターンの理解が足りなかったりするせいだとは思うけどさ
どうしてもファイル名=ネームスペース名=クラス名=主なメソッド名になりがちなんだわ
単一責任の原則に合わせた時、ファイル名〜メソッド名まで決める簡単な基準とかあったら教えて欲しいな

62 :
Javaやりすぎると後遺症でそうなることがあるな

63 :
ファイル名=publicクラス名.csは一般的

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

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

Utilitiies > Formatter > Format

64 :
日本語を使った感想

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

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

他にも何かあった気がする

65 :
プロパティーやフィールドはいいけど、メソッドやイベントの名前は馬鹿っぽくはなるねw

66 :
プロパティはいいとしてメソッドは動詞(+名詞)の形にするの
日本語だと不自然だけどどうしてるのかな

67 :
>>58
中点使ってるせいでC#6.0対応時にエラー吐いたプロジェクトあったわ

68 :
>>54
DBテーブル名/カラム名が日本語名のWindows業務システムで、
Entityクラスや画面コントロールの命名をDBそのまんまの日本語にしたら
ソースが滅茶苦茶読みやすくとても良い感じになった
以後、積極的に日本語で命名するようにしてる

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

デメリットは…C#関係ないけど
postgresだとテーブル名が日本語だとテーブルエクスポートが出来なくて不便、
多分ASP.NETみたいなWebシステムだと日本語名を使うのはリスク高い、
とか

69 :
訳のわからん不具合踏みそう
日本語使ってると

70 :
Listについて質問なのですが
BindingList<T>にはToList()では代入できないのでしょうか?
LINQの結果をToListで代入しようと思ってたのですが
型が違うとか出るんです(自作クラスによるListです)
普通のList<T>へならできるのでBindingList固有の問題かと思います
仕方なくforeachで一つずつ代入して一応目的は達成してるんですが
LINQでforeach使わず抽出しておきながら
最後に代入でforeach使うのはバカらしいなあ・・・と思いまして
どうすれば直接LINQの結果をBindingListに入れられるのでしょう?

71 :
new BindingList<Hoge>(fuga.ToList())

72 :
>>71
おお!何かわからんけど、できた
初期化したらキャストできるの?
でもdataGridViewのDataSorceプロパティに入れてたのも外れるから
もう一度入れ直さないといけないけど・・・

73 :
razor page のコーディングについてなんですが、
1ページのデータ量が多くなれば必然的にソースも長くなりますが、2000行とかになるとごちゃっとして「目に優しくない」ソースになっちゃいます。
目に優しいコーディング方法やら規約やら法則があれば教えてください。

74 :
>>73
1メソッド300行以内っていう社内ローカルルール

75 :
>>73
Partial ViewとかView Component使って分割する
再利用しなくても分割する
個人的には200行超えると黄色信号

>>74
1メソッド300行ってすごいな

76 :
200も300も大差無いような…

77 :
やっと会社の環境がvisualstudio2010から2019になったわ、これで非同期無双できるw

78 :
そんな環境で2019なんか入れて大丈夫か?
アップデートで不具合引いてダウングレードさせられないように、不用意なアップデートはやめとけよ

79 :
2010とかサポート切れ直前やな

80 :
2010だとNuGetすら使えないんじゃ

54だけどレスありがとう>ALL
実践してる人もそこそこいるのね
テーブルやカラムを日本語で命名できるのってAccessに限らないのか・・・・
不具合の事例も知りたいけど、具体的に出てきたのは>>67くらい?
C#に閉じた範囲で使うぶんには大丈夫そうかな・・・・今度試してみるよ

81 :
>>76
viewの行数とメソッドの行数の違い

82 :
>>80
全角ピリオドとか&とかヤバそうに思えるのは使わないのが無難
date前月末とか昔から使ってます

昔々のACCESSで一部の通常全角文字が使えないとかありましたが、今はもう大丈夫と思ってます
将来的にトラブル可能性はゼロではないとしても、可読性のメリットのほうが遥かに大きい
例えば「要介護認定等基準時間」みたいなのを英字変数にするとかアホにもほどがある

83 :
質問でふ(^^
Unityのアセットとか覗いたりするとifは使われてまふよね(^^
Switchが使われているの見たことないんでふが(^^
あれって使っちゃいけないとかってあるんでふか?(^^

ボッキング!(^^

84 :
最適化すると数行のswitch文はifに自動変換されるんじゃなかったっけ

85 :
そうだったんでふか(^^
教えていただき感謝感謝のボッキング!(^^

86 :
class Hoge{
int Id
ICollection<Hoge> Hoges
}
ってクラスをEntityFramework使ってテーブルにしたんだけど無理だったりする?
Hogeテーブル(Id)と、Gehoテーブル(id、HogeId、HogeId2)後ろ二つ外部キーみたいなイメージなんだけどこういうパターンが調べても出てこない

87 :
>>86
この構成じゃ出来ないことが分かったので質問を取り下げます

88 :
APIでTokenを取得するため、以下のコードを書きましたが、デバッグすら出来ずに摘んでいます。
(ちなみにスクレイピングではなく、正式なAPIサービスです)

先輩方、アドバイスをいただけないでしょうか

var parameters = new Dictionary<string, string>() {
    { "id", "user" },
    { "pass", "password" },
};

const string method = "PUT";
const string endpoint = "https://apitest/v1";
const string path = "/token";

using (var request = new HttpRequestMessage(new HttpMethod(method), endpoint + path))
using (var content = new FormUrlEncodedContent(parameters)) {
    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
    request.Content = content;


  ↓↓ここのresponseがみたいのですが、ステップインできない(プログラム '[12345] 〇〇.exe' はコード 0 (0x0) で終了しました。
    var response = await HttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
    return await response.Content.ReadAsStringAsync();

}

89 :
webview使ってブラウザ操作してるんですけど、相手がASP使ったサイトだとボタン押したりテキストボックスに文字入れたりって操作は無理ですかね?

90 :
jsonファイルを読んで、木構造を編集して、jsonファイルに出力する
ファイルの入出力はJson.NETを使用
この場合内部のデータ構造はどう持つのがいいでしょうか?

Json.NETのJTokenを使うか、自作するか考えてますが、
標準的な手法は有りますか?

91 :
ちゃんと型を付けてデシリアライズ→加工→シリアライズする
型を付けるまでもないアドホックな処理ならそもそもC#なんか使わずに他のスクリプト言語を使う

92 :
質問なのですが
エンティクラスを配列に入れて使うようなことはできないでしょうか?
数が多いのでループでコードをすっきりさせたいです。

こんな感じなのを
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();
}

93 :
var datalist1 =
上書きで良いなら最後のだけ入れろ

94 :
>>93
すまないよくわからないのでもう少し説明をお願いしたい

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

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();

     //以下 共通処理
       }
}
     }

95 :
>>94
92 は for ブロック内部の代入式の左辺が変わってないよ、というツッコミ。

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

Dictionary やインデクサで、テキスト => 対象プロパティ or 抽出メソッド、のマップを作って、Reflection か何かで呼び出せばできそうな気がするけど、LINQ to Entities でワークするかどうかは試してみないとわからないな。

96 :
>>94
有益な回答を得るためにもう少し説明が必要かも。

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

また環境が EF6 なのか EF Core なのかも言及した方がいいかもね。

97 :
ごめん、勘違いしていた。
テキストで指定したいのはカラムじゃなくてテーブルなんだね。

98 :
そうですそうです。
データを取り出すところ以外はほぼ変わらないのに
↑のコードだけでも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 );
}

だけにできないかと思っています。

99 :
>>96
環境はEF Core3.1 です。

100 :
抽出テーブルを動的に指定したいなら、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();

101 :
>>98
そういう目的ならテーブル名をテキストで指定する必要もなくて、

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

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

でよいかもしれない。

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

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

テスト処理もラムダ式のリストで用意しておいて、各テーブルと Zip() して適用するなど、LINQ を活用するとよいと思うよ。

102 :
>>91
説明が稚拙で申し訳ないです

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

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

自分が知りたい事はc#でよく使われる木構造を扱うライブラリです

103 :
>>100>>101
ありがとうございます。
まだうまく動いていなくて返事遅れました。
100参考にして試してみます。

104 :
>>100>>101
さっぱり動かせそうにない
CommonBaseClassOfMyEntityDataModels
CommonBaseClass
の説明をもう少しお願いできませんか?

105 :
プロパティ DbSet<EntityModel1> MyEntity1 や DbSet<EntityModel2> MyEntity2 の型引数 EntityModel1, EntityModel2 があるとすると、その共通基底クラス BaseEntityModel を定義する必要があります。

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

そうすると、.GetProperty() の返り値の型が、DbSet<EntityModel1> だったり DbSet<EntityModel2> だったりするのだけど、これが IQueryable<BaseEntityModel> という型で共通的に受けられるということを想定しています。

106 :
訂正。
.GetProperty() ではなく .GetProperties() でした。

107 :
>>105
明日また試してみます。
丁寧に説明ありがとうございます。

108 :
>>102
よく分からん理屈だなあ
そのスマートウォッチの設定に限らず、世の中のアプリが扱うデータなんて大半は木構造なわけだが、
そいつらがみんな木構造を明示的に扱うようなGUIを持ってるか?
断言するが、明示的に木構造を扱うようなUIが必要なのはフォルダツリーのように再帰的な構造を扱う必要がある場合だけだ
それ以外は必ずもっと適したUIがある

109 :
while文がネストしていた時、階層の奥から一番外側のwhileループまでブレイクするにはどうするのが正しいのでしょうか?
while(true){ while(true){
if(true) 外側のwhileまでbreak;
}}
よろしくお願いします

110 :
goto

111 :
ここでいいのか分からないんですが質問させて下さい。
macでのvisual studioないしはC#の解説の載っているサイト、もしくは操作方法などを教えてください。
つい先日3Dモデリングやゲーム開発に憧れてC#の本を手に取りました。情報系の知識はないに等しく、せいぜい中学の授業レベルです。
「やさしいC# 第3版」を手に進めようとしたのですが、当方macで作業しようとしていたため、本の内容と実際の動きが異なり、四苦八苦しています。
現状なんとかhello worldはできましたが手順が理解できておらず困惑しています。
よろしくお願いします。

112 :
>>108
漏れてて申し訳ないです

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

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

また、全てを木構造で扱うのではなく、末端部は類型化されてますのでクラスにして編集の予定です

113 :
>>107
当初は利用目的がわからなかったため、.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);
    }
  }

114 :
>>111
ゲーム開発がしたいならUnityを使う
Unityの本を買え
Mac版のVisual Studioは一応あるけど誰も使ってないから本は存在しない

115 :
>>111
まずMACを捨てましょう
プログラミングはwindowsでないと、今は良くても後々面倒だと思います
私がゲーム開発してた頃はDirectX使ってました
3Dプログラミングはサインコサインタンジェント使いまくりなので数学の知識がいります
2Dは足し算引き算ぐらいなので初心者でもできると思います
画面にドット絵表示までが鬼門ですがそこ乗り越えられたら楽しい世界が待ってるのでがんばってください!

116 :
>>115
MacでもWindowsが動かせるから捨てる必要なし

117 :
>>113
こんな書き方もできるのか勉強になりました。

色々調べて試してみて>>101
をベースにして思ってたように動かせました。
コードすっきりになりました!ありがとうございます。

118 :
そもそもweb周りなんかだとはMacかなり多いのにプログラミングはWinで!なんて発想はどこから来るんでしょうか

2Dであろうと三角関数くらいはガンガン使います

119 :
webは簿給でMacのお布施を払っていると
儲けが減ってしまうからですよ

血の繋がりの無いパパさんが見つかると良いですね

120 :
webが薄給ってどこの世界の話?

121 :
>>120
ここの世界だよこの世界

122 :
>>121
まじか
同じ世界に住んでるようで違う世界なんだな
金融医療なんかと比べりゃ薄給かもしれんが世間の平均以上はあるでしょ
そら平均ないとこもいっぱいあるし中間搾取が多い部類だとは思うが…
日本は世界的に見てweb系、というかプログラマ自体が安いってのはあるけどそれでも他業種に比べりゃ全然マシだと思うよ

123 :
web系と一括りにしているが>>119が経験した狭い範囲でのことだろう

124 :
webは金になるよ
プログラマーの花形だから
求められるスキルは最下位だけども
組み込みプログラマーとゲームプログラマーが最上位
前者はハードの知識も求められるし、後者はプログラムの真髄まで知っとかないといけない
ゲームプログラマー経験してたら、他の分野のプログラマーの仕事はほんと簡単だもん
若い時はムチャやって良かったと心の底から思う

125 :
webのスキルが最下位ってどこの世界の話?

126 :
110の者です。反応してくださった方々ありがとうございます。

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

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

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

ちなみにプログラミングの初心者がまず勉強すべきもの、もしくは買うべき本などありませんでしょうか?
場違いの質問で申し訳ありませんが、教えていただけると嬉しいです。

127 :
最初に読むべきなのは公式チュートリアル
https://docs.microsoft.com/en-us/dotnet/core/
https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/

128 :
ゲームは知らんけど、組み込みはほんとピンキリだよw
学者みたいに何でも知ってる人もいるけど、狭い範囲のことしか知らないくせに
コード書かせたら構造化以前なんて人もゴロゴロいる
web系は仕事内容は良く知らんけどストレス度は高そうだよねw
なんか俺は最先端のとんがったことやってるんだぞ的な自己陶酔系の人が多いように感じるのは、
そうでも思わないとたぶんやってられないんだろうなと想像

129 :
>>126
Unityならmacで十分だよ

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

開発行為自体だと、unix系のアプリケーションならmacの方が色々揃ってるからやりやすいし
Windowsのアプリケーションなら、当然Windowsがやりやすいよ

130 :
>>124
オプションとなるスキルが違うだけでプログラミングスキルはどの分野でもピンキリ

131 :
>>124
2Dなら足し算引き算だけなんていってる人が"プログラムの真髄"なんて言っても、自分がやったことある範囲の知識がすべてなんだなって感じで説得力ゼロだぞw

132 :
2Dでも三角関数使うしな

133 :
プログラムかじった事ない人にいきなり三角関数必要とか言って作れると思う?
3Dは数学の知識が最低減ないと作れないけど、2Dは三角関数知らなくても作れる
分かったような口聞くな

134 :
三角関数をなんだと思ってるんだよ
中学生なら習ってないからしょうがないけどさ

135 :
>>133
>プログラムかじった事ない人にいきなり三角関数必要とか言って作れると思う?

この文章だけで頭の悪さがよく分かる
自然言語でまともな文章書けないやつに
まともなプログラム書けるやつはいない

136 :
三角関数なしに2Dゲームを作ることはできる
数学知識なしに3Dゲームも作れる
流石に加減乗除くらいは必要だが
無くても何かは作れると何を作るにも不要かどうかは別の話

137 :
>>136
ほうー
3D空間を数学の計算以外でどうやって動かすのかな?
キャラクター動かないゲームかな?

138 :
下らない話はそのぐらいにしておいたら?
中学生じみてるよw

139 :
Unityなんかに任せるとか?
結局使うことになるとは思うけど、使わずに済まそうと思えばなんとかなると思う。

140 :
テンプレ読んでください
オイコラミネオ MMab-7F0B
ワッチョイ 7707-7F0B
NG

141 :
オレのミネオはどう表示されるんだろ…

142 :
おれもテスト

143 :
C#でコルモゴロフスミノフ検定した上で、単回帰分析とかするライブラリってありますか?
統計解析するならテキストファイルにデータ書き出して、
PythonとかRにわたすほうがいい?

144 :
>>143
そこはRubyでしょw

145 :
>>143
R.NET

146 :
byte[]として受け取ったmp3をファイル化せずにそのままmp3tagの読み書きを行えるライブラリはないでしょうか?
出来る限り通信のやり取りだけで済ませたいため、受け取ったmp3バイナリをそのまま処理して受け流したいと考えています。
taglibは試してみましたが、FileStreamとして渡さないと上手く機能しないようでした

147 :
Streamクラスとして抽象化されてるんじゃないの?
taglibは入力にStreamを受け入れんじゃなくて、FileStreamというより具象的な入力を受け入れるような馬鹿な設計になってるの?

byte[]をMemoryStreamでラップして渡せないの?

148 :
俺が馬鹿だったかも。書き込みも必要か。

https://docs.microsoft.com/en-us/dotnet/api/system.io.memorystream.-ctor?view=netframework-4.8
リサイズ可能なメモリストリーム作れるかこれ?

作れないなら、変更できるようなインメモリの独自ストリームクラス作るとか。

149 :
ビットマップを編集するライブラリがFileStrem前提になってたら馬鹿設計だけど
Exifを編集するライブラリがそうでも別に馬鹿とは思わないなあ

150 :
まじで言ってる?
例えば、カメラで撮影したローカルにあるJPEG画像を投稿サイトにアップロードする機能つくるとき、EXIFを消してアップロードしたいありがちな機能。
MemoryStreamを渡せれば、元のファイル変更せずにメモリ上で修正してアップロードして破棄できる。
同じことをやるにはFileStreamだと一々コピーしないといけない。

151 :
タグ部分と同じ構造体作って該当部分のバイト配列を構造体に変換すりゃ済むんじゃないの

152 :
TaglibSharpの.net Standard版をUWPから使っているが
TagLib.File.IFileAbstractionってのを使ってストリームを操作している
自分でこのインターフェースを実装すれば割と簡単に行けると思うよ
実装してクラスをTagLib.File.Createに渡せば問題ない

153 :
>>150
それ、別にFileStreamを受け取ってStreamを吐く仕様で何も困らないのでは?

154 :
>>147>>152
ありがとうございます。
IFileAbstractionを実装したクラスでCreateしていましたが、CloseStreamで内部のMemoryStreamをDisposeしてしまっていたため、挙動がおかしくなっていただけでした
TagLib.File.Save()を行うことで初めて内部のstreamにTag情報が書き込まれ、同時にCloseStreamも呼ばれるためそこでは内部のstreamを閉じずに自前の後処理を行ってから閉じることで希望の動作になりました

155 :
ヽ(・ω・)/ズコー
まあ、バグ調べてて「俺ってバカ?」って思うことはよくあることだ
バグ作り込む気は全く無いのに、毎度あるのは何でか不思議でならない
(まあ最近は熟知してない言語で作ることが増えてきたのもあるが、COBOLごときでも一緒だったな…)

156 :
ライブラリを作ろうかと思うのですが
あるクラスをライブラリ内ではインスタンス化できるようにしたいけど
ライブラリを使う人はインスタンス化できないようにする
というようなことは可能ですか?
参考になるサイトなどありますか?

クラスのプロパティは基本的にすべて読み出しだけ可能にする予定です。

157 :
コンストラクタをinternalにする

158 :
>>153
じゃあさあ。ネットワークから受け取った画像をファイルに保存せずに、そのまんまEXIF修正して別のサーバーに送り返す場合、どうするの?

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

実装コスト増えるならまだしも、今回のケースでは読み書きできてシークできるStreamであれば良さそうなのに、それをFileStreamに限定するの意味がわからない。

159 :
この動画の人がVisual StudioでやっているAuthenticatonをオンにする設定は、dotnetコマンドではどうやるのですか?
https://youtu.be/RUZLIh4Vo20?t=63

160 :
すまん
自己解決しました
https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity?view=aspnetcore-3.1&tabs=netcore-cli

161 :
c#からpythonのmatplotlibを呼んでみたらグラフ描画に10秒くらいかかった・・・
めんどくさい数値演算とかをPythonライブラリに丸投げしたかったけど厳しい
グラフ描画はwinformでやるにしても描画するための連続データを戻り値として受け渡しするのなぁ

162 :
>>161
chartじゃだめか?

163 :
>>157
ありがとうございます。
難しく考えすぎてました。

164 :
>>161
その程度の何が障害なの?
ナメてるのか?

165 :
>>164
食ってかかるなよ

>>161
ふーん。日記ならママにでも聞かせとけよ

166 :
自分で使う用のWinデスクトップアプリケーションを作ってみたいのですが
VScodeにC#の拡張をインストールしたところ、".net Coreが無い"というメッセージが出ました
.net frameworkを後から入れるつもりだったのですが
現在はframeworkではなくCoreを使用するのでしょうか?

軽くしらべたところ、Coreはサーバサイ用、frameworkはデスクトプ用っぽいんですが
Coreでデスクトップアプリを作成するチュートリアルもあるようでした

167 :
coreはサーバー用ではないよ
今ならデスクトップアプリでもcoreで作るけど別にframework使えないってわけでもない
古い環境への配慮とか考えなくていいならcoreでいいんじゃない?

168 :
そして System.Drawing の移植性の無さで
泣ける。

169 :
WebBrowserでカスタムHeaderの送信とResponse Headerの取得ができません
.net core 3.1を使っています。バグでしょうか?

170 :
>>167
ありがとうございます
Core入れてきます

171 :
>>170
そのレベルだと、VSCodeでxaml手書きはキツいんじゃない?素直にVisual Studio使いな

172 :
今ならBlazorが簡単で良いよ
一般常識レベルのHtmlがわかってれば後は直感で作れる

173 :
C#使いたがる人ってWebに苦手意識がある人が多い印象だなあ
最初からrazor使えるような奴はそもそもC#(というかWindows開発)を選ばないと思うよ

174 :
嫌ぁCAD+画像処理屋なので、webじゃ
やっとれんだけですよ。
SPIDERがwebに乗って実用化されたら
考える。

175 :
ほらね

176 :
>>173
お前はC#スレに来て何がしたいんだ?

177 :
なにがほらねなんだろ

178 :
法螺ね

179 :
prism の質問もここでいいですか?

180 :
許すん

181 :
今のprismはMSとは無関係な単なる野良ライブラリの一つだからダメ

182 :
>>179
C#で使うならOK

183 :
skiasharp Microsoftの純正ライブラリー
扱いなのに(nugetでは)
情報が少なくて笑える
人脈が無いとこういう扱いなのかw

184 :
流れ読まずに。

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

こういうreturnの書き方は一般的なのでしょうか?
usingの中カッコの外にreturn文がないと値の返し損ねがないか心配なのですが
VisualStudioの警告は出ないしアリなのかナシなのか諸兄のご意見をいただきたく。

185 :
>>184
普通にアリ
メソッドから戻る直前にDisposeが実行される
なお、C#8以降では以下のように書けるため、従来のusingブロックはほとんどの場合必要なくなった
using var x = new Hoge("Arial", 10.0f);
x.Foo();
// メソッドを抜けるときに自動的に x.Dispose が呼ばれる

186 :
>>184
returnが無いパスがあったら警告出るよ
警告が出ないということは必ずreturnが呼ばれている

187 :
>>182,180
ありがとう。DIコンテナにUnityを使ってて、App.xaml の RegisterTypes で RegisterSingleton で登録する共用クラスがあるんだけど、このコンストラクタに引数を渡したいです
UnityContainerの中で生成するタイミングがわからなくて渡し方がわかりません

188 :
あ、引数はユーザーコンフィグから取得したいです

189 :
>>185,186
ありがとうございますm(_ _)m
usingの中カッコの中で変数宣言してそれを返せて終われたらいいなと思ってたのでこの書き方でやってみます

190 :
>>188
コンフィグクラスかコンフィグ読み込みクラスを注入すればいいよ

191 :
>>185
まじ?C#は洗練されてるね

192 :
>>190
ああそりゃそうか。DIコンテナがあるんだからインジェクションすればいいだけなんだねありがとう

193 :
.netライブラリでかすぎじゃね?

194 :
作ったプログラムをUbuntuのバックグラウンドで動かし続けたいんだけどさあ
nohup dotnet run &
だと、動かないのかすぐ終わっちゃうのかわかんないけどダメだったぜ
どうすればよかんべえな?

195 :
>>193
既にライブラリじゃないですね

196 :
>>194
Docker使うのが簡単だしスキル的にも得るものが大きい

197 :
>185
1000行近い関数が沢山あるクソコードだと以前の方が便利だな(涙目)

198 :
メソッド内にラノベでも書いてんのか?

199 :
頻出パターンだと思うんだけど、
ツリービューとかデータグリッドを選択したら詳細を表示する画面で、詳細部分のリジョンにナビゲーションで登録する時って、
詳細のビューのコードビハインドに書くしかないのかね。
サンプルがそうなってるけど、コードビハインドに書くのに抵抗がある

200 :
React等の仮想DOMを使ったモダンなMVVM系Webフレームワークでは、コンポーネントとしてVMを階層化する。
この場合、親VMが子VMとしてツリービューVMと詳細VMを持つ形になるだろう。
そして、ツリービューの選択項目が変更されたらツリービューVMがそれを受けて親VMに通知し、親VMが詳細VMの表示対象データのプロパティを更新する。
WPFの原始的なMVVMではそのへんはあまり洗練されていないし、そもそもWPF自体誰も使ってないから特にベストプラクティスのようなものも無い。
WebのMVVMを真似するのもコードビハインドを書くのも君の自由だ。

201 :
「リジョンのナビゲーションで登録」
意味不明

202 :
「詳細部分のregion(領域)」までは何とか…

203 :
>>201
ごめんなさい。モジュールでレジスタービューウィズリジョンじゃなくて、レジスターフォーナビゲーションを使って登録するとこのことです
公式サンプルのベーシックリジョンナビゲーションの書き方をみての質問です

204 :
クソワロタ

205 :
そうか、よくわからないけど解決したなら良かった

206 :
JavaScriptによって書き換えられた後のhtmlを取得する方法ってWebBrowserでInvokeScriptなどを使用する以外にはないでしょうか?
出来ればHttpClientやWebClientで済ませたいのですが

207 :
>>206
Seleniumを使いましょう

208 :
headlesschromeでええやないか

209 :
WebBrowserクラスやヘッドレスブラウザを使うところまで行ってしまうとC#で作る利点が薄れてしまってChrome拡張で作るか、となってしまうんですよね・・・
一般的な行数のスクリプトであればソースを見てC#のコードに置き換えるということで今まで解決してきたのですが、そうはいかない量のコードだとやはりブラウザに頼る他ないですよね

210 :
コントロールに適用したいStyleがあるので、Generic.xaml を作成して、
App.xaml で ResourceDictionary.Merge Dictionaryしました。その中で自作のコンバータークラスを使いたくて定義したのですが、どうしても認識してくれません。ビルドは通るのですが、実行時に見つからないエラーがでます(xaml parse exeption)
同じ定義を App.xaml の中で、Generic.xamlをマージする前に書くと、何故か実行時にエラーも出ませんし、ちゃんと動きます。
Generic.xaml の中でコンバーターを定義することは出来ないのでしょうか

211 :
すみません。相談室が荒れてるのでこっちで質問させてくださいm(_ _)m

212 :
メンバーはこっちも同じだから直に荒れる

213 :
まじすか(´・ω・`)
using について論議してたころはまだ読めたけど、一昨日ぐらいからダメな言い争いになってる

214 :
>>211
で、質問はなんなんだい?答えてやらないが読むだけなら読んでやるぞい

215 :
>>214
順番が前後してごめんなさい
質問は>>210です

216 :
>>210
>Generic.xaml の中でコンバーターを定義することは出来ないのでしょうか

Generic.xamlの中では定義できないんじゃないかと思うなら
自分で違う任意のxamlを定義してApp.xamlでMergedDictionariesして
使えるかどうかで切り分けたらいいんじゃない?

217 :
>>215
> Generic.xaml の中でコンバーターを定義することは出来ないのでしょうか
無理なんじゃねーの?
https://social.msdn.microsoft.com/Forums/silverlight/en-US/c4a84046-0b97-4225-a911-973c24117d79/converters-in-genericxaml?forum=silverlightnet

218 :
>>216,217
そうかコンバーターって静的でもインスタンスが必要だからリソースとしては定義できないってことですかね…。同じことしてる人がいるもんですね。ありがとうございます。

219 :
マジカヨ

>>217
リンクの回答者は書き方こう変えればできるよって書いてるじゃん

220 :
MarkupExtensionを継承するのが一番楽

221 :
>>219
言葉足らずですみません
質問にも書いている通り、Generic.xaml の外側に書けば view でも App.xaml でも定義出来ることは確認してるんです。ただ generic.xaml の中でしか必要ないのであれば、generic.xaml の中に書けないかというのが質問でした

222 :
>>219
> リンクの回答者は書き方こう変えればできるよって書いてるじゃん
いや、それがGeneric.xamlに書くのを諦めろんってことなんだが…

223 :
>>221
viewやApp.xamlで定義したんじゃ切り分けにならない
「見つからない」のがなぜか考えて切り分けしていかないと

>>222
回答者が書いてるのはGeneric.xamlの一部

224 :
>>222,223
あーなるほど。すみませんいただいた回答の記述を読み違えました。これ参考にしてやってみます
MarkupExtension を継承するのはやったことないので、これも調べてやってみます。ありがとう

225 :
あと切り分け頑張ります

226 :
Generic.xamlが問題なのではなく、TemplateBindingだとダメ。
動的なものはBindingで指定しませぅ。

って、もう解決したかな...

227 :
デザインパターン使う場合のクラス名とかってそのパターンに則ったクラス名付けた方がいいよね?
StrategyパターンならContextとかXXStrategyとか

Contextはふわっとしててイマイチな気がするんだけどXXContextにしたほうがいいんだろうか

228 :
コードを見る人のレベルに合わせる
書いてて意味が分からない人達にそれをやっても理解を妨げるだけ

229 :
自学習がてら書いてます
純粋にコードベースで考えた場合にどうあるのが望ましいかを身に付けておきたいです

230 :
>>227
MSは基本的にデザパタ用語を名前に含めない
あくまでMSの流儀なのでお前が従う筋合いはないが、少なくとも.NETではあまり好まれない傾向があるようだ

231 :
>>229
まずは細かいところに引っ掛からず自分の分かりやすい命名で学習を進めればいいよ。
慣れてきたら標準的ライブラリや参考書等を真似たりして自然に落ち着くとこに落ち着くと思う。

232 :
関数名を文字列で指定して実行する方法ってないですか?
テスト用の関数が何個もあってif文による分岐とか面倒過ぎます。

233 :
リフレクションでググれ

234 :
>>233
うわぁ知らなかった
つーかググってくださいだろ

235 :
何いってんだこいつ

236 :
>>234
質問してるくせに上から目線の上にお礼も言えないやつはさっさと死んでください

237 :
>>236
すいません本当は感謝してます
それにしてもこのスレ、入門っていう割には
ifとかforの質問がなくて何か上級者ぶってる気がします
DOMとかMVVMとかそんな文法知らないんですけど

238 :
>>237
初心者と言ったってそれが指す範囲に幅があるし、初心者なんだから自分の知らないことが出てきて当たり前だろう。
いちいちつまらないケチを付けないと気がすまないタイプなのか?

239 :
>>230
>>231
ありがたや

240 :
Cにおけるerrno.h のようなものは無いですか?
コンソールアプリで、終了コードにマジックナンバー書きたくないのですが

241 :
ifやforで質問があるならすりゃいいじゃん
過去スレ全部見てるわけじゃないが146もいってりゃそういう質問もあっただろうよ

242 :
>>240
自分で定義すればいいのでは?
.NETにはたぶんそういった類のものは無いんじゃないかな

243 :
.NetFWももう4.8か
VS2019入れてビックリだよ

244 :
>>240
勘違いしてるみたいだが、プログラムの終了コードとerrno.hは無関係だぞ

245 :
初心者は馬鹿だから、勉強項目のレベルが分かってない!

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

勉強レベル
1. 初心者用の本
2. Effective 何々、逆引きレシピ本
3. フレームワーク・テスト技法
4. メタプログラミング(黒魔術、動的定義)

246 :
文字列で指定した関数を実行したいということは数十年前から初心者にはありがちな願望だが
それはダメなやり方とされている

約40年前の自分も同じ願望を持った

247 :
>>244
すまん、しばらく使ってないからうろ覚えなんだ
cstdlib.h
だっけか

とりあえず

return 0;

とか

Environment.exit(0);

とかせずに済む方法が知りたい。

248 :
自前でEnumを書く

249 :
>>246
コード書き換えは自己進化につながるからAIの人類侵攻を防ぐために止むを得なかったのだ。

250 :
>>248
つまりシステム標準の定数定義は無いということ?

251 :
>>250
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

252 :
>>251
エラー以外が 0 っていう定義は、C(Unix)でもそうだからわかるけど、その0を定義してる、
Cにおける stdlib.h の EXIT_SUCCESS のようなものは無いの?
あと、「@No_t-0パラメータ」ってなんでしょう?
ググったり、手元にあるオライリーの「プログラミングC#」の索引を調べてみましたが、それらしい情報が出てきません

253 :
>>252
>Cにおける stdlib.h の EXIT_SUCCESS のようなものは無いの?
ありません
何かエラーで意味ある情報出したいのなら定義済みの例外投げるのがいいんじゃないかな
それでも成功したときは情報出せないけど
>あと、「@No_t-0パラメータ」ってなんでしょう?
英語版見た感じ機械翻訳のミスっぽい
https://docs.microsoft.com/en-us/dotnet/api/system.environment.exit?view=netframework-4.8

254 :
>>253
>>240
>コンソールアプリで、終了コードにマジックナンバー書きたくないのですが
という前提なので例外は問題の解決になりません
標準の定義が存在しないことが断定できれば、独自定義を持つ理由にできるのですが

255 :
なんか日本人的だなあw
標準の定義が存在しようがしまいが終了コードの意味なんて
使う人が分かればそれでいいでしょ。
そもそも今時そんなもの使う人いるのかなw
いないと思うよ。だって前時代的な過去の遺物だから

256 :
UIアプリだと人がついてなきゃいけないから自動化できんのです

257 :
例外と終了コードの対応Dictionaryを作って
最上層で例外をキャッチした場合はそれを終了コードにすればいい

そもそも特殊な場面を除くとしたときC#使うような環境で
終了コードなんて 0 or not 0 以外で使う奴いるのか?
エラーメッセージを直接ログに吐くのが主流だろう

258 :
いや、コンソールアプリの終了コードだから、最初から最上層のはなししかしてないんです。

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

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

それは

Environment .exit 0;

という記述の妥当性は場数を踏まないと理解できない、ってことじゃね?
場数を踏まないと理解できないようなコードを最上層には置きたくない

259 :
いやそれくらいenum書けよ…

260 :
>>258
何を拘ってるのか理解できないな。
ソフトウェアの外部仕様として終了コードの値と意味を定義して、それをenumでソースに書けばいいだけでないの?

261 :
もともとの質問としては終了コードのシステム定義がないのかって話でしょ
.NETの基本クラスライブラリでは定義されてない、で終わる話
じゃあどうするかとかは別の話

262 :
ローカルコード定義するならenum使っても意味ないような
ローカルで閉じてるシステムで使うならそれでもいいかも知れないけど

263 :
>>262
じゃあ何がしたいんだよ

264 :
>>263
>>240
の記述では足りませんか?

265 :
>>264
だからそれならenum書けよ

266 :
そもそもここでそれを聞いて
>標準の定義が存在しないことが断定
できるって理論がおかしいけどな

267 :
新春ガイジ品評会

268 :
enumなりconstなりstatic readonlyなりで定義
外部に公開する必要がある情報ならreadme等に記載
OSSならコード見ろ
仮に標準で定義されていても各数値が何を意味しているのか?はドキュメントかコードを参照するしかないじゃん

269 :
>>265
>>262

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

標準で定義されていれば、例え規格が変わっても、対応した処理系でコンパイルしなおせば同じコードがそのまま使えるけれど、ローカルで定義していたらそうはいかない

270 :
>>269
そもそもerrno.hが終了コードを表しているというのが勘違いだぞ。あれはシステムコールや標準ライブラリ関数の戻り値の定義であって、あくまでもCのコードの中の話だ。

271 :
>>269
何の規格の話?お前のシステムの規格が変わったのなら、なおさら独自のenum等で定義しておかなきゃバグるやろ

272 :
そこまで言うからには
もちろんコマンドラインで
-h
ってやったら
戻り値に関するヘルプも出るんだろうな
俺は見ないけど

273 :
初心者のつまらん質問で申し訳ありません
メッセージボックスを親フォームの中央に表示させたくて、方法を探したところ
Win32APIを使った方法を見つけましたが、結構コード量が多くて面倒くさそう・・・
これなら自前のモーダルフォームを作って親フォームの位置取得して表示させる方が簡単ですかね?
皆さんはどうされてます?

274 :
>https://docs.microsoft.com/en-us/dotnet/api/system.environment.exit?view=netframework-4.8
↑ここ読んでも分からないの?
ピンポイントで教えてもらってるのに

275 :
すでにコードがあるならコピペするだけじゃね?
ライセンスは知らん

276 :
>>270
誤りがあったので訂正。
戻り値そのものでなく、戻り値がエラーを示した場合に参照するerrnoの値(エラー番号)だな。

277 :
>>270
>>247

278 :
>>271
>>262

279 :
>>278
は?

280 :
>>279
>>278
がどうしたの?

281 :
ごめんキチガイに触ってしまった

282 :
>>273
APIをラップしたクラスを作ることをお勧めする

自分でFormから作ってもいいけど文字列に合わせてウィンドウサイズを調整したり
パラメータに合わせてアイコンとかボタンを作ったりする方が面倒だと思うよ

283 :
>>273
そんなの気にしてたの最初の頃だけだったな〜
自前でフォーム作ってもアイコンとかほぼ互換にするには手間かかる
APIでも大して変わらんのでは

他でも使い回すなら手間かかるかではなく、使い勝手がいいように組める方優先

284 :
おそらくエラー定義に拘ってる人は
元々自分で定義したらC使いの上司に
「EXIT_SUCEESSとかあるだろが二重定義するなゴラァ!」
とレビューで怒られて
「自分で定義してね♡」って書いてある公式ドキュメントが欲しいんだと思う
上司を納得させられる

285 :
そういう話だったのになぜか途中からどこで定義するのか問題にすり替えた
どこで定義されていようが最終的には同じなのに

286 :
>>273
WH_CBTをグローバルフックして表示位置を変更だな

287 :
>>284
>>274

288 :
>>273
自分なら自作するというかしてました。
標準のMessageBoxは使い辛いところが多いので。

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

ついでにこんな機能付きのを作ったらどうでしょうか。

289 :
>>285
だから、処理系で定義されてるのとローカルで定義されてるのじゃ根本的に違うよ
ローカルで定義してて変更したらソースコードのリビジョンが変わる
処理系の変更だけならビルド番号が変わるだけ

290 :
たかが終了コードの何を想定してるの?

291 :
わかった、話をまとめよう

Q. 定義済みのリターンコード無いの?
A. 無い

では次の方どぞ〜

292 :
>>287
システムエラーコードとアプリケーションエラーコードがごっちゃに書いてあるのが混乱の元な気がしてきた

"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"と書くなら最低ゼロくらいは定義しといてくれというのはわからんでもない

293 :
>>289
処理系で定義?????

294 :
>>292
別に定義しなくてもいいからcanなんでしょ

295 :
コンソールはスレッドセーフなのため?
マルチスレッドで文字出す
そしてもエラーがおきないか?安全か?

296 :
>>295
いけぬま?

297 :
処理系で想像してる粒度が違う気がするけど
.NET Frameworkとしては定義されてるものは無いで終わりだろ

298 :
>>292
その混乱は99.9%読み手の問題

299 :
お前らC#でWebサーバー建てたことありますか?
変な案件やらされそうで新年早々ウツ

300 :
>>299
さすがにやったことないな
ググッたら前例はあった
https://www.c-sharpcorner.com/article/creating-your-own-web-server-using-C-Sharp/

301 :
>>299
Kestrelじゃなくて?

302 :
任意に呼び出せる100個程度の文字列定数を作りたい時って地道に宣言するしかないよね?
enumは使えないしDictionaryはヌルポこわいし

>>299
IISとかではなくて?

303 :
>>302
地道に宣言するにしても、Dictionaryに地道に値を入れていく以外に簡単に生成できる方法がある
(テキストから読み込むとか、keyとvalueが同一でよい)のなら、一旦Dictionaryを作って
そこからC#のコードを文字列処理で生成してソースコードにコピペとかすると楽だよ。
C#コードの生成はもちろんC#以外の言語でもなんでもいいから慣れてる言語でやればいいし。

304 :
>>302
日本語の意味が取れないからどういうのを想定してるか具体例を書いてくれ

305 :
constでコンパイル時に解決したいというのでなければリソースファイルを使う

306 :
どうせ戻り値は、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 の範囲を使っておけばよい

307 :
処理系が正確に何指してるか不明ではあるが.NETのバージョンとかコンパイラのバージョンだったとして…
それ更新したら普通バージョン上げないの?
ソースコード変わってないからビルド番号しか上げない、みたいな運用聞いたこと無いけど…
乗っかってる大元を変えるって結構大きな変更だからコードの変更が一切不要でも念の為リビジョンなりバージョンなり上げない?

308 :
htmlファイルをディスク上に作らずに、こちらのプログラム上で仮想生成したhtmlをWindows規定のブラウザで開かせる方法ってないでしょうか?
ウインドウメッセージなどでデータを送りつける等の方法があれば良いのですが

309 :
詐欺請求マルウェアかよw

310 :
すみません、解決しました
ブラウザの対応次第なものの一般的なブラウザであればdata Urlで簡単に実現できました

311 :
おまいら printf の戻り値はちゃんと毎回確認するんだぞ判ったか

312 :
お断りします。

313 :
Excelによる計算をマスターとした場合、
C#で浮動小数点の誤差まで再現するには、どうしたら良いのでしょうか?
floatやdoubleやdecimalをそのまま使うだけでは、完全一致はしないですよね?

314 :
>>313
decimalは誤差がないが…
とりあえずそれはExcelの計算方法の再現であってC#の話題とは別

315 :
そもそものそのエクセルの計算が税法上問題なかったり物理学上の誤差などを
しっかり配慮された計算なのか?とう疑問がある

316 :
>>314
はい、Excelの計算誤差も含めてC#で再現したいのです
Excel固有の関数の再現では無く、除算乗算程度です

>>315
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

317 :
内部でexcel操作するライブラリを使って実際にexcelに計算させてその結果をもらう
って方式じゃだめかな?
何にせよ絶対関わりたくない要求仕様だなw

318 :
>>313
仕様を理解してエミュレートする
https://docs.microsoft.com/en-us/office/troubleshoot/excel/floating-point-arithmetic-inaccurate-result
https://en.wikipedia.org/wiki/Numeric_precision_in_Microsoft_Excel

無駄な努力

319 :
>>317
ExcelライブラリやEEPlusが使えれば良かったのですが、今回はライセンスの関係もあってExcelが無いPCで動作させる必要があるので、Excelを裏で動かす様なことは出来ないのです。

>>318
15桁処理なので、やるとしたら計算毎に桁数をカウントするとかになりそうですかね・・・。
C#で普通に計算した方が精度も出るので、すっごく無駄なことをやることになりますね。

320 :
一体どんなアホが集まればそんなふざけた案件が出来上がるんだ…

321 :
>>319
EPPlusやClosedXMLなら、Excelがマシンにインストールされている必要はないやろ

322 :
これはC#じゃなくて、CやC++に言えることかもしれませんが、
List<int> test=new List<int>();
for(int i=0; i<100000000; i++)
test.Add(123456789);
このような膨大な要素のリストを作った場合でも、
プログラムが動くのは、変数はメモリではなくHDD領域に格納されているからでしょうか?
メモリに全て格納すれば、メモリ不足でプログラムは動きませんよね?

323 :
>>316
8086の時代じゃあるまいし、30年前だって実数計算なんかHW処理だよw
つまり、CPUさえ同一なら(変なことをやってないかぎり)VBだろうがExcelだろうがC#だろうが計算結果は同じになるはず。

現に>>316の計算C#でやっても同じ答えが出るよ

324 :
>>322
仮想メモリでググってみな

325 :
今どき400MBぐらい物理メモリにのっけてもそこまでって感じだけど
仮想メモリで調べよう

326 :
>>322
10000000/1024/1024=95.36
95.36*4=381MB
まぁ今のPCスペックじゃ余裕じゃね。

ある時、テンプレートで消費されるメモリの方が格納データより多くなる
どこに限界があるか自分で計ってみなされ

327 :
>>323
C++でアプリ作ったときは浮動小数点制御ワードの設定次第で、演算の精度や丸め方向が変わって演算結果に差異が出たけど、C#やexcelではどうなんだろう? 同じ条件で決めうちなのかな?

328 :
google spreadsheet とか ms office online とか 360 でも再現されるのかな

329 :
非同期メソッド(async/await)の必要性について教えてください。

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

となると、上記のメソッドと比べ、非同期メソッド(async/await)の必要性や有用性って何なんでしょうか?

330 :
>>329
この記事読めば最初の10分でわかるよ
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/app/masterasync_index.html
分からなかったらここで人に聞いてもたぶん納得するような解答は得られないと思う
その場合は諦めて下さいw

331 :
読めば読むほどDoEvents大勝利の予感!

332 :
弊社は庶務おばちゃんのPCですら64bitでメモリ8GB

333 :
>>332
どこから誤爆したのか知らんが10年前の話でもしてたのか?

334 :
本当はここの話題じゃないのかも知れないけどさあ
.NetCoreアプリ(〜.dllファイル)に対するAppArmorの設定ってどうやるのか解説してるサイトや書籍があったら教えてくれんかな?
dotnetコマンドに対する制約しかかけられないのかな・・・・

335 :
>>329
async/await で書くと、深いネストのコールバック地獄を避けられるw

336 :
>>335
むしろasync/await地獄の始まりなんじゃ

337 :
>>336
kwsk

338 :
>>336
KWSK

339 :
>>329
ブロッキングすんなよ…

340 :
コールバック地獄のネストがasync/awaitで解消されるわけじゃないんだがな。

341 :
>>340
なんで?

342 :
コールバック引数に関数リテラルを書いてるからネストが深くなるわけで、それが嫌なら
関数を切り出しておけばいい。
async/awaitを使う場合は最初からそうするしかないってだけ。

343 :
まあ逐一処理みたいに並べて書けるから便利だよね。
別の場所に用意したコールバック関数の中に次の処理書くよりマシかな

344 :
あれ、ここc#スレじゃんw

345 :
いや、こうか。
そうしないとコールバックで繋いでないな。
f1(x1,y1,
 f2(x2,y2,
  f3(x3,y3,
   f4(x4,y3)
  )
 )
)

346 :
目次見る限りasync/awaitまで書いてあるようだが内容古いかな?

C#による マルチコアのための非同期/並列処理プログラミング
http://gihyo.jp/book/2013/978-4-7741-5828-0

347 :
C#で明示的にメモリを開放する手段はGC.Collect以外にはないんでしょうか?
画像やオーディオファイルを扱うアプリを作っている最中ですが、数百MBのデータを扱い終えても数分はメモリ使用量がそのままで少し気持ち悪いです
GC.Collectを行うと副作用も色々とあるようなので他に手段があればと

348 :
>>345
その場合どれがコールバック?

c#ならラムダを使えばjsのコールバック地獄と同じような地獄を味わえるが、async/awaitは関係ないな。

349 :
async/awaitの件解決しました。
ありがとうございました!

350 :
DoEvents最強!

351 :
>>348
普通にミスった
関数ポインタ的なものを渡してるつもりだったけど実行演算子付けてたら意味ないな

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)

352 :
それ、非同期ラムダならawaitで待つけど普通のラムダなら普通に呼ぶだけだろう。
awaitで解消できるわけじゃなくて。

353 :
こうか
f1(x1,y1,async (y1,y2)=>
 await f2(x2,y2,async (x3,y3)=>
  await f3(x3,y3,async (x4,y4)=>
   f4(x4,y4)
  )
 )
)

354 :
いや、これだとasync, await使ってるから本末転倒やな
もう時間ない

355 :
>>347
> GC.Collectを行うと副作用も色々とある
あくまで一般的な方針ってだけなので別に自分のアプリで問題(望ましくない時にスパイクを起こすとか)無ければ好きに呼べば良いよ
別にイリーガルなAPIというわけでもない
まあ一般的な話で言えば「メモリ残っててなんか気持ち悪い」程度の理由で呼ぶ必要はまったくないが

356 :
>>351のコールバックが非同期で呼び出されるってことだろうから普通に並べて呼ぶだけじゃ無理じゃね

357 :
>>355
たしかに基本的には問題になりませんが、
数GBを消費することもあり、もしそのときに使用者が他に重いプログラムを起動するなどするとメモリ不足になる場合もあるかなと・・・
こういうプログラムはGC任せにするのではなくC++などで作るべきという結論になるんでしょうか?

358 :
>>357
仮想メモリでググってみて

359 :
>>347
IDisposableなオブジェクトがあれば不要になった時点できちんとDispose()するようにするとかかな。
画像を扱っているんであればSystem.Drawing.Imageとかいろいろあるんでは。

360 :
usingで囲むのが定石かな?

361 :
主にはMemoryStreamで巨大データを扱っていてちゃんとDisposeは行っていますが、タスクマネージャーで監視している限りだと中々メモリ使用量が減りません

362 :
>>357
その消費されているメモリがどのメモリなのかきちんと把握しないと意味がないよ

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

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

現状「メモリが大量に消費されているが手動でCollectして大丈夫か」の情報だけでは現状方針は立てようがない

363 :
>>362
一応上でも書きましたがメモリリークの相談ではありません

364 :
>>363
タスクマネージャ眺めてるだけじゃ開発者が手続きを間違えいてるのか
.NETのGCがクソなのかも判断できないという話だよ

CLRProfilerなり使ってもうちょっと詳細詰めてみたら?

365 :
>>364
言葉足らずでしたが、Dispose処理を行ったであろうタイミングで減らないというだけであって待つなりそこでCG.Collectを行えばちゃんと解放はされます
ただ上でも言ったようにGC.Collectは副作用があるようなのでC++のdeleteのようなものは無いのかなと

366 :
GCって動かしてやらないと限界まで解放しないよ
限界までいって開放時のその時起きるのはストップザ・ワールドと呼ばれる有名な現象

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

ちなみにストップザ・ワールドは10分は動かなかったときがある

367 :
>>365
まあ生存しているマネージドメモリの正体がわかり切っていて処理の途中でも無いなら
(例えば単純にユーザー操作からファイルの読み込みが完了して結果が表示された後とか)
それはCollect使っても構わない場面だと思うよ

結局副作用と言ってもヒューリスティックなGCの調整に影響が出て
細かくGCが起きる場面でのスループットが低下する、かもしれない
とかその程度だしね

368 :
サーバーじゃなくてクライアントアプリだろ?
ガンガンGC.Collect打っても全然問題ないよ

369 :
>>366
なるべくストップザ・ワールドしないようにGCは改良されてきたけど、
.NET Framework 4.8でも10分かかったりする?

370 :
>>369
俺がやったのは4.5ぐらい
でもこの辺の挙動って変わるかな?

371 :
>>365
大きなメモリブロックを頻繁に扱うならアンマネージドメモリを使いなよ
アンマネージドメモリなら開放したいときに無駄なく開放できる
今はspanがあるからアンマネージドメモリの扱いも簡単だ
GCの手動実行は開放したいメモリ以外にもマークアンドスイープが発生しちゃうから効率が悪い
ちなみにMemoryStream.Disposeはインターフェース共通化のために実装してあるだけで呼び出す意味はない

372 :
逆に10分止めちゃうようなコードを見てみたい

373 :
GCが分単位でかかる状況ってそもそも作り出せるもの?

374 :
ストップザワールドてw
PC-98の時代で頭が止まってるのかwww

375 :
時間経過だけを条件にフルGCがされることってあるのかな?
メモリリークではないと言ってるけど状況的にそう言える根拠はないような・・・
- 数GBが開放されない
- 数分待てば開放される(ように見える)
- GC.Collectすれば開放される
- タスクマネージャーでのみ確認

376 :
MSDNより

ガベージ コレクションの条件
ガベージ コレクションは、次のいずれかの条件に当てはまる場合に発生します。
・システムの物理メモリが少ない場合。 OS からのメモリ不足通知またはホストによって示されたメモリ不足のいずれかによって検出されます。
・マネージド ヒープで割り当てられたオブジェクトによって使用されているメモリが、許容されるしきい値を超える場合。 このしきい値は、プロセスの進行に合わせて絶えず調整されます。
・GC.Collect メソッドが呼び出された場合。 ほとんどの場合、ガベージ コレクターは継続して実行されるため、このメソッドを呼び出す必要はありません。 このメソッドは、主に特別な状況やテストで使用されます。

377 :
>>374
せやな
ザ・ワールドだけで通じるよな

378 :
そして時は動き出す…!

379 :
out of memory.

380 :
>>374
GC界隈では普通に使う表現

381 :
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);
}
}

382 :
nugetでcsvhelper
どうしても自前で車輪の再発明をしなければ気が済まないならTextFieldParserあたり

383 :
>>381
https://dobon.net/vb/dotnet/file/readcsvfile.html

384 :
ダブルクオートの数は論理行内で偶数に
なる事に気がつけば
難しくないよね?

385 :
Ruby なら、CSV モジュールを使うだけ
CSVでは、要素内に、列区切り文字(カンマ)・行区切り文字(改行)がある場合は、
その要素をクォート文字(ダブルクォーテーション)で囲まなければならない
要素内に、クォート文字がある場合は、クォート文字を2つにしてから、
その要素をクォート文字で囲まなければならない

386 :
>>385
クォート文字有り無しが混在している時点でCSVじゃねえってことか

387 :
元々のCSVはSuperCalc の形式(オズボーン1にバンドルされていた)
今目にするCSVの仕様は、管理工学研究所が定義したK3形式が元になっている

で、実際の処理には何の関係も無い

388 :
CSVという欠陥品はやめてJSONを使おう
JSONならテーブル形式も違和感ない

389 :
丁度いいから聞きたいんだけどjsonのnugetってどれがいいんだ?
ニュートンでいいの?

390 :
utf8json

391 :
csvhelperなるものがあるのですね
情報ありがとうございます
ドボンさんの情報は以前は参考にさせて頂いてましたが、
.NET2.0くらいのやり方が多いので、今はより洗練された方法がありそうだなと
思っておりました

392 :
>>389
いいの定義次第ではあるが
.NET Core 3.0以降はSystem.Text.Jsonが標準ライブラリに組み込まれた
.NET Frameworkだと4.6.1以降で使える

393 :
>>386
クォート文字の有り無しは、混在できる

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

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

でも要素内に、それらの特殊文字が無いなら、クォート文字で囲まなくてもよい

394 :
それCSVっていうよりBASIC系のエスケープっぽいねw
そもそもCSVってカチッとした仕様がなかった気がするんだけど

395 :
>>394
RFCの定義はある
https://tools.ietf.org/html/rfc4180

396 :
>>394
もともとちゃんとした仕様が決まってないままに様々な方言が普及しちゃった後に、後付けでrfc4180が定義されたらしい。

397 :
>>395
斜め読みした感じ、それって定義じゃないのでは?
むしろ定義なんかないってはっきり言ってない?
定義はないけど多くの実装の最大公約数的な仕様はこうだって書いてあるだけじゃないの?

398 :
けっこう色々な種類のcsvファイル触ってきたけどこの定義から外れたもの見たことないから
とりあえずこの通りに実装しとけば問題ないけどね

399 :
>>395
そもそもこれstandards trackじゃないし。informationalやん

400 :
よく見ると冒頭にちゃんと
Category: Informational
と書いてあるね

401 :
Ruby のCSV も、RFC4180

これが標準

402 :
ルビーはどうでもいいけどRFC4180が標準だわな

403 :
今のご時世で新規開発のデータ出力にcsv採用はセンス無いですか?
csv受け取るサブシステムは今の所無いと考えて

404 :
出力した後の運用によるだろ
PGがさわるわけでもないのにxmlで出されても工場のおじさん困っちゃう

405 :
>>403
例えば時系列の数値データとかだと今でもCSVが最適解のケースが多いと思う
構造が必要なデータとかでないとXMLやjsonはちょっと冗長
まあC#ならライブラリも充実してるからぶっちゃけどうとでもなるけど

406 :
表みたいに、行・列だけの、ネストしない単純な構造物は、CSV がベスト!
一方、構造がネストするものは、JSON, YAML, XML など

407 :
Pandsみたいな優秀なライブラリ誰か作って、オレオレクラス定義すんの面倒になってきた

408 :
CSVを使う動機は他のプログラムにデータを渡すことでしょ。
例えばエクセル。日本も欧米もエクセルスキー多いからな

閉じたシステムでしか使わないデータのフォーマットなんか何だっていいでしょ。
あえてCSVを使う理由なんかどこにもないと思うけど

409 :
>>406


構造がネストしてたってCSVに入れなければならないときがある
そもそもネストしたぐらいでリストにできないんじゃデータベースにどうやって入れるんだ?
parentid持ってりゃネストしてたって再構築できるだろ

410 :
まあ、いつものRuby君だからな。
聞き齧った情報を単純化して暗記だけして、関われそうな話題が出るとここぞとばかりに唱え続けるのはいつものこと。

411 :
CSVで親IDとか使うの?

412 :
>>408
むしろ>>406の言う表みたいなやつでCSV以外を選択する理由がないと思うが

413 :
>>409
> parentid持ってりゃネストしてたって再構築できるだろ
それデータとして構造持ってるわけじゃないだろ
リスト構造が作れるからメモリーは構造持ってると言うようなもんだし

414 :
CSVは項目の増減があるとウザいんだよな
もちろんちゃんとヘッダ付けてスキーマが変わった時点でファイルを区切ればいいんだけど、
CSVは文化的に周辺のツールやDBのコマンドなどのエコシステムが全体的にスキーマは不変であるという前提で設計されてて、変更に弱い傾向がある気がするわ
選べるならJSON Linesの方が好き

415 :
sqlldrが対応したら考える

416 :
CSVは方言があるから、きちっと規則が決まっているフォーマットのほうがあらゆる場所で使いやすい
データをそのまんま見る必要はまったくないからな

417 :
>>414
> CSVは文化的に周辺のツールやDBのコマンドなどのエコシステムが全体的にスキーマは不変であるという前提で設計されてて、変更に弱い傾向がある気がするわ
それCSVの問題じゃないだろ…
そもそも文化的にとかイミフだし

418 :
>>417
仕事してるなら感覚的に伝わると思ったけど、具体的に言おうか?
CSVはヘッダが必須ではないから、CSVを扱うソフトウェアやシステムはヘッダに依存せずに設定として列の項目名を持つようになっているケースがよくある。
だから列の増減や差し替えがあったりするとたとえ直接関係のない列の変更であっても各所に散財する設定を変更して回らなければならなくなることが多い。

419 :
だからそれってアプリの設計の問題だろ
ヘッダーが必須じゃないのがCSVの欠陥という主張なのか?

420 :
まあCSVがデータ交換の第一候補とされる時代で、動的なスキーマ扱うのは大変だったからな
たんに昔は大変だったってだけの話だが、それを文化的にっていうならそうなんじゃね

421 :
カンマが入ってる場合はcsvじゃなくtsv(タブ区切り)がベストだと思う

422 :
ASP.Net CoreでWebページを作れるようになりたくて勉強中なんだけどさ
これって、内臓のWebサーバを使う限り、Let’s Encryptでもらった証明書は使えないもんなの?

423 :
今時のWebサイトのSSL証明書はAWSのロードバランサでポチるもんだ
サーバーはただHTTPを垂れ流せばよい

424 :
おお、運用する時はこれが良いな
正直、サーバの設定もわかんないので任せっきりの方が安心そうだ
ただ勉強中は、100円で買ったドメイン + 安物VPS + 無料証明書でうまく動いてくれたらすごく助かるんだけど・・・・無理なのかな?

425 :
>>421
むしろ csv より tsv の方がいろいろな点で優秀なのに、どうして tsv がはやらなかったのか?

426 :
エディタ次第で見た目が変わるからと
人が加工しづらいからだろうね

タブが入ってますと言っても判らんかもしれない
文字列が長いとそろわないのでタブの位置がおかしくなるかもしれない

427 :
csvよりtsvが優秀な点って何?
結局データ内にtabがある可能性があるならおなじじゃね?
だからカンマとかタブとかひっくるめてcharcter separated valuesの意味とされることも多いんでしょうが

428 :
TABをデータの一部として含む必要のない用途って圧倒的に多いと思う。

429 :
いみわかめ

430 :
えっcsvってcomma-separated-valuesの略だと思ってた
character-separated-valuesが正しいのね
カンマは含むけどTABを含むことはないデータを扱うのであればTSVのほうがちょっとだけ楽
あとTSVならExcelへのデータコピペ貼り付けが楽ちん
なnだけどExcelは拡張子tsvを認識してくれるわけじゃないし
デフォルト状態のテキストエディタだとTSVを開くとTABが見えなくて一般エンドユーザには扱いづらい
このあたりが普及しなかった理由かなあとも思う

431 :
そういえばTSV使えばクリップボード経由でスプレッドシートに矩形のデータの貼り付けが出来たねw

432 :
>>414
ヘッダー行無しで、列名を使わずに、
数字インデックスで、各列にアクセスするのは、ナンセンスw
各列の順序に、依存してはならない!
列名でアクセスすべき!

433 :
>>430
別にどっちが正しいとか無いよ
個人的にはカンマの意味で使うことのほうが多いしRFCでもカンマだし
csvよりtsvのほうがいろいろ優秀とかいうほんまか?みたいな説があったから気になった
改行以外の制御文字は非エンジニアには理解しづらいし表示は環境依存になること多いし別にどっちが優秀とか全く思わん

434 :
chimpo-separated-values
で行くわ

435 :
>>432
SQLコマンドによるCSVのバルクロードすらやったことがない素人ルビカスは巣に帰れ

436 :
>>435
431が正しいだろ

437 :
JSON Linesってヘッダー名が無駄だよね。
俺なら縦横逆にしてJSON Columnsだな

438 :
>>427
大抵の場合カンマもダブルクォートも気にしなくてよくなる分有利だと思う
データ内にtabが必要なデータって出会ったことある?
完全に自分で決めていい場合なんかはまずデータで発生しない垂直タブとかにすることもある
あとbcpはいい加減囲み文字に対応してくれ・・・

439 :
>>436
正しいかどうかはケースバイケース
まともでないヘッダーついてるデータを読み込めとかあったりするし

440 :
ASP.Net coreを学習してて思ったんだけど、cshtmlファイルって簡単にプレビューすることってできないの?
もしかしてデザインを確認するたびにWebアプリをビルドして動かさなきゃならないのかな・・・・・?

441 :
>>440
プレビューは無理だが、実行中に変更して保存すれば自動的に反映される
今時のWeb開発はReactのようなブラウザ側でテンプレートをレンダリングするフレームワークを使うのが主流だから、
いわゆるライブプレビュー問題はそもそも関心の対象から外れつつある

442 :
>>441
ありがとう、簡単に反映されて見やすくなったよ!!!
しかも学習が進む前に主流がここにないこともわかって助かったぜ!!!
わからない点もあるけど、RazorやMVCを勉強するより、WebAPI+Reactのセットを勉強すれば良いのかな

443 :
System.Drawing.Imageで、ビットマップを読み込んでそこで色々加工した後
ヘッダーまで含めたDIBビットマップ情報を取得したいです(変換したいです)。
要するにバイナリでファイルから読んだのと同じ情報にSystem.Drawing.Imageから変換したいのですができますか?
今はやり方が分からないので、Imageからファイルを読み込んで一通り加工した後、一旦Saveでファイルに書き込み
それを自分でSystem.IO.FileStreamでバイナリとして読んでます。効率が悪いので直接Imageから変換したいです。

444 :

https://stackoverflow.com/questions/5931407/how-to-create-a-new-hbitmapdib-from-an-existing-hbitmapcreatecompatiblebitmap
https://social.msdn.microsoft.com/Forums/ja-JP/66a19da1-91cb-4a80-9d4b-07edfb3587f2/dib244182433512395-bitmapfileheader?forum=vbgeneralja
https://www.mm2d.net/main/legacy/c/c-11.html

445 :
>>444
ありがとうござます!あとで試してみます!

446 :
Pands移植してくれ

447 :
一度作ったプロジェクトに、後からテンプレートのオプション相当の機能を追加するのってどうやるの?
https://docs.microsoft.com/ja-jp/aspnet/core/security/authentication/identity?view=aspnetcore-3.1&tabs=netcore-cli
上の方のチュートリアルからやってきた流れで作ったものに認証を追加しようとしたら、どう言う作業になるのか全然わかんないぜ
プロジェクトを作る時は予めオプション全部盛りにしといた方が無難なのかな?

448 :
>>430
拡張子 .tsv は認識しないけど、Unicode や UTF-8 とかのタブ区切りテキストの拡張子が .csv の場合はちゃんとExcelで開けるよ。ボムで判定してるぽいから使いどころがアレだけど

449 :
kingなんとかっていう中華パチモンのexcelモドキがあるが
あれのマクロとかはMSexcelと互換なのか?

450 :
>>425
テキストエディタで見た時に壊滅的だからじゃね?

451 :
優秀か?

452 :
>>450
それは逆だと思うよw
メモ帳かワードパッドでタブ区切りで何か書いてみたら分かると思うけど

453 :
>>452
ケースバイケースと言うかデータによると思う
個人的にはタブは2個続いてる時に見落としがちなのが痛い

454 :
五百

455 :
カンマでもスペースで桁合わせしないとよくわからん。
タブはエディタ次第で表示もできるからそう大差ないと思うがな。

456 :
仮に8タブで揃えてもどうせデータに8文字以上あったらずれるしな

457 :
30年前のエディタで考えろよw
今なら表示なんて好みで済んでも当時はそうとは限らん

458 :
30年前だと、WordMasterから
MIFES,FINAL,REDへの変換期かのう
VZの前身のEZは出ていたかも

459 :
秀丸はなかったな

460 :
なんか話が通じてない気が

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

例えばこれをメモ帳にコピペして", "をタブに置換してみれば
TSVのビジュアル面での優位性が分かる
くどいけどメモ帳ね。今時のエディタでやれとは言ってない

461 :
メモ帳最強だな
1 2 3
100 200 300
10000 20000 30000
10000000 20000000 30000000

462 :
メモ帳とか関係ない
つうかなんでwin限定?
なぜtsvではなくcsvが多く残ったか
どっちが見やすいか?の話ですら無い

463 :
>>462
文脈読めないとアスペルガーって言われるよw

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

スプレッドシートで見た時マトリックス状になってないデータだと
,,,1, 2, 3,,,,
行のデータがこんな風になるけど、こういうのTSVだと検証しづらいよね。

464 :
1-2-3とか桐から吐き出せたのがcsvだからとかその程度の理由じゃないの?知らんけど

465 :
日本ではそやな

466 :
そもそも大昔にtsvなんてあったか?
csvのだいぶ後に聞いたような気がするが

467 :
昨日のWindowsUpdateから.Net製アプリだけ起動が遅くなった(普段はすぐ起動していたものが1秒弱かかる)気がするんですが自分だけでしょうか?

468 :
大昔がいつかわからないけど、Excelは2000の時にはtsv対応してた

469 :
いつも思ってるんだけど
営業ってゴミ以下じゃないですか?
こいつらってSEもPGも出来ないのに
何故か技術職より高級取りですよね?
そのくせ飲み会なんかでは
お互い苦労を労ってみたいな、苦労人ぶりますよね?
営業ってほんと何もしてないんじゃないですか?
皆さんは休日もc#の勉強でしょう?大変だと思います。
理不尽だと思いません?

470 :
皆さん営業に対して切れそうになったことってありますか?

471 :
>>469
じゃお前は営業できるの?
やったとして、お前が今書いたようなことをPGやSEから言われない自信はあるの?

472 :
どう考えてもプログラマって人生削って仕事してますよね?
そのくせ営業はキャバクラにいくと苦労自慢ですよね
こいつらの苦労って何なんでしょうか?w
人生楽してるくせに、苦労人ぶって注目を浴びる
サイコパスなんですかね?

473 :
静かにしてろガイジ

474 :
仕事の半分ぐらいCPU戦でいい人が、四六時中対人戦やってる人に文句言っちゃいけんよ

475 :
>>469
自分が知ってる一部の人間だけを取り上げて、同じ属性の人間がすべて同様であるかのような主張はやめな。
俺は営業でなくSEだが、見てて気持ち悪い。

476 :
>>471
そもそも営業といっても技術営業というのもあり、そちらは尊敬してます
僕が言うのは一般的な営業です
また飲食店とかそういう華やかな社会での営業なら、美人やイケメンが適当に
営業しても良いと思いますが、技術職ですからね
冴えないおっさんや、仏頂面の爺が営業してるじゃないですか?
能力もないくせに、 PGもできないくせに、何であんなに偉そうなんですか?
ここにいる人は、凄い技術をもった集団だと思います。
だけど営業だけは本当にゴミ以下なんじゃないかって思うんですよ。
努力することもなくSE,PGが開発した商品で飯をくってる奴らだと思いません?

477 :
>>474
最近は技術職の人がそのまま営業したほうがいいんじゃないかって言われてませんか?
皆さんが営業したほうが遥かに良いと思います。僕ですらしたことあるんですから。
そもそも技術職の人同士が直接対話したほうが、手間が省けますよね?
例えば、滅茶苦茶美人や、華があるイケメンが、技術を超えたところで会社の関係を良好に
する潤滑油のような存在であるなら別です、これに関しては僕は例外として認めます。
だけどですね、冴えないクソムカツク顔した偉そうなおっさんが、何のスキルもないくせに
ただその会社に行って名刺を渡して、外で飲んだりする。こういうのってよくあると思いますけど
むかつかないですか?こいつら会社にいるの?って思いません?
だってどう考えても、現場の人が死にそうになりながら恋人も出来ず、休日も納期に追われてなんて
僕はもう見ていて辛すぎるんですよ。仲間で鬱になった人が何人もいます。全員技術職です。
営業はいません。いたとしても技術営業の人です。

478 :
>>476
担当役員とあうために、派閥構成調べたり、その裏取りしたり
なんならアポイント調整してもらうために、部下の接待したりするんだけど
君できる?
で、当然会っただけじゃ話進まないから、会うまでにプレゼンの構成考えて、それに合致する統計情報集めて
何なら役員の他のプロジェクトの様子調べて、そのプレゼンに盛り込んだりするんだけど?

479 :
>>477
お前に恋人ができないのは、仕事のせいでもその営業のせいでもないぞ。

480 :
>>479
システム開発に営業なんて必要ない
技術者同士の対話でいい、何故納得しないんですか?

481 :
>>478
そもそもシステム開発部署には派閥なんてない
営業の派閥とか気持ち悪すぎ、どんだけいるんだよ不必要なのにw

482 :
金の話は営業に任せとくわ

483 :
営業に逆らったらクビになるから
こういう真実味のある話は嫌いなんですね、わかります
それに皆さんが不満はないのは、ある程度給料を貰ってるからでは?
皆の幸福を全体で考えるなら、どう考えても営業は邪魔でいらない
こんな奴らが苦労人ぶるのは俺は不愉快極まりない

484 :
頑張って相手にしてる人もいるけど、アフィブログに転載するための種まきじゃねえの?

485 :
>>480
自分の身近な不満を感情のままにぶちまけてるだけで、他人を納得させるような論理的、合理的な説明を一切していないのに、なんで納得させられると思ってるの?

486 :
>>481
あるものを無いとか言っちゃう?理解できないものは、見ないタイプ?
そんなやつに売れるシステムなんてねーよ。

487 :
そんな単純な話じゃ金が動かない
金が動かなきゃ何もできない
金を動かせる人間と話ができなきゃ開発がスタートしない
そうやって他職種を罵倒するようなやつは君が嫌がる営業と同じだということに気付いてない

488 :
マ板でやれよ

489 :
>>476
ここにいる人達がすごい技術を持った集団だなんて本気で思ってるのか?
もしそうだとしたら世間を知らなすぎというか技術者に過剰な夢をみているか、自分を含めた技術者というものを特別視し過ぎだ。
もしくは、自分の主張を受けいれてもらおうと、不必要に相手を持ち上げているのではないか? それが意図したものかそうでないか知らないが、もし無意識に癖でやってるなら改めた方がいいぞ。

490 :
そんなことよりC#の話しようぜ

491 :
>>488
そうだった、すまんかった

492 :
>>489
常に技術力を磨いてる技術者と、休日もコネや接待のことしか考えてない
営業はどっちが頭良いと思うんですか?
営業は、確かにちょっとしたテクニックで相手に好かれたりするこつとか
そういうのは得意かもしれません。小手先のテクニックを磨いて、そこに
論理なんて全くないんですよ。流されやすい人間の心理なんかを心得てるにすぎないんですよ。
論理的に考えている水準が全然違う。例えば簡単なC言語のプログラムだって、大学1年
の時は全く手に負えないわけじゃないですか?そんなこともできないの?ってのが
生涯続いて取り返しがなくなってるのが営業の人達だと思うんですね。

493 :
>>487
だから悪しき営業文化があるだけじゃないですか?
規模の大きい企業だと営業を通すしかないですからね。
あの部署のあの技術者さんと直接対話したい!あの人となら
良い付き合いができそうだ
ってそういう試みをしてる人がいてもコンプライアンスで禁止されるから
できないだけじゃないですか

494 :
誰も賛同してくれなくて違和感を感じる
俺以上にもっと深い視点で切り込んでさらに否定的になってくれたりしないのか

495 :
>>484
都合が悪いといつもアフィ扱い

496 :
>>494
単純にスレチだから

497 :
相手すんなよ…

498 :
副作用の削除や参照透過性を何処まで突き詰めるのかにいつも悩む

499 :
伸びてると思ったらマ板向けの話かよ

500 :
無職・だめとかメンヘラ板の間違いだろ

501 :
>>498
最低限副作用があるかないか分かるような書き方をしたい

502 :
>>501
これはフィールドに依存、これは静的関数みたいな別けは何基準でしてる?
少なくとも自分の中での基準は明確にしておきたいんだけど全然わからん
使い方次第だろうけどあとからコロコロ変わるのよね……

503 :
プロパティにフィールドのラッパー以上の仕事をさせない
処理を必要とするものはメソッドにする
ジェネリックコレクションもそうなっている

オブジェクト指向信者だから単純な静的関数はあまり使わない

504 :
バッキングフィールドに値を代入するのだって処理ですよw

505 :
System.Text.Jsonでdictionaryやsortedlistのkeyがint時のエラーって直ったんじゃないの? また復活したの?
> https://github.com/dotnet/corefx/issues/40120

506 :
>>504
アスペかな

507 :
違うよw
端的に
>処理を必要とするものはメソッドにする
こんな方針間違ってます。
羹に懲りてなんちゃらそのものだね。

508 :
先輩方、Blittableな構造体の実装だけを動的に付け替える方法って何か無いもんですか?
巷で持て囃されるストラテジパターンは参照を使う都合で非Blittableになってしまうので、今はメソッドをenumで指定して愚直にswitchで振り分けていますが、発火の度に分岐を走らせるのはとても優雅とは思えんのです

509 :
アスペの考える「処理」の定義がおかしいだけ

510 :
Blittableというワードを始めてみた

511 :
内容により
配列やリストや辞書などいろいろ使えるとだけw

512 :
https://docs.microsoft.com/ja-jp/dotnet/framework/interop/blittable-and-non-blittable-types
Bittableって俺も初めて聞いたわ
要はCの構造体みたくサイズがきちんと定まる型ってことか

513 :
Blit = 転送する
アンマネージド⇔マネージドに(素直に)転送可能 ってことかな

514 :
>>508
Blittableに自身を引数に取るdelegeteをIntPtrで持てばええんじゃね

515 :
>>514
あざっす大先輩
Cと同じように関数ポインタを使えというのは素晴らしいアイデアなのですが、C#での具体的なやり方が分からんのです
なのでそこのところ詳しくご教示頂けるとありがたいです

516 :
using System.Memory

517 :
その構造体を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>>();    
}

518 :
>>511
あくまでもこれを押す俺

519 :
実際に処理が分岐してんのに分岐してないようにみせるのって何がいいんだ?

同じルート通ってるのに違う処理呼ばれてんだろ?
ドキュメントにそれの記述がない状態でそれということを理解するためには
ブレークで止めてステップ実行でもするしかないじゃないか?
お前がスマートだと思ってるコードは他人には読み難いだけのクソコードである可能性を心配したほうがいいな
心が壊れてしまう前に
何十年もそんなくだらないことに時間を割いたあとでは大変だ

520 :
大変なおつむからどうにかしとけ生ゴミ

521 :
>>519
まあ、誰しも最初からわかってるわけではないので、言ってることがわからんでもない
LINQわかりにくいからループ回せやみたいなもんかな?

〉実際に処理が分岐してんのに分岐してないようにみせるのって何がいいんだ?
まずその捉え方が間違い
actionのメリットをググれば残りの疑問も解消する

522 :
>>519
C言語の関数ポインタも認めない派?

523 :
>>515
正直なぜ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そのままで持てば良いけど

524 :
>>521
ねーよ
だって俺が他人のソースを読むときに一番嫌なのは見えにくい動作だもの
ここが隠れてわかりにくい時点でその組み方に何の魅力も感じない
たくさん処理が分岐してるのであればそれを明示的に記述したい
思いっきりswitch caseで書きたい
ソースにhtmlのようなフォント設定機能があったら太字にしてサイズは72ぐらいで表示したい

525 :
>>524
小学校からの通知や町内の回覧板に漢字が使われていたら、「俺は漢字は読めねーんだ!覚える気もしねぇ。俺が読めるようにひらがなだけ使え!」って言ってるようなもんだな。
難読漢字を多用してるならともかく、常用漢字も読めないならお前が勉強しろよ。

526 :
>>524
〉だって俺が他人のソースを読むときに一番嫌なのは見えにくい動作だもの
誰だってそれは同じ
〉ここが隠れてわかりにくい時点でその組み方に何の魅力も感じない
それは、共通処理が隠れてわからないから全部インライン展開しろやと言ってるのと同じで、バカの理論。
引数にactionがある時点で、呼び出し元で処理を指定するのが判断できる
そういう共通処理なんだなとわかる
使い方もわかる
わかりにくいところはない
この程度のことをわかりにくいと思うなら、相当センス無いよ
〉思いっきりswitch caseで書きたい
actionを知らなくて(使い方に慣れてない。メリットを理解できてない)そういう人も多いからどちらでもどうぞ
action書けるとこは全部書けとも思ってない。メリット大なとこだけ書く(書き直させる)だけでも可と思ってるので

527 :
>>526
判断できる、じゃねーよアホか
明示的に書くと何でダメなんだ?
明らかに判断しなくちゃいけない手間が入ってるじゃん
そしてそこにメリットがない

528 :
俺の価値観はさっきレスした通り
わかりやすい、明示的に、を何より優先する
お前のactionの処理は全部でいくつあるのかソース中を検索かけて隅々まで見ないとわからないじゃないか
欠陥コード乙

529 :
君の価値観なんて興味ないよ

530 :
>>529
涙を拭けよ

531 :
言わんとすることはわかるけど
まあ複数の場所に100個caseのあるswitchが出てくるとくじけることがある

532 :
似たようなクラスが100個あっても挫けるw

533 :
何だ、センス以前に真正バカだったか。
こういうのを老害(ゆとりバカ)と言うんだなw
真正バカと議論しても無駄なので無視(NG)っと

534 :
しかもクラス100個が国産牛の脂肪ように間に入ってる
それらのactionの数だけそこを通るんだ
どう考えてもswitch caseのがいい

535 :
老害staticおじさんの思考回路だな
こういうのは非つっようない限り関わり合いにならないようにするに限る

536 :
>>523
マジであざっす!

537 :
明示的に書いてあるほうがいいってのは数が少ない場合に限る
明示的に書いてあっても数が増えると同時に考えなければならない事項が増えて脳に多大な負担がかかるようになる
だから細かいことは気にしなくてもうまく行く仕組みを確立して脳の負担を減らすことの重要性が増す

というのがコードリーディングの観点での評価
他にもリビルド不要で拡張可能であるかどうか
開放閉鎖の原則を満たすかどうか
といった観点でも評価ができる

538 :
>>537
は?
むしろ多いときほどいいだろ

539 :
>>526
> 誰だってそれは同じ
同じじゃないだろ
必要ないものは見たくないのが普通だと思うぞ…

540 :
コンパイラやバイトコードのツール類は巨大なsweichがドカーンと鎮座してるけど
内容がはっきりしてるからわかりやすい
検索したら内容は終えるし
そうじゃなくて内容に応じて動的に変わる場合はそれじゃ賄えないのでdelegate使うけど追うのは大変なのはわかる
でもそれはswich caseに落とし込めない
落とし込むとバグの温床になる

541 :
>>539
必要ないものを書くんじゃねーよ
削除しとけ真正バカ2号

542 :
>>538
多いときほどswitchは悪い
数多の案件で膨大なswitchが開発者を苦しめた実績がある

543 :
>>542
どこ?

544 :
>>541
匿名掲示板で人に指図とかバカすぎるわ
そもそもどうやって削除するんだよw
できるならお前のアホレスから削除しとけ

545 :
このまえ相談室で暴れてた人と同じ人かw

546 :
相談室ってまだあったのか
無くなったんだと思ってたw

547 :
enumに実装が書けないのでと言う話も書いておこう

548 :
ガイジの相手をするなガイジ予備軍が

549 :
とガイジが申しております

550 :
>>466
「tsv」という呼称では呼ばれていなかったがタブ区切りデータは普通にあった
個人的にはアセンブラとか機械語だけで書かれてるプログラムが使ってることが多かった印象
他には「:」区切りや「;」区切りも割と良く見かけた

551 :
>>470
切れたことならあるよ

552 :
>>485
感情はあくまで感情だから合理的に納得させる必要は無いでしょう

553 :
>>483
逆らっても首になるとは限らない
もしその程度で首になるような会社なら辞めた方が良い
営業に対しては言いたいことを言った方が良い

554 :
>>550
古いMakefileがそだねー

555 :
昔はレコードデリミタ/フィールドデリミタといってプログラムごとに適当に決めてたな。

556 :
ascii コードの30 = rs/31 = us
がそれだよ

557 :
1E
1F
って書いて欲しい

558 :
単一のページ内で、Blazor ServerとBlazor Webassemblyを混ぜて使うことってできないのですか?
主にBlazor Webassemblyを使いたいものの、乗っ取られると危険な処理はBlazor ServerのビルドインSignalRに全部まかせたいんです

559 :
>>558
普通にサーバーサイドはREST API書けや
Blazorに固執する意味がわからない

560 :
>>559
ちゃんとできる人ならそれもいいかもしれませんが、私のレベルで手を出すのは危険なのです

561 :
意味がわからん
Web APIなんて枯れきった技術だろう
Blazorはバグだらけで、問題があったら自分でソース見たりgithubのissue上げたりできない奴は手を出してはいけない代物

562 :
あなたは優秀なのかもしれませんが、私はマイクロソフトの技術者の足元にも及ばないので勘弁してください

563 :
百姓は畑を耕してろ
一丁前にコードを書くな

564 :
お百姓さんにはかなわないけどね
米作ってる人が一番尊い

565 :
上流でウンコしていたぞ(猪が)

566 :
Blazorは表面的には簡単に見えても
本質的には難易度高いはずだけどな
(見えないところで無理してる分)
サーバサイド技術は基本的な知識だから学習するに越したことは無いよ
つーけ後で結局手詰まりになる

567 :
blazor clientはシンプルなアーキテクチャでいいね

568 :
Blazorって普通は使う局面ないよな

569 :
金出してくれる人が居ないと使わないな

570 :
開発側の利点で顧客が金を出してくれることはほぼないから無理
将来のメンテナンスコスト考えると普通にjs使うだろう

571 :
まあWPFみたいにすぐに負債になるのがわかりきってるし、
自分のスキル的にも時間の無駄でしかないわな

572 :
MSがこういうものを金をかけて開発してるのが納得いかない
無駄でしかないのに

573 :
Blazorは意外と業務系で普及するんじゃねえかと思ってる
業務系はJS不得手な人材沢山いるからC#でサクサク開発できるメリットがデカイ

574 :
WebAssemblyの実用化楽しみ
MSは開発がんばって欲しい

575 :
WebAssemblyを基盤にしているからSilverlightみたく捨てられることは無いとは思うけどね

576 :
js不得手マンだけどjs周りをもっと使いやすくしてくれればそれでいいのよ
TypeScript使えば良さそう?だけど触ったことない

577 :
blazorアイデアはいいんだけどいかんせんバイナリサイズがでかいのがどうにかしてほしい(サーバーサイドの方にはあまり将来性がないように見えるので)
せめてcorert経由するようになれば軽くなるんじゃないかと思うんだが

578 :
>>573
HTML/CSSはどのみち必須なんだから、クラシックなMVCアプリならほとんど変わらんよ
Blazorの意義はJSをゴリゴリ書かなくてもSPAを作れることにあるわけだけど、業務系でそんなもん要求されない

579 :
業務系は巨大で複雑なUIが多いからSPAのほうがうまくハマる
今は高度なJSスキルが必要だから避けられてるけどC#で書けるって理解されたら業務系でも採用が増えるだろうね
JSを排除できるメリットはかなり大きい
それに加えてMVCよりBlazorのほうが構文とアーキテクチャが直感的で簡単なのもポイント
BlazorはHTTP/HTMLの事情を詳しく知らなくても書けるように出来てる
MVCはHTTP/HTMLフレンドリで必要な前提知識が多いから業務系では採用しにくい

580 :
それを資料に纏めて、金持っている
人を説得しないと。普及しないと思うよ。

581 :
BlazorはいいんだがRazorはどうにかして欲しいねぇ。WPFとか使えるようになればいいが。

582 :
swtich分って必要なんですか?
普通に変数1個にして外部ファイルで設定すればいいだけじゃ?

583 :
必要な引数も違うのにどうやって分岐無しで呼び出すの?

584 :
1=りんご
2=バナナ
3=キウイ
4=いちご
5=みかん
こんな感じのテキストファイル作ればいいだけじゃ?

585 :
>>584
相談室でやれ

586 :
>>584
引数がそれぞれ0,4,7,17,5とか変わったらどうやって呼び出すの?

587 :
>>584
それがクラス定義だった糞プログラムのメンテ担当したことあるけど、正直殺意沸くレベルだった

588 :
文字列やバイナリを処理する辺りでswitchが出てくるのは仕方ないにしても、それ以外でswitch文が出てきたらほぼ設計ミスだろうな

589 :
ごめん、入力を受け付けるようなものは使ってもミスでも何でもないな

590 :
>>584
それでいいと思うなら、もうそれでいいよ。
switchが役立つと思う場面に出会ったことがないなら無理に使わなくていい。
普通にプログラミングの学習をしたり実際に何か作り始めれば、そう遠くないうちに役に立つと思える場面に出会うはず。

591 :
重複したswitchや長大なswitchが悪いのであってswitch全てが悪いわけではない
拡張するときに不便を感じたら多態に置き換えればいい

592 :
>>584
使い道がないのはお前の存在も同じだから
中央線にでも飛び込んでR

593 :
プログラミングに限らずどのフィールドでもそうだけど、
イキってる系の連中の主張は話半分に聞いておくのがいいと思うよw

594 :
>>584
条件文をマッピングテーブルで置き換えるという古典的なリファクタリング方法の一つ
どちらかが常に優れてるわけではなく状況に応じて選択するもの
C#のバージョンや分岐の数によっては
コンパイラがswitch文をdictionaryのlookupに変換してる

595 :
>>594
それ今は迷信
Roslyn移行後のC#コンパイラはswitchのcase数が多い場合はハッシュに基いた二分探索のようなコードが生成される

596 :
>>579
同感
業務系アプリをブラウザで動かしたいっていう潜在要求は多いと思う

597 :
>>595
Roslynから変わったのは文字列で分岐される場合のみの話
文字列比較でhash tableをlookupするんじゃなく
数値比較で事前にハッシュしたsort済みarrayをlookupするようになってる
細かい部分を抜きにすると数値をキーにしたSortedDictionaryのlookupと同じ
でこういうのは今の>>584には不必要な知識

598 :
流れよく分かんないんだけど
つまり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に処理持たせてやりたいんだ俺

599 :
ケースバイケース
どっちが早いのかは実測が基本
どっちも最適化等々で逆より早くなりうる可能性がある

600 :
単純な配列はいつでも最速だと思ってたが違うのか?
読むのが単なる値じゃなくて処理な時点で誤差レベルだと思うが

601 :
XLAT

602 :
配列はちゃんと理解してないと境界値チェックが入って意外に遅くなることがあるよ
だいたい気にならんレベルだけど競技プロとかやるようなら結構影響してくる

603 :
>>598
仮に配列使う方が効率的だとしてもenumの値に依存するような実装は論外でしょうw
やってはいけない、の見本みたいなもの

604 :
俺もCから入ったから配列にして呼び出す処理は昔はよく書いた
enumを配列の添字にするのもよくやった
処理速度気にする開発することは多少あるけど基本的にどっちもC#ではやらんな

enumに処理持たせたいって要件ならそれぞれの値ごとにclass作って継承させるかな?
詳細仕様次第ではあるけど
そんなんめんどくせってなるようなレベルならぶっちゃけどっちだって変わらん話なんだから好きにすれば?って思う

605 :
>>598
delegateの配列で試してみたが
switchのほうが2~5倍くらい速かった
最適化できる度合いの違いかな

606 :
過去に散々既出だと思うけどdelegate自体がもともと重いんだろうね。
単なる関数ポインタとは違うから

607 :
>>606
デリゲートでなくインターフェースを使っても>>605と同じ結果なのが謎だった

608 :
enumの実装が書けたら違うことになってるかもな
でも今はいらない

609 :
>>586
内部的なロジックミスにならんようにすればいいだけ
プログラムが長大になる原因はテキストを利用しないからだと思いますよ
1万行のプログラムが果たしてそれだけ必要なのか?って思います

610 :
>>590
俺も思いますね
というか文法的な事でももっと改善してよって事多いですよね!
0<input<&&input<5→うぜー
0<input<5→これでいいだろうが

611 :
>>610
範囲チェックの改善なんて散々議論されてるし今も要望で上がってる
気になるなら見てくればいいよ
なぜ未だに入っていないかとかもちゃんと説明されてる

612 :
>>611
何で?ググるの面倒なので

613 :
>>610
もうID変わってるだろうけど>>590なのだが、皮肉のつもりで言ったのが通じてないようだ。
switchの用途として>>584みたいなのでいいのではなんて言うのは圧倒的に経験が少ない証拠だろう。ちょっと慣れて自分でコードを書けるようになればそんなバカな発想はしなくなるよ。
そんな段階で>>610みたいな文法にケチつける前に、なんでその文法が必要なのか、何でそういう形式になってるのか理解する努力をしなよ。
C#のような後発の言語が生まれる過程では、君みたいな初心者が考えるようなことはとっくの昔に議論済みでそれらを踏まえた上で今の形がある。疑問を持つのは多いに結構だけど、往々にして言語の仕様が悪いのではなく、単に自分が無知なだけだから。

614 :
そもそもシリアライズするにしても=なんかつかいたかねえ

615 :
>>612
俺も面倒
請求書送っていいなら訳つけてまとめてくるよ

616 :
最近の言語の傾向見てると
どっかの言語が導入すると移植のために?かどうかはわからんが
良し悪しに関わらず他の言語も実装される感じ

617 :
JavaScriptとPHPに慣れたら多次元連想配列無い言語がオワコンに見えるようになった
しかし
var obj = getExExBigData();
↑超絶巨大データ(フォーマット・ドキュメント不明)
勘弁してくれよってのも事実
c#の未来はどうなるのか?

618 :
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;
}
}

619 :
>>618
具体的に何入力して移動したん?

620 :
>>610
pythonへGo!
https://docs.python.org/ja/3/reference/expressions.html#comparisons

621 :
>>618
CellChangingみたいな選択セル変更前のイベントが無かったっけ?

622 :
>>618
この人だけじゃないけど、まずこういうところに質問投げる前に分岐がきちんと機能しているか確かめた方がいい
それの場合は 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」を見ないといけない

623 :
>>613
この言語って文字列操作に特化してるからテキストを利用するのって
全然普通だと思いますけどね。
後0<input&&input<10じゃないとだめなのは、何となくですが
数式はポーランド記法によって処理されることに関係しますか?
分かりませんけど。

624 :
>>623
a < b < cが出来ない理由は自分で演算子オーバーロードしてみたら簡単に分かるぞ
a < bの時点でbool値を返すからcとは比較できなくなる

625 :
いや構文解析での段階の話(要は3項演算的な)だろうかなそれは関係ないと思う
まあ文字列操作に特化は意味不明だけど

626 :
それ関係ないと思う

627 :
かぶった。関係ないっていったのは演算子オーバーロードのことね。

628 :
>>624
それは出来ない理由にはなってないんじゃないの?
あんまり自信はないが、

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

両者を別の演算として区別することはやってできないことはないはず。

629 :
>>628
既存のルールに新たに3値を並べて比較する構文を追加するとしたら、既存のルールを維持したまま、新たなルールに伴う考えうる様々な組み合わせについて明確で一貫性や完全性のあるルールを作らなければならないが、かなり複雑なものになるだろう。
やってやれないことはないにしても、デメリット(手間と複雑さや混乱)に見合うメリットがないから、ほとんどの人に望まれていないし、言語仕様として追加されることもないだろう。

630 :
こんなの簡単だろ
でもやっても凄いって言われないから
実装されないだろうな

631 :
<・・・小文字だからC#の言語に従う
<・・・大文字なので特別に数学的記法とみなす

これでどうだろう

632 :
if(a < x < b)
実はこれは言語機能をいじらなくても自作型で再現できる

633 :
>>629
python で実現してるのに何を言ってるんだよw

634 :
>>632
#defineか?

635 :
>>628
そりゃ実装すれば何だって可能だが、論理的な矛盾になるから無理なんだよ
演算子の優先順位と結合則で二項演算するのが原則なのに、そこを横紙破りしてしまったら誰も付いて行けない

636 :
>>631
そんな見にくい&醜いのはやめてくれ

637 :
>>635
どうでもいいだろそんなん

638 :
>>634
基本的な演算子定義だけで出来る

639 :
どうしてもやりたいなら$"3<{x}<5".Predicate()みたいなライブラリ作ればいいんじゃね

640 :
>>635
文脈依存キーワードと何も違わないと思うよ

641 :
a < x の値を独自クラスのインスタンスにできるならあとの < b はどうにでもなるだろうけど
そもそも前者って可能なんだっけ?

642 :
>>638の答えがほぼ>>639ってことで良いですか?
また便利な情報を得てしまったわ

643 :
>>641
比較演算子をオーバーロードするだけじゃない?
false相当の値か右辺の値を戻すようにして、併せてimplicitでboolを当てておけばifでも使えるはず

644 :
a b x の型が int だったりしたとき、それオーバーロードできるんだっけ?

645 :
C#のターゲットフレームワークってどういう仕様なんでしょうか?
わかりやすいサイト教えてもらえると助かります。

exe 4.5 dll 3.5 
→ ビルドできるからok?
exe 3.5 dll 4.5 
→ コンパイルエラー
  ただし動的に読み込んだ場合は動いてるっぽい?

646 :
wrapする型を定義して a < x < b できるようにしてみた
https://dotnetfiddle.net/FdQsX1
が、まあ使わない

647 :
んんんんんんh

648 :
visual studio2019 30日たったら使えなくなったんだけど
無料じゃないの?
PC替えるまで以前のバージョンはずっと使えてたんだけど
2019は違うの?
無料版使い方おしえてください

649 :
ログインすれば無料のまま使えるよ

650 :
更新したら使えました
ありがとう

651 :
ボタンを押すと計算開始して結果をテキストボックスに表示する処理(数十秒かかります)
まずボタンを押してその処理がまだ終わってないうちに、またボタンを押すと次の処理がどんどん溜まっていくのですが、
これを防止する方法はないでしょうか
(例えばついボタンをダブルクリックをしてしまった時に1回表示してからまた同じ処理に入ってしまう)
ボタン押したら結果が表示されるまで全部のボタンのenabledをfalseにする処理入れてみたのですがこれではうまく回避できませんでした

652 :
lock使う

653 :
メインスレッドには実際にボタンを無効化する作業をしてもらわないといけないので
計算はasync/await等を使って別スレッドで行う

654 :
>>652-653
正直まだ難しそうですががんばってみます。ありがとうございました。

655 :
>>651
http://aquablue7.blogspot.com/2013/05/blog-post.html

656 :
>>654
何も難しくないよw
>ボタンのenabledをfalseにする処理入れてみたのですがこれではうまく回避できません
これは「重い処理」の後にそれをやってるからそうなる

ボタンのイベントハンドラで真っ先にEnabled = falseにすればそんなことは起こらない。

657 :
>>656
やったことないアホは黙ってた方がいいぞ
あと反論するならググってから反論した方がいい

658 :
>>657
はいはい頭悪そうワロタw

659 :
なぜかコードが貼れないので割愛するけど、実際にやって>>656が正しいことを確認した
当たり前の話だがw

660 :
>>658
ググることもできずに頭悪いとしか書けないとか可哀想なやつだな
>>656みたいな誰でも思いつく方法でなんとかなってたら苦労はせんよ

661 :
>>659
当たり前の話だが負荷かけてテストしてるよな?

662 :
つくづく馬鹿な奴w
偉そうに他人様に命令する前に自分は実際にコード書いて確認したのかとw

まあ普通こんなレベルの話は確認するまでもないけどね

663 :
どうでもいいけど

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

いずれのダミーを使ってもイベントハンドラの頭でEnabled = falseとすることで
ボタン連打によるイベントハンドラへの意図しない「再入」を抑止できることを確認した

664 :
イベントを呼び出すのが毎回同じスレッドなんだから、>>656の方法で完璧に止まると思うけどな

665 :
>>663
>(例えばついボタンをダブルクリックをしてしまった時に1回表示してからまた同じ処理に入ってしまう)
再入が問題じゃないって気づけよ
タイミングによってクリックイベントが2回キューイングされることがあるのが問題なんだよ

666 :
ガイジに何を気付けって?
お前も方面が違うだけで同じガイジだな

667 :
>>651
イベント処理に入る前にイベントハンドラを外しておくといい。button1.Click-=button_Clickみたいな感じで
ただValueChangedとかならともかくボタンで普通はやらないと思う。「enabledをfalse」になっているボタンでイベントが実行されるのはおかしい
計算処理を非同期に渡して計算が終わらないうちにEnabledを復帰させるとか変なことやっていないか?
EnabledでなくVisibleをfalse->trueに変えてみて確認したら?
動作に関しては他の人がいろいろ言っているようだけど一度ミニマムコード作って自分で動作確認するのが一番確実

668 :
private void button1_Click(object sender, EventArgs e) {
button1.Enabled = false;
//重い処理
button1.Enabled = true;
}
上のコードでもユーザーが最初のクリックをしてから
イベントハンドラが呼ばれてEnabled = falseが設定されて
さらにそれからクリックできなくなるまでの間に
複数回のクリックが発生する可能性がある
(Windowメッセージのキューに溜まる)
だからEnabled = trueに戻す前に
溜まったクリックイベントを流してやる必要がある

669 :
難しすぎて分かんねえよ兄貴

670 :
>>664
イベントは非同期でキューイングされるから>>656では不完全
アマチュアレベルとか自分しか使わないならそれで良いけど不特定多数が使うようなソフトだとダメダメ
ID:59NEldNlaはコード書いて確認する姿勢は良いけど確認がザル過ぎる
てか、アプリ作ってたらこの手の経験はしてるはずなんだが…

671 :
イベント流すってどうするんですか?

672 :
>>668
そんな必要ないってば...
君がOSのコード書く立場になってよく考えてよ。
君はメッセージをエンキューする時にウィンドウが無効化されているかどうか
ノールックでやっちゃうような間抜けなコード書くの?w

そんなのありえへん

673 :
ここ初心者スレだろ

674 :
いやだから、無効化されるまでに2回以上キューにたまる可能性があるって話なんだが...

675 :
よくわからんけど痛い人が大声で独演会をやっています

676 :
再現できるコードも示さずにこんな現象があるんだって書き続けるのは他でやれよ
それにかまう連中も荒らしと同じ
>>1を読んで理解してから書き込め

677 :
今日も仕事で新型コロナウイルスなんて騒ぎすぎだという老人の独演会を30分聞かされた
対策も必要ない死ぬ人は死ぬでいいじゃないかと言う話

老害しなないかな

678 :
キューが溜まる派は、button1.Enabled = false;なし、かつ、非同期処理なしにすれば簡単に再現コードができるんだろう
でも現実には再現しないから困ってんだろうな

679 :
キューが溜まる派は、button1.Enabled = false;なし、かつ、非同期処理なしにすれば簡単に再現コードができるんだろう
でも現実には再現しないから困ってんだろうな

680 :
ちなみに念のためこんなのもやってみたが

//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度しか表示されない

681 :
>>677
完全スレ違いだけどそれはその老害の言ってることの方がただしいw

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

こういうの認知バイアスって言うんだけどさ

682 :
一流の専門家wとWHOと各国の対応見る限り
誰かの方が認知バイアスかかってると思う

世の中でこういわれてるけど逆の方に○○と言うのを言って俺スゲーしたいのが老害

683 :
>>680
いや待て、ひょっとして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;
}

684 :
>>676, >>678
だからテストするなら負荷かけろって話な
>>668の話を理解できてたらわかると思うんだが、>>672みたいな絶望的なアホもいるからなぁw

685 :
>>682
WHOは声明で過剰反応するなと言ってる。
多くの伝染疾患の専門家の意見も同じ

各国政府の対応はよく言えば安全牌、悪く言えば役人や政治家の保身だね
テールリスクとしてはヤバいことになる可能性は確かにゼロではない。
その場合に誰も批判されたくないしね。
費用負担するのは納税者であって役人でも政治家でもないし

686 :
でも新型ウイルスで色々と未知だから警戒するに越したことはないと思う

687 :
メッセージボックスはボタンかキーボードが押されるまで待つ。
ダイアログの一種。

688 :
>>671
Postする

689 :
>>671
1. Application.DoEvents()
2. PeekMessage()
3. await Task.Delay()

Task.Delay()使ってthrottle/debounceする高階関数を作っておくと毎回書かずにすむ

690 :
引数でリスト渡すけど要素を変更して欲しくない時って結局どうすりゃいいの?
Immutableは使えない環境の場合

ReadOnlyCollectionは引数の型としては想定してないみたいだけど、キャスト防ごうと思ったらこれしかないよね?

691 :
>>683
今時Application.DoEvents()を手動で呼ぶとか…
それはともかく、Application.DoEvents()を呼ぶタイミング遅くない?

692 :
>>690
Deep Copy

693 :
拡張メソッドにしろクラスをシリアライズするの面倒じゃん

694 :
質問お願いいたします。
カスタム日時書式指定文字列を使って、
例えば DateTime.Now.ToString("M月") と書けば、
今なら "2月" という文字列が受け取れます。
しかし、DateTime.Now.ToString("M") と書いても
"2" という文字列ではなく "2月1日" という文字列が返ってきてしまいます。
これは "M" という文字列が(カスタムでなく)標準の日時書式指定文字列と
解釈されてしまっているからのようなのですが、
DateTime.Now.ToString(...) のような書き方で
"2" という文字列を受け取ることは可能でしょうか。
もちろん DateTime.Now.Month.ToString() と書けば
"2" を得ることはできますが、IFormattable インターフェース経由で
文字列を取得したいという事情があり、
Month プロパティを使う方法は避けたいと考えております。
もし何かおわかりのことがあればご教授いただけると幸いです。
どうぞよろしくお願いいたします。

695 :
あとから月消すのは無し?

696 :
>>694
%M

https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings#UsingSingleSpecifiers

697 :
control.Enabled=true/falseって即時処理されるのか?
WM_ENABLEメッセージをキューにPostするだけなのでは。

698 :
>>696
おお!まさに探していたものです。
'escape' 等をキーワードにして検索を試していたのですが
少し的が外れていたようです。
本当に感謝です。どうもありがとうございます。
>>695
ご提案どうもありがとうございます。
ただ今回は IFormattable.ToString の引数だけを使って
文字列を取得したかったので、
% を使う方法を使わせていただこうと思います。

699 :
>>698
正規の方法がすぐ解って良かったね

700 :
>>697
否定はできんけど、そんなことになってたらおそロシア

701 :
しょーもない質問なんですが
起動時、必要なファイル(iniとか)を探して、無ければ起動しないというプロセスは
Form1_Load()にifでApplication.Exit()書いて強制終了にしてしまえば良いのでしょうか?
Form1_Load()の途中で強制終了はwindows的に無問題でしょうか?

702 :
>>697
そうだよ
>>700
即時処理される方がおそロシヤだよw
ボタンを薄くする処理とかも走るんだが誰がそれをやると思ってるんだよ

703 :
>>701
program.cs オススメ

704 :
>>697
Reference Source見りゃわかるけど普通にControl.Enableのセッターで::EnableWindow呼んでるわよ
てかWM_ENABLEはただの状態変化後の通知だし

705 :
>>703
すんません。よく分かってないのですが、
Main()の中の3行をifでスルーさせれば良いってことですか?
それともRunの手前でExit()ってことですか?

706 :
>>705
正常ならform作ってrun、異常ならformを作らない。
テンプレのApplication3行は、最初の2行がGUIの設定、最後がformの作成&実行。
判定条件がファイルの有無なら、GUIの設定待つ理由無いでしょ

707 :
>>704
> Reference Source見りゃわかるけど普通にControl.Enableのセッターで::EnableWindow呼んでるわよ
そりゃそうだろ、だから何?

> てかWM_ENABLEはただの状態変化後の通知だし
違うぞ、ちゃんと読め
https://docs.microsoft.com/ja-jp/windows/win32/winmsg/wm-enable
そもそも変化後の通知ならWM_ENABLEDになってるよ

708 :
>control.Enabled=true/falseって即時処理されるのか?
何をもって「即時処理される」と言うのかに違いがあるから話が噛み合わない

709 :
>>705
Mainでファイルなかったらreturnしてオシマイでいいよ
Exitは普通は使わない

710 :
Exit! y=ー( ゚д゚)・∵. ターン

711 :
sendmessageでもすりゃすぐわかる話じゃないのこれ

712 :
C#しか書けない奴はこれだから使えない

713 :
まあここは初心者スレなんだし勘弁してくれや
使えない部下との仕事のウサばらしは他でやってくれ
こっちは趣味で自分の使うアプリしか作ったことないから
「もしファイルが無かったら」なんて仮想の対策なんてしたこと無かったしww
それにC#というより「コンピュータのプログラムが動く仕組みは」に近い分野だったね
>>706
>>709
色々実験して、なんとなくできた。
Runが実行されなかったらExitは必要無いんだな。
ありがと。

714 :
>>713
RunしたあともExitは使わない
Closeを使って行儀よく終わらせる

715 :
フォームアプリケーションなどしんでしまえ

716 :
>>707
「EnableWindowが戻る前だがWS_DISABLEDが立った後」だから状態変化後の通知でしょ
MSの動詞の使い方なんぞに一貫性は期待しちゃ駄目よ
もともとが定義の雑な質問なんだから現段階でこっちにイチャモン付けても実りはないと思うで

717 :
EnableWindowもメッセージ飛ばすだけだから何らかの方法でメッセージ処理させないとUI更新されない

718 :
Winformsのコントロール実装だと大体Enabledの中で状態変数を変化させて
ついでにEnableWindowを呼んでネイティブ層での入力を無効化し
ついでにInvalidateを呼んでペイントハンドラをポストして
のちに出キューされたペイントハンドラがコントロールの状態を見ながら描画って流れやね

719 :
>>713
時間のかかる大規模な初期化をするなら、
フォーム作ってスプラッシュを立ち上げて
その中でってのはあるけど、
小規模ならフォーム作る前にしちゃうと簡単
good luck!

720 :
やっぱりDoEvents最強だな

721 :
>>718
ありがとう、エロい人 m(_ _)m

722 :
先輩方、設計に関して質問があります
GameManagerというシングルトンにリソースやシステムの参照を固めて、
各々のクラスから静的経由でアクセスする神スタイルって何かデメリットありますか?
最初はResourceManagerみたいに細分化していたんですが、規模が大きくなるにつれてあれはどのクラスが持ってたっけ?と頭がとっ散らかって来たので、
ならいっそpartialでファイル分けた神クラスを用意した方が分かりやすさはあると思ったんです
俺、何か間違えてますかね?

723 :
神クラスでググればいっぱい出てくるだろ
つか神クラスって単語知ってるならもう何度も見てると思うけど
自分に都合の悪いところは見ないタイプかな?

724 :
参照を直接持つ神クラスは巨大なクラスになって破綻しそう
partialはファイルで分けるだけの問題だし
画像リソースやサウンドクラスの参照を返す、サービスロケータパターンなら有り得る
XNAだとgameクラスがこれに相当
unityのGetComponentでは、コンポーネントパターンとの組み合わせで使われてたりはする
サービスロケータにも宗教的な賛否はあるが実用的ではある

725 :
>>723
いや、単体で完結するクラスはしっかり最小構成で切り分けてるっすよ
ただ互いが互いを参照し合うクモの巣みたいなクラス群は、
参照先を一本にまとめる方が理に適っているのではないかと思って、
デザパタでいうFacadeやMadiatorを突き詰めて行ったら、
全てがGameManagerに集約されて神クラスっぽくなったのでこれはどうなんだと思った次第で

726 :
>>722
どのクラスが持ってるか分からなくなるのはクラス分けが下手だったからだろう。
すべて神クラスに押し込んだら、こんどは逆にあるメンバが元々何のために用意したものか分からなくなったり、別のメンバと取り違えたりして、破綻するだけだと思うぞ。

727 :
互いに参照し合うってのがそもそもあまり良くないけどそれは別の問題としておいておくとする
参照しあうとしても必要な相互参照だけ持ってればいい
相互参照してるから神クラスにするって発想は全く繋がらない
無関係な参照を持ってたらコード読んだ人が混乱するだろ

728 :
>>725
プログラムと同じ寿命で複数個所からアクセスする必要があるインスタンスを
グローバル変数として提供する静的クラスは是か非か、という意味なら
個人的には支持しますね。

729 :
いや、グローバル変数という言い方は変かw
「グローバル変数」と書くべきだった

730 :
>>725
実際にコードを書く人間を無視して、設計ありきで開発を統制しようとすると必ず破綻するものだ
モジュール化は基本的に開発の作業単位と一致しているのが理想
その作業単位こそがメソッドになったりクラスになったり、
開発チームや部門などもっと大きな粒度ならドメインやマイクロサービスになるわけだ
君が一人で開発していて、一緒に全部触ることが多いんだったらそれらは一箇所にあるのが自然

731 :
処理を神クラスに全部入れるのは感心しない
クラスAとBで○○をするクラスをたくさん作ってそれを神クラスが使うならまだわかる

732 :
自分ではある処理にAとBしか使わないつもりだったのにいつの間にかCを参照してて
状態によって動いたり動かなかったりするのを避けられる

733 :
>>731
宙ぶらりんだとxmlに出せねぇから!

734 :
>>730
めちゃくちゃなこと言って初心者を惑わすの良くないp

735 :
staticなクラスにロジックを集中させるのが今風

736 :
https://ideone.com/L4OaZ0

ユーザーが自分でカスタム書式指定文字列を入力して、
出力名を決められるコードを書きました。
switch文のところが冗長な気がしますが、
もっとよい実装方法はありますでしょうか。

737 :
オブジェクト指向が全然わかりません。助けてください。
オブジェクト指向では、クラスしか使わないのでしょうか。
そもそも関数とクラスの使い分けがわかりません。
関数、クラスどちらでも良いように思えてしまいます。
クラス内で別のクラスや関数を使うことはあるのでしょうか。
その場合、呼ぶクラスの配置は、外にすればよいのか混乱しています。

738 :
https://github.com/dotnet/runtime/blob/master/src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeFormat.cs#L447
DoeNetCoreの実装も似たようなものだから好きにすればいいんじゃないの?

739 :
>>737
オブジェクト指向が理解できなくてもC#は書けるからそれだけならスレ違い
>クラス内で別のクラスや関数を使うことはあるのでしょうか
コントロールもクラスだしむしろクラス内で別のクラス使わずに書くことの方が少ない
関数はC#には無い定義だからどんな意味で書いているかわからない
初心者ならそんなこと気にせずにコード書いておけばそのうち身につく

740 :
>>737
c#の関数は全てクラスの中でしか宣言できません
終わり

741 :
>>738-740
関数は、クラスの中でしか宣言出来ないのですね。
ご指摘の通り、初心者なので気にしないようにします。
ありがとうございました。

742 :
>>736
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;
}

743 :
>>736
別の意見の人もいるかもしれんけど、
とりあえず置換箇所を抜き出す部分と置換する部分は
分けた方が後でメンテしやすいコードになると思うよ

744 :
>>738
case '%': の時は次の文字読んで再帰呼び出しか
参考になるわ

>>736だと’%’を文字列に入れられないのかな?

745 :
>>736
書いてみた
俺も暇だな
ただし大人の事情でProductはイミュータブルなクラスに変えさせてもらったw
https://ideone.com/Ck6bNl

746 :
こういうのは結局if羅列が正解なんだよな
switchだと値の単純比較しかできないからifで柔軟に分岐させるほうがいい
あらかじめ書式を増やせるような工夫は大抵の場合YAGNIでコードを複雑に遅くするだけで終わる

747 :
>>746
なんか2行目と3行目が矛盾してると思うんだけどw

748 :
>>738
.NetCoreでもswitchべた書きなんですね
参考になります
>>744
ご指摘の通り%が出力できない仕様でした
>>742さんのがよりスマートで%も出力できますね
>>743
>>745さんのコードのような感じでしょうか
高度すぎて自分には発想にも至らなかったです。すごく勉強になります
みなさんありがとうございます

749 :
あ、>>743 = >>745さんでしたね

750 :
それはともかく、くどいようだけど、
どんな方法で実装するにしろ置換箇所の検出と置換は
分けた方がいいと思うよ
>>742とか>>736みたいな両者が混然一体となったカオスなコードはあかんw

751 :
>>750
趣味プログラマーということもあり、
あまり人から教えてもらえる機会がないのでとてもありがたいです

ただの直感ですが、リファクタリング大好きなあのMDさんだったりして、
と感じましたw

752 :
>>747
全く矛盾してないけど?

753 :
>>746
パターンマッチングやwhenって知ってるかい?

754 :
>>747
確かに矛盾してるw

755 :
>>753
知ってるけどif分のほうが遥かに柔軟よ

>>754
してないよ
ここで言ってる柔軟姓って拡張性って意味じゃないからね

756 :
>>745
うーん、参考にはなるがpremature abstractionに感じる

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

クラスを分けるならまずProductFormatterに委譲する形にしておいて
他のFormatterを書く時にもう一段階抽象化するかどうかを考えたほうがいい気がする

757 :
>>755
具体的には?

758 :
>>757
while Nが文字列長より小さい
if N文字目以後に%を含まない then 終了
if N文字目が% then ネストしてプレースホルダ解析してNを更新
else 次の%直前までまとめて読み取ってNを更新
例えばこういうの

759 :
C#のソースは改行コードはCR + LFで書くんですか?

760 :
Environment.NewLine

761 :
ビルドはLF・CRLFどっちでも出来るので
後は好みとeditorconfigの設定次第<ソースの改行
自分の場合最近はLFで統一するようにしてる

762 :
Genericのtype constraintでTを+=演算子が使える型だって宣言することできる?

763 :
演算子そのものが無理

764 :
>>762
中二病は早く卒業しよう
その計算、本当に他の型で使う?
自分に聞いてみれば答えは明らかだろう

765 :
>>763
了解、ありがとう
>>764
処理別 × 型別の比較をするマイクロベンチのコードで+=演算子を使ってて
処理か型を追加するたびに処理数 × 型数のコードを追加するのが
面倒くさいからGenericにしたかったんだよ
C#の場合オーバーヘッドがあるから正確な測定には適さないけど
Genericでも傾向は分かるから

766 :
理由になってないじゃん
結局現実的なユースケースは無いってことだな

767 :
ちょっと教えて下さい。

CADで書いた2次元の平面図を読み取りエクセル等のシートにに貼り付ける事は可能ですか?
可能であれは加えて、アルファベットと数字を取得も出来ますか?

768 :
もしくは、PDFをコピペして、アルファベットと数字を読み取れますか?

769 :
書き込むスレ間違えてない?

770 :
>>767
スレ的にはlibreDWGとかかのう
CADがwmfとかBMP吐いているなら
スレ違い
DXF読むのは結構大変

771 :
質問よろしくお願いします
親フォームに作ったlistBoxのItemsプロパティを子フォームから取得したいので
公開用のpublicのプロパティを作って、(Form1)this.Ownerで取得する方法でやろうとしてるのですが
Itemsプロパティの型が分からずできません。objectではできませんでした。
同じことをtextBox.Textでやるとstring型で簡単にできました。

772 :
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.listbox.items?view=netframework-4.8#System_Windows_Forms_ListBox_Items
調べればいいじゃん?

773 :
>>772
そこは見たのですが
どこに型が書かれてるのかわかりません

774 :
型うんぬん以前の話だと思うの
親フォームのうえでなら、Items扱えてるの?

775 :
>>774
はい。親フォーム上なら取得できます。

776 :
>>773
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.textbox.text?view=netframework-4.8
TextBox.Textがstring型だって分かってるなら、そっちの記述と比較すればいいじゃん?

777 :
>>771
一般的にはそもそもForm上のコントロールを外から参照するのは不適切。

それ、「PCのモニターに写っている同じ映像を別のモニターにも表示したいので
PCのモニターからHDMI出力を出せないか?」って言ってるのと同じでは?
発想が間違ってるよ。
なぜ映像のソース側にその機能を求めないでただの表示機に求める?

778 :
>>776
なるほど!
あの長い文字列からusing除いた部分が型だったのか
できました!
>>777
やり方間違ってます?
Itemsに直接行かないで、
Itemsを配列に落としてからそっちを取る情が良いのかな?
なんか二度手間

779 :
>>777
デイジーチェーンという既にあるものを例に出して発想が間違ってるとか無能感が凄えな
使う側が加工する発想が無いとか普段どんな神クラスを生み出してるのか興味ある

780 :
>>779
世の中こういう人が多いから糞コードで溢れてるんだなw

781 :
「機能はソース元が持つべき(キリッ」
数十年前のオブジェクト指向かな
この時代にまったく追い付いていない感よ

782 :
>>778
何でそうなるの
ListBoxのItems自体何かを参照して作ってるんでしょ?
その同じソースを子フォームも参照するのが筋ですよ。

783 :
香ばしい人が来たねw
本気で自分が正しいと思ってそうで怖いけどw

784 :
質問者の人みたいな、役割分担を意識しない有機的な(笑)コードでも
学生さんの宿題程度の小さなプログラムなら問題は顕在化しないよもちろん。
ちょっと規模がでかくなるとすぐ死ぬけどねw
こういう発想でやってると
>>781の人は一人で大きなプログラムを設計して書いたことないんだろうね

785 :
>>782
うーん。listBoxをただのソース表示用にするならそうなんでしょうけど。
それだとItems.Addとか必要無くなりますね・・・

786 :
な、アウアウウーだろ?

787 :
>>782-784
この怒涛の三連投である
ごめんね、初心者スレで難しい話しちゃって
素人は今まで通りデータと機能をセットにしたオブジェクト指向で良いと思うよ

788 :
ガイジはこんなところに来なくていいんだよ
ママと喋っててくれな

789 :
あー子フォームにはプロパティ経由でItemsのインスタンスだけ見せたかったてことか

790 :
>>779
デイジーチェーンは普通バスがあって見る側でフィルターしてるだけでしょ
本来はI/O(型変換)が要らないところにI/O入れちゃうのはどう考えても悪手でしょ。今回の話でいえば子要素から参照したくなったときに、
リストボックスに直でaddしてるのをやめて、元リストを作ってリストボックスのdatasourceにするか手動同期するかして、トータルのI/Oが少なくなるようにリファクタリングするよね。

791 :
バイクのエンジンの掛け方を訊ねているのに
「バイクは転ぶから車にしろ」とか言ってくる不思議な人が世の中にはいる

792 :
MVVMの基盤がしっかりしてるならそれでいいけど
Formsのバインドはクソだからなあ

793 :
バイクは転ぶし
転んだ時のダメージも大きいし
車とぶつかっても死ぬのはバイク
百害あって一利なし

794 :
いやーここは良いスレですよ
色々情報や知識が得られて
私のいるニッチな業界のスレじゃ
下手にかかわると顔バレしそうなんで
なるべく情報出さないようにスルーが基本ですからww

795 :
UIプログラミングの原則として、コントロールを複数のクラスからアクセスるってのは
動作の競合起こしたときにどうにもならんから普通は避けるものですね
この場合、サブフォームからメインフォームのメソッドを呼び出して処理自体をメインフォームのクラスでやらせるのが普通かな?
呼び出すにはサブフォームにFunc<T>の変数を用意して、メインでサブフォームを起動するときにコールバックをセットする

796 :
クラスとスレッドの概念は別物だからそれはおかしい

797 :
>>791
そういう比喩ならこっちの方が適切だね
バイクのエンジンのシリンダーにソレノイドを仕込んで「始動機能内蔵エンジン」
を発明(笑)した気になってるバカがいるので、そんな後でメンテに困るような
設計はやめて普通に外側にセルモーター付けろやと言ってるわけね。

798 :
>>783
ブーメランすぎるw

799 :
〜正午〜
>>777「コントロールを外から参照するのは不適切。何故ソース側にその機能を求めない?」
〜午後〜
>>797「内蔵なんて後でメンテに困るから普通に外側に機能を付けろ」
僅か半日の出来事である
一体何が彼を変えてしまったのか・・・

800 :
すべて筋肉で説明がつく

801 :
>>799
くだらなすぎワロタw
それを言うなら>>791はどうなるのかねw
これが比喩として成立していると思う人は一人もいないと思うよw
しかし、幼稚だね

802 :
バイクの乗り方の話してるのに、唐突にバイクの機構の話で割り込んできた空気読めない人

803 :
まだ懲りずに言ってるしw
>>802や>>799みたいなのにとっては「始動機能内蔵エンジン」実現のために
シリンダーにソレノドを仕込む機構の実現方法を聞いてる人には対しては
質問に対して真正面にベタに解答するのが正しいことなんだろうw
間違ってると思うよ。
そんな馬鹿なことなぜやるんだ、とアドバイスするのが正しいでしょ

804 :
スレタイ読めないの?

805 :
>>778
usingってどこのことだろ。普通に一番上の方に
> public System.Windows.Forms.ListBox.ObjectCollection Items { get; }
とか
> プロパティ値 ListBox.ObjectCollection
って書いてあるのに。

806 :
>>805
エスパー読みすると
System.Windows.Forms.ListBox の参照が足りなくてキャスト部分でエラーが出てたんじゃない?

807 :
やりたいことができるようになってから、それが最適かどうか考えればいいことで
相手のレベル考えないでアドバイスしたって意味ないんだが
それなら聞かれたことだけに素直に答えてるほうがよっぽど役に立つ

808 :
ビューからデータを取り出してあれこれするのはそれ以外方法がない場合は基本的に避けなきゃいけないレベルのことだと思うけどなあ
jQueryでアプリ作るのが衰退してReactとかになったのも同じ理由だし。
(あくまでアプリの話でjQuery自体は今でもWebの表現に役立つライブラリで衰退してないと思う)

809 :
フレームワークの出来次第なんだよ
WPFやWEB系の流行りの流儀をFormsに持ち込む必要はない
Formsではイベント〜Formへの問い合わせ〜サービス〜Formの更新が基本的な流れなんだからその流儀に従えばいい
逆にモデルバインディングで作りたいならFormsを捨てる

810 :
MS公式セミナーにて
「技術より人脈ですよ」
ぺっ

811 :
モデルを分離して管理するコストに見合わないような
小規模で保守性をあまり考慮する必要がないアプリなら
Form間で密結合させるのも選択肢の一つ
仕事で作るようなそこそこの規模のアプリで
保守性が重要なケースではまずやらない

812 :
ワンライナーのノリで書いて捨てるなら適当にやればいい

813 :
>>793
歩行者も同じだろw

814 :
Formsではモデルを分離しても間違いなくモデルバインディングを実装するコストは意外と高い
モデルを分離しただけのつもりが状態の二重管理になっていたなんてこともしばしば起こりうる
なのでFormsでは入力が必要ならその都度ヴューに問合せたほうがいい
そうすれば状態が重複しないので管理が楽になる
モデルバインディングを使いたいならWPFにフレームワークを変更すること

815 :
>>810
お○んぽ騎士団の話はやめて差し上げろ

816 :
DataTableのカスタムソートの方法を教えてください。
あるカラムを独自のルールでソートせたいのです。Selectで単純なソートはできるのは分かったのですが、delegate 的なので、ルールを設定できないでしょうか。

817 :
Linq To DataSetでいけんじゃね

818 :
1秒ごとに、FormのTextBoxに1を加算していく・・Func1
2秒ごとに、FormのTextBoxに2を加算していく・・Func2
つまり
112112112.........このようにTextBox.Textの文字が増えていくプログラムを
非同期で作りたいと思います。
グローバル変数を一切使わずに実装することは可能でしょうか?
1週間考えてるんですが、Timerを使う方法しか思いつきません。
Timer Func1Timer
Timer Func2TImer
というグローバル変数を使ってしまうので、これはNGです。
いい方法はありますか?

819 :
Rx便利よ
Observable.Timer

820 :
>>819
検討します
ちなみにTask使えばグローバル変数は一切必要ないですか?

821 :
何がしたいん?
書き手にしかわからない前提条件が色々見えて
「ああ、こいつバカなんだな」
って思った

822 :
実務経験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

823 :
>>821
非同期プログラミングでフォーム上の値を変えたいってだけです。
TextBoxの値を変えるっていう超単純なプログラムでまずは試すってことです。

824 :
そもそもC#にグローバル変数は存在しないでしょ

825 :
>>818
グローバル変数を使ってしまうの意味がわからないよ

加算というか文字列を追加する処理をトリガーするメソッドで
タイマー2つ作ってイベントハンドラを設定してやればいいでしょ
複数スレッドから同じ変数を更新するなら同期かConcurrentは必要

826 :
>>825
すいません、クラス変数です。
public class Sample
{
public Timer Func1Timer;← こういう宣言するのが嫌
public Timer Func2Timer;← 嫌

 public Method()
{

}
}

827 :
FormのLoadイベントでTickにdelegateかラムダで書けばいいんやないん

828 :
>>826
じゃ、TextBoxはどういう位置付けなの?
お前のルールに抵触してんじゃん

829 :
>>827
そこらへんちょっと理解できてなくて…
サンプルコード頂けますか?

830 :
>>826
public void FooMethod(){
var aTimer = new Timer(1000);
var bTimer = new Timer(2000);

}

メソッド内に閉じ込めればセーフってルールなんやろ?

831 :
理解できない以前にまず何も勉強してないだろ
頭が悪い上に不勉強で変な拘り持ってるとか救える要素ゼロだぞ

832 :
このスレの人達はFizzBuzzを見せても解こうとせずに問題がおかしいと文句付けるだけなのかなってこの流れ見てちょっと思った

833 :
>>829
825のソースのタイマー宣言の直後に
aTimer.Tick += async (s,e) =>
await Task.StartNew(() => Textbox.Text += 1);
bTimer.Tick += async (s,e) =>
await Task.StartNew(() => Textbox.Text += 2);

834 :
あ、DispatcherTimerじゃないならテキスト操作はInvke つかやないけんかも

835 :
>>822
グロ

836 :
>>823
大体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;
}
}

837 :
>>818
TextBoxのTextを操作するだけのコードが非同期っていうのがまず意味が分からないよ。
非同期っていうのは普通はUIスレッドならUIスレッドの処理をブロックせず、
同時並行で別の何かの処理をするって意味じゃないの?
何でか知らんけどとにかくフィールドを作らずにTextBoxのTextを一定間隔で操作したいなら
(1) TextBox自身を継承してそういう機能を追加する
(2) リストに登録されたActionを指定間隔で実行するstaticクラスを作る
こんなとこじゃないのかな

838 :
whileでtaskを回したら駄目なの?

839 :
>>838
それって835のこと?
いいんじゃない?
1秒→表示→1秒→って感じでTimerと少し動作が違うから大丈夫かは分からないけど

840 :
なぜフィールドを作らずに実現したいのか?
質問者はフィールドとCにおけるグローバル変数の区別がついていないだけな気がする
学習用にタイマー使ってみる、はわかるけどフィールド使わずに、って意味わかんない

841 :
学習用の課題に意味求めて進行止めるってまんま発達障害だな
小学校でいうと「たかしくんって誰?」とかそんな思考で問題自体に疑問持って解答諦める変なやつ

842 :
>>832
FizzBuzzは人口に膾炙した課題だろ
初心者の謎のこだわりでひり出されたクソと一緒だと思うのか?

843 :
>>841
妙なこだわりも発達障害にみられる兆候だけどな
お前の方がやばそうだな

844 :
貼っておきますので参考にしてくださいね
https://snabi.jp/article/77

845 :
なんでこのキチガイって毎回三連投するんだろうな

846 :
>>836
ありがとうございます。
Delay???
短いけど意味が分からないですw
分からないので調べます。

847 :
>>836
クラス変数が必要無いのはかなり良いですね!
Textの変化とは関係なく、ボタンやリストを操作できる非同期ってことでいいですか?

848 :
>>826
クラス変数とインスタンス変数を混同していないか? もしくはそれらを知らない?

849 :
クラス変数とインスタンス変数という用語はC#ではあまり使わない
C#はフィールドが静的かそうでないかという文化だからそう捉えておいた方が意思疎通しやすいぞ

850 :
故にグローバル変数とかクラス変数とか言ってる時点で
こいつC#の基本的なところを全く勉強してないなと判断できる

851 :
今まさに学んでる最中の人を勉強不足と罵るすげえ奴がいるな
幼稚園児相手に「え、キミ掛け算もできないの(笑)」とかイキるタイプか

852 :
System.Drawing の Point は int か PointF の float なのに
System.Windows の Point は double で
結局3種類ある訳で
なんでこんな面倒くさいことになってんの?

853 :
いや学んでないでしょ
本で勉強すれば最序盤で解説されることだし
ググって拾っても確実にその知識には最序盤で出会う

854 :
Media.Color「そんなこと言ってもなぁ?」
Drawing.Color「ああ、今更だよなぁ」

855 :
>>847
まず同期処理で書くことできる?
async、awaitは非同期をあまり意識させることなく実装できるのが強み
なんで、まずは普通に書けないと話にならない
自分は非同期じゃなかったらこうするってコードをあげてみたらどう?

856 :
async await って Unity でも使えたっけ

857 :
>>852
System.Drawingはuwpで使えるかな?

858 :
UWP 使う積もりは無いので大丈夫

859 :
asyncawait使っちゃうと普通のメソッドとして呼びたいときハングアップするよ
ババ付きにしちゃうよりはDoEvents呼んだ方がいいからね

860 :
>>859
??
しないよ

861 :
WPFはそこそこ普及したがUWPは完全に死産だったな

862 :
意味不明な縛りプレイとか雑談とか回線コロコロしている人他へ行ってくれないかな

863 :
プログラムとして良い悪いは別にして
グローバル変数使わずにローカルだけでやるというのは
明確にオブジェクト指向を意識する練習でもあるから
頭の体操にはいいじゃん

864 :
>>859
何言ってんの?

865 :
>>860
するよ
少なくともするときがあることは知ってるだろ?
そしてそれは同期処理にしておけば起きないことも知ってるだろ?
じゃあ、するんだよ

866 :
>>865
しないよ

867 :
await を使ったメソッドの完了を待つTask で
Task.Wait()
するとGUI アプリではデッドロックする
でも、そこさえ注意すればいいだけ

868 :
めんどくせえから全部ConfigureAwait(false)書いときゃいいんだよ!

869 :
>>863
オブジェクト指向関係あるかな?w
というかね、フィールドという明示的な実体を持たないくせに
インスタンスと同じ寿命を持つ「何か」が存在する、というのを
気持ち悪いと思わない人はプログラマの適正が疑わしいと個人的には思うよw

870 :
書いてみたけどくだらんなやっぱり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();
    }
  };
}

871 :
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を入れていないと動くのに入れるとエラーが出る理由はなんですか?

872 :
さっき書いた通り

873 :
>>872
相談スレの方ですか?
AngleSharpを入れない場合はちゃんと動く理由がわかりません。

874 :
エラー内容見ろ
エラー:Method 'System.Net.ServicePointManager.CloseConnectionGroups' not found.
System.Net.ServicePointManager.CloseConnectionGroupsというメソッドが見つからないと言うことだ
何故見つからないかと言えば前に書いた内容で調べるべき

875 :
入門者なのかもしれないけどいきなり面倒な方法を使って勉強しても大変だよ
標準的な内容である程度勉強した後に発展でMONOを使うならいいと思うと書いてもまあ理解されないだろうな
標準的な入門を選ぶか
いばらの道の入門を選ぶかは個人の自由だもの

876 :
>>874
AngleSharpを入れなければそのようなエラーは出ません
その理由がわからないという質問です。

877 :
知らないが憶測
AngleSharpで要求されるバージョンのライブラリを入れると
そのメソッドがないライブラリが入りそちらが優先されてしまうため

878 :
しかしWindowsではエラーになりません

879 :
anglesharpが要求してるもんが環境によって違ってるんじゃない?

880 :
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 <---

881 :
>>876
https://github.com/dotnet/runtime/issues/21777#issuecomment-302327100

882 :
>>878
>>877

883 :
.net framework ≠ monoのframework
それぞれ違う実装で別物
それを.net standardで標準化しようとしてる
でも実際にちゃんと実装されてるか不明
仕組みがすべてうまくいってるのか不明
対応したライブラリを作っている人の検証も十分かどうかわからない
動かない場合他人に聞くより自分で調べるしかない

884 :
>>881
ありがとうございます!
しかしそのまま削除してしまうと下記のようなエラーが出てしまいますね…
コンパイルからするとしたら勝手にコピーされるのを禁止する的なオプションが必要そうで難しそうですね…
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

885 :
コンインハイブで有罪判決 ♪─O(≧∇≦)O──♪

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

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

ボタンを押した時の処理をボタンクラス等に書いておけば、インテリセンスで入力補完できて便利なのでみんなでそうすべき。

886 :
Hoge[] hage = new Hoge[123];
List<Hoge> hige = new List<Hoge>();
foreach(Hoge h in hage) hige.Add(h);
hage.Length と hige.Count とでプロパティ名が違うのが気になります

887 :
>>886
同意

888 :
そりゃ列には長さはあるけど、リストに載ってるものは個数じゃないか?

889 :
あまり気にしすぎるとhageるぞ

890 :
>>889
うるさいこのハゲ!

891 :
リストはコレクションを継承してるからな
コレクションに長さはおかしい

892 :
配列だと.Countが呼び出せないのにIList<T>にキャストすると呼び出せるようになるのって、そういえば何故なんだろう?

893 :
物によって lengthの時もあるのが…ってこと?

894 :
気になったから調べたぞ
Arrayクラスの実装に↓のようなものがあるというのが答えかな
(IListはICollectionを継承してる)

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

こう書くとCountはprivateになるから見えないが
インターフェイスは全部publicだからインターフェイスに直接アクセスすると当然見える
なんか微妙な挙動な気もするが

895 :
そもそも愚問だと思うよ
逆に実装してるはずのインターフェイスのメンバーにアクセスできなかったらおかしいでしょw
意味がわからないよ

インターフェイス周辺の文法はVBの方がイケてるね。
VBの文法ならこういう変な勘違いは起こらない

896 :
何の問題もないからVBとかいらない
想像するしかないけど配列の長さとしてはLengthの方がふさわしいから隠したんだろ
ICollectionとして扱えば一貫してCountが使えるんだから何の問題もない

897 :
VBが必要ないのは真理

898 :
明示的実装にしたのは単に混乱防止のためでしょ。
(ジェネリッククレクションは.NET 1.0の時代には存在しない)

Lengthという名前が採用されている理由はシンプルにCountにすると、
例えばnullを要素としてカウントしないアプリケーションだと違和感があるからじゃないの?
かといってCapacityとも違う。だからLengthなんでしょう。たぶん。

899 :
ぶんた。

900 :
もっとシンプルに、たとえ多次元配列であっても配列はメモリー上の連続した領域であることを
意識させたかったのかもしれない。考えすぎかw

901 :
プロパティ名なんて仕様決めた奴の単なる好みだろ

902 :
じゃあKosuuで。

903 :
cnt「フフフッ」
siz「ワレラガ」
len「ミツカルカナ?」
typ,mng,ary,kbn←四天王

904 :
平日の昼間にスレ違いの雑談で埋めるようなところにワッチョイはもういらないよな
次スレは
ふらっと C#,C♯,C#(初心者用) Part141
https://mevius.2ch.sc/test/read.cgi/tech/1544838367/
使ってここの継続は立てるなよ。前スレからだがテンプレも読めず雑談やスレ違いで埋める数人のためのスレとかいらん

905 :
>>904
もともとワッチョイなんて有害無益なのは(普通の思考回路してたら)分かるけど
そうじゃないのに限って「声がでかい」のでそんなこと言っても無駄だと思うよw

906 :
ワッチョイの意味がよくわかってないのか、有害の意味がわからん
コードが付くだけやん

907 :
>>905
普通の思考回路してたら分かるとかレッテル張って
反対意見潰そうとするのはフェアじゃないな

908 :
せっかくレッテルまで貼ったのに誰にも共感してもらえてなくて草

909 :
自演ができなくなると何かまずいのか?

たまに単発IDの頭のイカレタ質問と回答が書き込まれる一連のやり取りがそうなのか?
明らかに初心者の域出てるししかも誰も興味ないし
他の初心者の邪魔だからやめた方がいいぞアレ
人の気持ちを考えられない人間になると設計も自然とヘタクソになっていくから
プログラミングの腕も引きづられて落ちていくぞ

910 :
ようわからんが、単芝生やしてる15/15はこのスレの大古参なので、生意気な口を聞くなよ

911 :
15/15ってなんや
(アウアウウー Sa9b-WggA)のことね
大先輩だよ
もう13年くらいいるよね

912 :
>>906
例えば>>910-911みたいな変なの。
ちょっと前新型コロナの話題が出てたけどあれと同じだよ。
日本人は目的合理性ではなく気が済むかどうかで意思決定しがち。
日本人はこういうところ韓国人と完全に同じだね。
ワッチョイに推進論者が意図するようなプラスの効果なんか期待できないことは自明だ。
そのくせに意図せざる負の効果だけはしっかり存在する。
これ言うと荒れるかもしれないが、ワッチョイ推進論者は匿名掲示板で
「他人が何者か特定した気にならないと気が済まない」ストーカー気質の変な少数者だが、
本人たちにその自覚はない。

913 :
ワッチョイみて、なんだまたアイツか。って安心するんだろ

914 :
>>912
負の効果なんてないだろ
自演できなくて悔しいですって正直に言えば賛成してやらんでもないぞ

915 :
>>906
自作自演しにくいでしょうが!

916 :
レス番飛んで変な流れになってると思ったら謎理論を展開してる人が
意図せざる負の効果とかかっこいいこと言ってるけど
ワッチョイでNGされちゃうことで構ってくれる人が減るのが嫌なだけでしょ

917 :
自作自演できた方がメリット大な理由
デメリットにならないか等kwsk

918 :
jsonの配列の行数が欲しくて以下のようなコードを書いたのですが
var jsonlist = DynamicJson.Parse(@"{""a"":1, ""b"":2}");
int cnt = 0;
foreach(var json in jsonlist)
{
cnt++;
}
jsonlist.Count()的な端的な書き方はあるでしょうか?

919 :
ここの荒れっぷりを観るとワッチョイ有って便利だとつくづく思う
https://egg.2ch.sc/test/read.cgi/software/1550845068/

920 :
>>918
ちらっと見た限りDynamicJsonってDynamicObject派生の独自の実装みたいだから
クラス作った人に聞くしかないのでは?

http://neue.cc/2010/04/30_256.html

921 :
Dynamicに物故んだだけみたいだからcount取れるんだろうか?

922 :
>>920
ソース見れるよ
https://github.com/neuecc/DynamicJson/

923 :
DynamicJsonはIEnumerableで返してるから無理っぽいね

JsonDocumentでParseしてGetArrayLength()
https://docs.microsoft.com/en-us/dotnet/api/system.text.json.jsondocument?view=netcore-3.1
https://www.nuget.org/packages/System.Text.Json/

924 :
無理ですか
メソッドチェーンで1行で書けたら綺麗だなと思っていましたが地道にカウントします
ありがとうございます

925 :
いやいやいや
一行で書きたいなら自分で何でも書けばいいだけだろうw

926 :
そういう要望ならToList()すればいいのでは?

927 :
DynamicJSONは実用品というよりPOCで、今時誰も使ってないよ
デファクトスタンダードはJSON.NETで、LINQもdynamicも使える

928 :
と言うのが古い認識です

929 :
俺もjson.netだな

930 :
json.netはデファクトスタンダード感あるな
他だとsystem.jsonとかutf8jsonとかが代替じゃないのかな

931 :
たまにminijson使っちゃう

932 :
>>924
リンク先のサンプルで配列に変換してたからそれでやんのがいいかもね
試してないから出来るのか知らん
((dynamic[])jsonlist).Length

933 :
Json.NETって何だ、自分はNewtonsoft.JSONしか使ったことないけど大丈夫かと思ったら前者がライブラリ名、後者が名前空間名で同じものか、焦ったわ

934 :
jsonライブラリで一番メジャーなのってNewtonsoft.Jsonじゃないの?
Json.Netがこれのことか?
パフォーマンス的には>>922の人が作ったutf8Jsonが世界最強らしいが

935 :
utf8jsonは早いのかもしれないけど、publicメンバじゃないとダメとか
依存ライブラリが多いとかちょっと使い勝手がな。。

あと全体に言えるけど、
DateTime型をそのままJSONに変換したときに、JSONマッパ毎に結果が異なるのはどうにかならないかな

936 :
元々のjavascriptに準拠してないんだよな
jsで読み込めないのにJSONと言い張るなよとw

937 :
>>934
Newtonでおけ

938 :
>>934
Newtonsoft.Json==Json.Net

939 :
listの一部要素を切り出したい時ってインデックスの指定以外で早い方法ある?
要素100で0~8,3~21,10~30,50~61,~~みたいに切り出すとして切り出す長さは事前に与えられるケース

getRangeはコピーつくるみたいなので除外して、skipとtakeはどうなんだろと調べてみたらどうにも結果が安定しない
skipは先頭からn個目まで一気にスキップするわけではなくて、順番に数えてn個までの要素を跳ばしてるのかな

940 :
JSONは既にJavaScriptの仕様から乖離してるからな。
53bitを超える整数リテラルはJSONでは合法だがJSでは読めるとは限らない。

941 :
>>939
ないのでは?
あくまでIEnumerable前提の実装だから非効率なのは仕方ないよね。
分かってるだろうけどそれが気に入らないなら自分で書けばいいだけなわけで

942 :
structで作ってメモリコピーという荒業が…

943 :
IEnumerableって順序ないのにSkipの説明には「シーケンス内の指定された数の要素をバイパスし、残りの要素を返します」って書いてるけどシーケンスって順序決まった列じゃないの?

944 :
それは単なる使う側の問題では?
その都度乱数を返すIEnumerableとかあったとしてもシーケンスとして扱うことは可能
再現性がないだけで

945 :
>>939
MoreLinqのSlice<T>はListならインデックスアクセスするよう最適化されてる
https://github.com/morelinq/MoreLINQ/blob/master/MoreLinq/Slice.cs
真似して自分でSliceList定義すれば?

946 :
スライスリストってかっこいいな

947 :
>>945
こんなのあるんだなあ。ありがとう
むしろこっちの書き方に混乱した
> sequence is IList<T> list
C#7からできるようになったみたいだけど、これのメリットって変数のスコープを限定できるって理解でいい?

948 :
>>944
IEnumerableを継承してるコレクションもシーケンスだったのか
コレクションというくらいだからおもちゃ箱のおもちゃみたいなグチャグチャな塊のイメージだった

949 :
>>939
arrayに変換できるならspanでアクセスするのが早いんじゃないかな?
spanができて飛び飛びのインデックスへのアクセスが多いケースでは問題なければarrayでことが増えた

950 :
>>947
型チェックとnullチェックとキャストが同時にできる
キャスト結果がコンパイラによって保証されている

951 :
範囲アクセスの新しい構文できたよね
list[0..5]、list[5..10]、list[a..a+5]で5個ずつ抜き出し
使ったことないけど

952 :
>>947
パターンマッチで一発でできるのがメリットでそれ以外は副産物じゃないかな
if (sequence is IList<T> list) {
return list[5..];
}

IList<T> list;
if (sequence is IList<T>) {
list = (IList<T>)sequence;
return list[5..];
}
と同じイメージで変数スコープはちょっと特殊

953 :
>>947
asと同じく、型チェックが1回で済むからisキャストに比べてちょっとだけ速い

954 :
enumの比較をvbで書いたら違う型なのに真になった
なんじゃこりゃ

c#は問題ない

955 :
>>954
VBには暗黙の型変換があるから

956 :
おお、ありがとう
暗黙変換禁止すればいいのかな

957 :
なぜvbスレじゃないのか

958 :
Option Strictは関係ないみたいね。
たぶんenumの型(intかshortかbyteか)で比較するんだろう。
別にそれでもいい気がする。
個人的にはC#の参照型の==演算子は既定で参照を比較する方が気持ち悪いと思うw
実装されてなければコンパイルエラーでよかったのに

959 :
WinFormsのTreeViewで、CheckBoxの代わりにRadioButtonを使いたいのですが、
それらしい設定を見つけきれません。

どう設定すればよいのでしょうか?

960 :
ownerdraw

961 :
element host使ってwpfのlist view使うのが一番楽だと思う

962 :
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; }
}

963 :
DBによってはEVENTを通知する仕組みがある
仕組み以外でもtriggerとかも使える
まあ対象テーブルへの変更がEF経由のみなら、それを一律で監視するのもアリ
MyContext内部とかそのラッパーとかでeventを発火させれば済む

964 :
DBMS_PIPEかな?
db2とかOracleなら

965 :
MyEntitiesにイベント実装するだけじゃないのか
独自イベントでもいいし、INotifyPropertyChangedでもいいかもしれん

966 :
>>962
情報が足りなかったすみません

対象のDBはSQL Server2000です
これにデータを追加しているアプリと
データが追加されているかを監視したいアプリは別なのですが可能でしょうか?

967 :
後、変えられるのは監視したいアプリ側だけで
DBと 追加しているアプリは変えられないです。

968 :
軽量でない処理を行ってその処理の内容次第で適切な区分値を返すメソッドがあるとすると
メソッド名はどんな感じにするべきですか?

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

みなさんはどうしてますか?

969 :
処理の内容を英文で頭につければいいいよ
計算してるのか通信してどこかから取得してるのかで違うでしょ?

970 :
処理が重いとか軽いとかでメソッド名は変えないな
非同期にするとか仕組みでカバーすることはあるかもしれないけど

971 :
英語の解釈
getは、基本的に置いてある物などを入手する場合に使われます。
努力をしないで物を得る時に使われる事が多いです。口語として一般的に使われています。

972 :
Getはすでに計算してある結果などを取る感じ
じゃあ計算はどこでやっててどこに入れてあるのかなあと考える

973 :
>>969-972
ありがとうございます
イメージがついてきました

974 :
>>966
DBへの変更はできない、DBを更新してるアプリの変更はできない、かつSQL Server 2000という条件で
データの追加・更新・削除を検知したいってことでいいのかな?

そういう検知ができるようにテーブル設計されてなければ正攻法では無理
カラム追加するなりストアド使うなりバージョン上げるなりするほうが早いし安上がり

975 :
クラサバ型のアプリなんだけど
サーバー側からイベントが欲しいって言ってんじゃね?

クライアント100台全部に通知ほしい?
また、その電文は投げっぱなしのジャーマンじゃなくて応答が欲しい?
凝ったことするときはレンサバでなければサーバー側にサービスとか動かして実現することが多いかな?
俺の経験だと

976 :
>>968
>軽量でない処理を呼び出すときはGetをつけないほうがいいという話
これは聞いたことないね

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

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

まあ、非同期メソッドにしたら軽くないことは嫌でも伝わるね

977 :
効いたことないなら調べろよと

978 :
967が独自で見聞きしたとくに重要とも思えない、間違っていそうな情報を調べるとか時間の無駄でしかないな

979 :
いやいやメソッドの命名法則の基本中の基本でしょ?

980 :
基本なのにいつまで経っても議論が絶えないめんどくさい話
IDEのリファクタリング機能が優秀になったおかげで修正が楽だから結構適当につけて後から気に入らなかったら直すスタイルになった
命名で悩む時間が減ったら作業効率あがる

981 :
string[] a = new string[]{"a","b","c"};
に対して
System.Array.Reverse(a);
でaそのものが反転してSystem.Array.Reverse(a)は戻り値がありませんが
a.Reversed() で戻り値が反転した Array で元の中身は変えない
みたいになるメソッドってありますか?

982 :
a.Reverse().ToArray()

983 :
引数 0 を指定するメソッド 'Reverse' のオーバーロードはありません。
って出るんだけど何が変なのかな

984 :
using System.Linq;

985 :
ありがとう
お詫びに脱ぎます

986 :
980踏んだのでついでに御相談なのですが

ふらっと C#,C♯,C#(初心者用) Part146
https://mevius.2ch.sc/test/read.cgi/tech/1576069931/
ここの次スレ (Part147 ?) は立てた方が良いのでしょうか?
既に
ふらっと C#,C♯,C#(初心者用) Part141
https://mevius.2ch.sc/test/read.cgi/tech/1544838367/
というスレもあるようですが重複なので放置なのか使い切った方が良いのかどっち?

987 :
そっちはワッチョイなしのスレ こっちはワッチョイありのスレで別物よ
だからスレ立ての時に気を付けてね

988 :
ふらっと C#,C♯,C#(初心者用) Part147
https://mevius.2ch.sc/test/read.cgi/tech/1582100741/

989 :
>>979
命名規則なんてチーム開発での決め事でしかないんだから周り合わせりゃいいだけ
一人で作ってんなら好きにすりゃいい
そんなもんだろ
っで時間がかかる時にGetを付けるかどうかとか決め事にするほどでもない内容だわ
データ書き換えしてるとかならわかるけど

990 :
>>963>>965
timerを回して下のようにデータ件数を取得して比較する
増えていたら必要な処理をおこなうぐらいしか思いつかないんですが
MyContext内の監視の仕方を教えてくれませんか

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


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

>>そういう検知ができるようにテーブル設計されてなければ正攻法では無理
これはどんな感じに設定されているのでしょうか?インデックスの最大値を検知とか?

991 :
トリガー作って監視用のテーブルに
情報を描きこむ。

DML トリガーでggr

992 :
それが正攻法やなあ
更新時に通知するのが一番良いけど、そこは触れなそうだし、フックポイントを用意してる気の利いた作りでも無さそうだし
何が問題で、精度や頻度やデータ件数すらわからんので、禄なアドバイスできんが
C#要素薄いし

993 :
sqlserver2000には誰もつっこまないのか
10年近く前にサポート切れてるだろ

994 :
どう見ても案件的にいろいろ終わってそうだからねえ
泥縄過ぎる気配

995 :
>>990
>Proc(datacount1 ,datacount2 ,datacount3)
え? その3つの比較なの?
もうワケワカメ

996 :
基本的にDML トリガー等でDB側に用意しておくものだってことか・・・

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

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


>>995
>>Proc(datacount1 ,datacount2 ,datacount3)
前回のレコード件数と比較して変わってたら2019に移動のつもりで書いていました

997 :
>>996
無茶苦茶じゃねえか。
1秒間隔で100万超のレコードのcount取るとか、既存アプリとやらが使えなくなるレベルでパフォーマンス落ちると思うぞ。

998 :
>>996
なんでDBContextの話をしてたのかやっと理解できた
DBContextがデータベース側の変更を自動で検知するとかは無理
楽観的同時実行制御みたいな機能はあるけど求めてるものとは違う
DB移行で新旧オンラインのまま
一部テーブルを同期させたいというユースケースなら
トリガーよりも先にレプリを考えるな
詳しくはDB板で聞けば

999 :
EntityFrameworkならSaveChangesをoverrideしちゃえばできるんじゃね?
あんま読んでないけど

1000 :
>>997
やっぱりそうなっちゃうかな
>>998
変更を自動で検知は無理か
レプリケーション調べてみます
ありがとう!

1001 :
1000ならC#死亡

1002 :
2ch.scからのレス数が1000に到達しました。

HSPだって
【node.js】サーバサイドjavascript 5【Nashorn】
ほぼ初心者プログラマでするべき事がわからない
Rubyについて(アンチ専用) Part005
Smalltalk総合 Squeak Pharo
メガデモを語る fr-08
CORBAなら俺に聞け
わんくま死亡か?
【最強CUI】PowerShell -Part 2
関数呼出しはgoto文である
--------------------
ガンバレ!ヴァジ蔵!
ブルーノ・セナへの土下座会場
☆宝石専門チャンネル GSTV 75☆【マターリ】
顕正会鉄オタ勧誘祭12人目スレ
【原爆の日】 原爆忌に考える 「韓国のヒロシマ」から/東京新聞社説[08/06]
【感染症】蜂窩織炎【其の一】
mugen wifi
【製品】ソニー、ハイエンド4K液晶テレビ「ブラビア X9500G」。4Kチューナーや「X1 Ultimate」搭載
●●妊娠中のエッチ、オナニー22●●
この曲はかっこいい!
めっちゃWIFI
羽生結弦☆浅田真央&オタオチスレ Part.10
【湖国】 滋賀県観光情報 25周目 【近江】
ウンチこき】滋賀作ゴキブリ語録3【クリぼっち
【Amazonプライムビデオ】有田と週刊プロレスと 第15号【第3シーズンスタート】
[PDF]&#160;l 14117 k
LPGA 330
☆★★サザンオールスターズ 524★★★
歴戦イビルジョー必勝法
【中小型】日本中小型株投信76【台風被害復興相場】
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼