◎正当な理由による書き込みの削除について: 生島英之 とみられる方へ:ふらっと C#,C♯,C#(初心者用) Part137 	YouTube動画>1本 ->画像>2枚  
動画、画像抽出    || 
この掲示板へ   
類似スレ   
掲示板一覧  人気スレ  動画人気順 
 このスレへの固定リンク: http://5chb.net/r/tech/1523004019/ ヒント: http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。
 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 
 他のスレッドでは書き込めないような低レベルな質問、 
 質問者自身なんだか意味がよく分からない質問、 
 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 
 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 
 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 
 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください    
>>980 を踏んだ人は新スレを建てて下さい。  
>>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。   
 ■関連スレ 
 C#, C♯, C#相談室 Part95  
http://2chb.net/r/tech/1508180530/   C#, C♯, C#相談室 Part93  
http://2chb.net/r/tech/1492818720/   ■前スレ 
 ふらっと C#,C♯,C#(初心者用) Part136   
http://2chb.net/r/tech/1520057345/     ■コードを貼る場合は↓を使いましょう。  
http://ideone.com/   https://dotnetfiddle.net/     ■情報源  
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx   https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index   https://msdn.microsoft.com/en-us/library/gg145045.aspx   http://referencesource.microsoft.com/  VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 
 前スレ
>>993 , 
>>998   例外が発生しないようなコードを書くべきというのはそのとおりだと思いますが、例えば 
 ファイルパスが適切であることを確認してファイルが存在することも確認して、その上で 
 オープンしようとしてもそのタイミングでファイルが消されている、といった状況だと例外が 
 発生しますよね   
 流石にそういうケースでは例外で止めるべきだというのも一つの考え方ですが、それを 
 検出して処理を戻したいケースもあるだろう、と思っての質問でした 
 >>4   誰かが編集中なときもあるし 
 そもそもぶっ壊れてるときもあるし 
 アプリの動作も含めて仕様を決めないとどうしようもないじゃん 
  まあ、最初から言ってるように、抽象的な質問には抽象的な答えしか返しようがないw 
 なかなか意図するところが伝わってないのですが、「例外処理をループの中に閉じ込めて、 
 困っているわけじゃないんだけどちょっと気になってることがあるので分かる方がいたら教えてください 
 private void button1_Click(object sender, EventArgs e) 
 { 
      if (sender is Button b) 
      {   
      } 
 }   
 方法: as 演算子と is 演算子を使用して安全にキャストする (C# プログラミング 
 ガイド)  
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/types/how-to-safely-cast-by-using-as-and-is-operators   public class Test 
 >>11   悪口言いたくないんだけど、俺様用語が多過ぎて何を言ってるのか全然分からないよw 
  >>13   List〈Test〉等を他のプロジェクトでも扱いたいのでTest型で返す関数を作成して 
 それをこれをパッケージした時に他のプロジェクトでも受け取れるようにしたいって事ですね 
 public Test GetTest(); 
 みたいな関数でTest型を使いまわせるようにしたいです 
  >>12   Abstractって指摘も入ってるので 
 型クラス(Test)を実装しておき 
 これをベースにして 
 public Test GetTest(); 
 を継承先に実装するようにするのが一番賢い設計ですかね・・・?   
 機能というよりはC♯を使った設計の質問と少し抽象的な話なのでスレチだったらすいません 
  >>14   publicな型はそれを含むプロジェクト(アセンブリ)を参照する別のプロジェクトからも 
 普通に使えると思うけど、そういう話ではなくて? 
  >>16   dll状態だと戻り値Test型って何?ってならないかと思って構造どうすればいいのか悩んでましたけど 
 そもそもそういう事を考えること自体がおかしかったかもしれないです・・・   
 Test型のみを他のプロジェクトに流用させたい時とかも考えていたんですけど 
 そもそもその設計自体がおかしいと思い至りました 
  >>11   もうちょっと掘り下げて質問し直します   
 EntityFrameworkを使ってSQLにTest型の入出力をするクラスと 
 WebからスクレイピングしてTest型を返すクラスを作りたいのですが 
 ここでTest型を両方で共通で使いたいと思ってます 
 Test型はプロパティが減ることは無いですが追加はしたいものとします   
 この時Test型はどのように実装するのが好ましいのでしょうか? 
 今だとSQLに接続したい時とスクレイピングする時に読み込むクラスが分けれないので困っています 
  >>18   これはTestクラスを作成して単独でビルドし 
 これを参照させたSQLクラスとスクレイピングクラスに継承させて扱うのが正解なのでしょうか? 
  C#というよりクラスタイプoop全般の話だと思うのですが、クラスを呼んだ時のパラメータは、コンストラクタに与えるのが良いのでしょうか、メソッドに与えるのが良いのでしょうか 
 >>21   インスタンスを作るのとメソッドをコールすることと意識が混ざっている素人で失礼しました   
 インスタンスを作る時にパラメータを渡すのと、メソッドの引数にパラメータを渡すの、oo的にはどちらが正しいのかお聞きしたかったです 
  >>22   oo的にはこう、というのは無く、スマートに記述できる方で良いという感じでしょうか?   
 今自分は気分や雰囲気で使い分けてるのですが、実はルールがあるのではと心配しておりました 
  >>24   正直何が聞きたいのかよく分からんけど、 
 いろいろ想像してみると、たぶん本当に聞きたいことはコンストラクタ云々じゃなくて 
 あるデータをプロパティとしてオブジェクトに持たせるかどうかをどういう基準で決めるか、 
 じゃないのかな。   
 例えばSystem.Timers.TimerにはpublicなプロパティIntervalがあるけど、 
 これをprivateかprotectedにしてユーザーからアクセスできないようにして、 
 Startメソッドの引数として与える仕様でも同じじゃないのかと 
  >>25   理解が浅く説明が拙くすみません 
 そのような事です   
 どちらでも出来てしまいますが、使い分けのルールや指標はあるのかなと 
  そのパラメーターが変更可能なのかどうかでやり方がいろいろある 
 >>26   そんなもの無い 
 その時々で苦悩して答えを出すしかない 
 プログラミングってそういう仕事 
  >>20   教科書的にはメソッドの引数しかありえない 
  >>26   基本的には全部引数でも間違いではない 
 あくまで関数が主であって、オブジェクトは関数のコンテキストに過ぎない、と考えるのが今時のプログラミング 
 端的に言えば、毎回同じ引数を渡すのが面倒だと思うならクラスにすることを検討するというだけの簡単な話 
  >>26   いや、プロパティとして持つべきデータかの判断は一般的にはそんなに難しくないはず。 
 上に例に挙げたTimerだって、Startの引数でIntervalを指定する方式だと 
 問題や不自然さがあることはちょっと考えれば分かるはず 
  >>31   別に問題も不自然さも無いよ 
 System.Timers.TimerやSystem.Windows.Forms.Timerのインターバルがプロパティなのは、デザイナで設定できる必要があるからだ 
 実際、デザイナに貼れないSystem.Threading.Timerはコンストラクタかメソッドで周期を設定する 
 (ライブラリではなく)アプリケーションの開発に関して言えば、データクラス以外でプロパティを使う必要があるケースは稀だよ 
 データクラスを除けば、一度設定した値を取り出したくなるのは殆どの場合設計が間違っている 
  >>20   ・コンストラクタで渡す 
 var a = new Test(1, "A");   
 ・メソッドで渡す 
 var b = new Test().SetId(2).SetName("B");   
 ・オブジェクト初期化子で渡す 
 var c = new Test{ 
  id = 3, 
  name = "C", 
 };   
 通常はコンストラクタで、メソッドチェーンはファクトリパターンでよく使う 
 オブジェクト初期化子は閉じてるクラスの可読性を上げたいときに使う 
 まあ統一性さえ確保出来ていればどれを選んでも大差ないよ 
  >>32   System.Threading.Timerがプロパティを持たないのは何か意図があると思うが 
 使ったことがないのでよくわからない。(軽量であることが「コンセンプトだから? 
 あるいんた単に設計者の頭が古いだけかもしれない}   
 TimerのIntervalをプロパティとして実装しなかった場合。   
 (1) タイマー動作時にIntervallを変更するためにはStartを実行することになるが、 
 OOP的に不自然   
 (2) そもそもTimerオブジェクトは、少なくとも動作時にはIntervalの値を保持している。 
 だったらこれをプロパティとして公開する方が自然 
  >>34   動作中にIntervalの値を変えられると困る場合、 
 Start時のみ設定可能にするのは別に不自然でもないよ 
 OOPの目的はメンテナンス性と事前の徹底したバグ潰しだから、値を変更できるルートを予め絞っておくことは理に適ってる 
  色々とアドバイスありがとうございます 
 >>28   あまり我流過ぎるとチーム開発の時に混乱するという心配がありまして 
  >>38   対象を無視してオレオレナントナク基準で決めるほうが我流 
 物事にはそれぞれ特性があり最適な答えはいつも違う 
 それを導き出すには都度考えて議論を重ね実験を繰り返すしかないんだよ 
  見積り終わってるのに時間かけても無駄 
 業務系はそれでいいのかもね 
 >>41   いや 
 君のやり方だって怪しいもんじゃない? 
 具体的に○○さんのコードは見易くてわかりやすいですねって言われた実績あるの? 
 無いのに勝手な妄想で自分のコードを保守しやすいと思い込んでない? 
  >>43   お前なんか全身elseで強化した俺の敵じゃねぇ 
  VisualStrudioのC#でPS4を入力を表示するソフトを作りたいんだけども、 
 >>46   PS4の入力ってなに?   
 コントローラの事? 
  PS4を窓の外に出力する 
 作画ソフトを作成したいのですが 
 >>51   具体的には印刷すると模造紙ぐらいの大きさのでっかい回路図を作成します 
 保存するファイル形式はXmlです 
  >>50   自分でスクロールの機能まで実装してもいいけど、 
 特に理由がないならコンテナ(例えばPanel)の中にPictureBoxを入れて使うのが 
 普通じゃないですか 
  >>50   PictureBoxにスクロールバー表示するのは  
https://dobon.net/vb/dotnet/graphics/scrollimage.html   例ではコードでプロパティ設定しているけどデザイナで設定しても同じようにできる 
  模造紙レベルのでっかいpitureboxで画像のまま編集は現実的じゃないけどね 
 論理座標とワールド座標、デバイス座標をよく理解すべき 
 >>54-57   ありがとうございます 
 頑張って見ます 
  すいません、PS4のコントローラをPCに接続して、 
 配置が違うだけなのか。 
 Task.Factory.StartNew(またはTask.Run)で生成したスレッドの優先度を変える方法はあるのでしょうか。 
 63ですがスレッドプールを使わず、スレッドで対応することにしました。 
 >>65   Taskだと処理中に割り込み?が割と入ってきて、処理時間が遅延してしまうのです。 
 スレッドレベルで優先度を上げたいと思いまして。 
 結局Threadにして優先度を上げても割り込みは入ってくるのですが、多少マシになったような気がします。 
  >>66   それ単にスレッド生成で遅延しているなんてオチじゃないよな? 
  受託案件なのでC#で作らざるを得ないのです。 
 自分自身はファーム屋なので、マイコンでやりたいんですけどね。    
>>70   まだ遅延の原因はわかってませんです 
 生成時だけの遅延じゃないので、違うとは思いますが・・・ 
 ユーザーコントロールのプロパティをデザイン時のプロパティウィンドウでコンボボックスにしたく 
 人様のサイトで恐縮なのですが、以下をほぼコピペしました。    
http://blog.okazuki.jp/entry/20070207/1170820895     が、テキストボックスのままで選択肢になりません。 
 公開プロパティに、なにか別の宣言が要りましたでしょうか? 
 継承ユーザーコントロールだったのですが、継承元にも 
 引き続きすみません。 
 初歩的な質問で申し訳ないのですが、 
 >>80   例えば 
 int Add(int a, int b) { 
 int c; 
 c = a + b; 
 return c; 
 } 
 というメソッドですと、Add(3, 5)ならaとbにそれぞれ3、5が入りc=8となると思うのですが、 
 abc = xyz,Add()といった風に使用しても、cの値も何も返ってこないのに、 
 引数なしのコードを見かける様な・・・ 
  >>80   メソッドってのは別に数値の計算だけするわけじゃない 
 何かの処理なので、その処理に引数が必要なら引数を渡すし 
 その処理に結果があるなら戻り値がある 
  >>84   横からごめん 
 処理に結果がないならそれはもう何も処理してないのと同じじゃないの? 
  >>86   >>84 の説明が間違ってると言いたいんじゃなくて 
 単純に理解できなかったんだけど誤解させたならごめん   
 とはいえせっかくだから自分なりに説明を考えてみたんだけど 
 プログラムを動かすことが目的じゃなくて人間に読ませてアルゴリズムを 
 分からせることが目的の場合は最終的な結果は必要ないって感じかな? 
  >>80   メソッドは外注さんへの作業手順書みたいなもん   
 引数は、その作業に必要な情報がある場合に外部から渡すための窓口 
 情報不要なら省略できる 
 引数なし=こっちから情報渡さなくても作業できるよね?みたいな感じ   
 メソッド内で作業が完了したあと、なんか返事してほしい場合は戻り値をつかう 
 返事不要の場合void 
 戻り値なし=作業さえしてくれたら結果レポートいらね!   
 メソッドコール(外注さんへ仕事依頼)したら作業はちゃんとされるので、結果のレポートを使って、さらになんか作業をしたいなら戻り値よこせよ!って作業手順書に書いておけばいいし、仕事さえしてくれたら、返事不要なら戻り値いらない 
  >>80   コントロールにupdateってメソッドがあるだろ? 
 これは自身の再描画をするだけのメソッドなんだから引数を取りようがない 
 また再描画するだけなのに失敗するわけないんだから戻り値もいらない 
 無理やり成否を返すこともできるが、失敗する可能性があるメソッドに様変わりし、呼び出し元で失敗を意識した実装にしなきゃいけないから負担を強いることになる 
 って感じかな 
  引数のとりようも戻り値の返しようもなんぼでもあるわ 
 >>88   作業が行われればレポートは要らないというのは例えば殺し屋みたいな? 
 でもコンピューター上でそれを再現するならターゲットもターゲットの生死も0と1のデータなんじゃないの? 
 だとしたらそのデータはどこに消えるの???    
>>89   同じようなことばっかり聞いて悪いんだけど再描画の結果も0と1のデータなんじゃないの? 
 それがメモリに残らないのに再描画は成功という意味がわからない    
>>90   戻り値の返しようがあるというのは返さない選択肢もあるということ??? 
 戻り値を返さないプログラムに人間に読ませる以上の価値があるとすればそれを教えて欲しい 
  >>91   横からで悪いけどたとえ話がおかしいし 
 言ってることが伝わらない   
 もっとまとめてから書くべき 
  >>80   まあ、一言でいうと愚問だねw 
 そんなこと考えても時間のムダ。   
 真面目な話、その疑問はそのまま放置して前に進む方がいいと思う。 
  >>92   オブジェクト指向ってやつか! 
 オブジェクトを使うと結果がない処理にも意味があるってこと?    
>>93   まとめるなら「結果がない処理の価値がわからない」って感じかなあ    
>>94   詰め込み教育への皮肉だと思うけど正直分かりにくいかも 
 もし本気で言ってるならさすがに時代遅れだから考え直したほうがいいよ 
  >>95   経験が足りないために起こる疑問は経験を詰むことでしか解決しない。   
 構造化プログラミングの意義もOOPの意義も、体感できるのは 
 実際にコードを自分でコードが書けるようになってから。 
 本で読んだだけで最初からそれが分かるのは一部の天才だけ。   
 逆にいえば、
>>80 の疑問は頭の良い人が考えた難しい理論を理解しないと 
 解決しないような問題じゃなく、誰でも体験すれば自然と分かる程度の話ってこと 
  >>91   0と1?何を言ってるのかわからん 
 14時に集合ってメール出して、全員からわかったみたいな返信きてもうざいだろ? 
 だから、14時集合(返信不要)ってメールをおくる方が受け取る側も返信しなくていいし、送る側も無駄な受信を減らせるしでwinwin 
 この辺りは経験だったりセンスだろうな 
  >>95   成否の観点では単にフィールドの値を設定するメソッドを鑑みても 
 メモリに書き込み失敗の概念があっても、代入に失敗の概念はない 
 設定前の値を返すにしても、わざわざ退避する処理を強制するのか?   
 想定外の発生は基本的に例外をぶん投げるものだし 
 常人が気にしない様な事を考えて躓いてそうである 
  >>95   戻り値がないのは常に「成功」を返す関数と考えて良い 
 C#では失敗した場合は例外を投げるので、成否を戻り値で判定することはない   
 C言語とかgoみたいに例外という概念がない言語は、成功したかどうかが戻り値に入ってることが多い 
 それでも絶対に失敗しないか、失敗したらプログラムが強制終了するような処理は戻り値がない場合もある 
  >C#では失敗した場合は例外を投げるので、成否を戻り値で判定することはない 
 >>100   > C#では失敗した場合は例外を投げるので、成否を戻り値で判定することはない 
 ケースバイケース。何でもかんでも例外にしちゃ駄目。 
  >>96   とりあえず
>>94 が本気なのとそれが思考停止の詰め込み教育信奉じゃないのは分かったよ 
 偉そうなこと言ってごめん    
>>97   自分もちゃんとは理解してないけどコンピューターは0と1だけで動いてるらしい 
 でも初心者用スレで出す話ではなかったと反省 
 メール送信の例は分かりやすい!と思ったけど本当に結果が何もないと送信済みマークも付かないのでは・・・?    
>>98-102   詳しい人でも意見が割れるくらい難しい問題なのね  
>>99 は皮肉なんだろうけど意味どころか自分に向けられた言葉なのかも分からないから反応に困る・・・ 
  >>103   元の発言の「結果が無い」って言葉を勘違いしてる。 
 関数で処理した結果を返り値と言う形で関数の呼び出し元に伝える必要が無いって意味だ。 
 ちゃんと意味のある結果は発生している。 
  >>101-102   書き方が変だった 
 C言語やgoと比べて成否を例外で処理することが多いから戻り値がなくても良い場合が多い程度の意味で言った    
>>103   メール送信の結果は戻り値ではない方法で返しているというだけ 
 C#には例外やイベントのように色々な機構があるから、とりあえず細かいことは気にせず先に進んだ方がいい 
  関数という言葉に惑わされてるということかな 
 >>103   その辺は想定外と書いたように
>>102 よろしくケースバイケースだよ 
 十分想定され例外情報すら要らんなら戻り値で成否を返す事もあるし 
 InvalidProgramExceptionみたいに言語レベルでは処理できない物もある   
 話が逸れたけどOSレベルでは例外を発生させる余地などが有ったとしても 
 プラットフォーム次第になったりと言語レベルで突き詰めない場合は多い 
  いろいろ調べたり考えたりしたのですが、解決出来ないので質問します。 
 https://dotnetfiddle.net/SoCII1   このようなコードがあって 
 List<ITest>にいれていったときに 
 ListのXだけを全て足して返す関数は出来たのですが、今後ITestのプロパティは増える予定で、それぞれに足して返す関数をつけたいです。 
 そのときに似たようなコードになるので一つに纏めようとしたのですが中々できず困っています。どのような書き方をすればいいでしょうか? 
 >>108   基本的にはプロパティを動的に指定するのはリフレクションとかDictionaryを駆使とか、何らかの形でコストを払うことになると思う 
 状況にもよるけど、コンパイル時に確定してるならT4テンプレートとかコード生成とかで対応するのが一番正しいんじゃないかな 
  >>108   そんなものは自作しなくてもList自身(正確にはIEnumerable<T>だけど)が持ってるw 
 名前もそのまんまSumだからよくMSDNを見てみ  
https://msdn.microsoft.com/ja-jp/library/6sh2ey19.aspx    >>110   んー、エスパーだけど、質問者はプロパティをforeachみたいに回して全てにsumするようなのをプロパティの数に限らず1行で書きたいってことじゃね? 
  >>103   メソッドの戻り値とコンピュータの世界は全く関係がない 
 低級のマシン語をわかりやすくするための高級言語なんで初心者用スレで〜というよりは見当違いなことを言ってる   
 っで、結果とは低級レベルでの結果とメソッドレベルの結果のどちらをさしている? 
 低級レベルでの結果が表に出てこないのは普通のこと 
 メソッドレベルで見てもメールの送信済マークを含めてないのでメソッド戻り値の返さない 
  >>109   リフレクションについて調べて何とか出来ました!ありがとうございます!  
>>110 ,
>>111   もう少し具体的に書いていれば良かったですよね・・・今後質問するときはもっと詳しく書くので、そのときはよろしくお願いします! 
  プログレスバーってもろデジタルメーターじゃないですか 
 >>120   >>117 のアナログメーターも全く関係ないんだけど? 
 筋線維もよく意味が分からないし、糸の振動の軌跡の描画みたいなことやりたいのなら自分で作るしかないよ 
  プリンタの印刷設定の縦横を変更したいです。 
 DefaultPageSettings.Landscape プロパティから変えられるのは確認しましたが 
 一時的なものではなく、プログラムが終了したあとも変わったままにしておきたいのですが 
 なにか方法はないでしょうか?  
http://bbs.wankuma.com/index.cgi?mode=al2& ;namber=2377&KLOG=2 
 このサイトも参考にしてSetHdevmodeなどもやってみましたが、プログラム終了後にもとに戻ってしまいます。 
 Windows7,10 64bitです 
 何がしたいのかよう分からん 
 >>123   次回そのプログラムを起動した時も同じ設定が適用されるようにしたい、 
 という意味なら、Landscape を永続化すればいいだけでしょう。   
 同じ設定が他のプログラムにも適用されるようにしたい、って意味なら、 
 たぶんそんなことは出来ないんじゃないかと... 
 よく知らんけど 
  >>126   後者の方を考えています。 
 なにか方法があればいいのですが、、、 
  他のプログラムでも同じ設定を使いたいんならプリンタドライバの設定変更以外に方法はない 
 [[['[]  ]]] { {] ]][ '[][][] [][] [][][]  [] '[] [] 
 c#勉強始めたての者です。 
 すみません上記文中のlongは誤植ですので読み飛ばしてください。 
 文字数がintに収まるように文字列を切り出しながら検索すればいいんじゃないか 
 ありがとうございます。 
 フォーム上のコントロールを、プログラムから参照するいい方法はないでしょうか 
 >>135   if (Controls[i] is CheckBox) 
  >>135   根本的に考え違いをしてると思う。 
 たぶんありもしないものをあるはずだと勝手に思い込んでる。   
 コントロールをテーブル参照したいなら自分で明示的にテーブル(配列)を 
 宣言しましょう。   
 デザイナには君が欲しいと思っているものを忖度して自動で作ってくれるような 
 都合のいい機能は存在しない。 
  >>136   とりあえずチェックボックスだけを選択することは可能になりました 
 順番はやはり思っているとおりにいきませんが、これは実行結果を見つつ、デザイナで 
 並べ替えるしかないかなと思い始めました    
>>137   デザイナが忖度してくれるとは思っていないので、プロパティか何かで明示的に選択する 
 事ができないかな、と思ったのです 
 以前VBAで似たようなものを作った際は、 
 Controls("CheckBox" & i).Caption = Cells(i, 1) 
 こんな選択の仕方ができたので、c#でもなにか方法はあるのではないかと思いました 
  >>138   コントロールに名前付ければいいじゃん 
 フォームにあるコントロールをどうやって特定したいと思ってるの? 
  >>139   例えば 
 Panel.Controls.CheckBox[i] 
 みたいな形で指定できればいいなと思ってるんですが、残念ながらそうできないですね    
>>137   が書いている、自分で明示的にテーブルを宣言するというのは、例えば 
 cbox[1] = CheckBox1; 
 cbox[2] = CheckBox2; 
 とかいうコードを予め書いておく、ということでしょうか? 
  >>140   意味がわからない 
 何がしたいの?   
 @コントロールを特定する必要がある 
 A複数のコントロールに共通の処理がしたい   
 Aにしか目が行ってないけど@をやらなきゃいけない時点で 
 Aの方法なんてエレガントにできたってウンコブリブリじゃん 
  オムツの取り替えまでやって欲しい要介護は大人しくVBやってろ 
 >>140   だから、配列が欲しいなら配列を自分で作ろうよ。   
 配列が欲しい、でもなんだか自分で配列を書くのは嫌だ。 
 この発想がおかしい。   
 var cbs = new[] {CheckBox1, CheckBox2, ...};   
 これ書くのがそんなに面倒? 
 変な方向に努力する方が余程面倒でしょ 
 ローカル変数じゃなくてメンバ変数かプロパティとして実装する場合だって手間は大差ないよ 
  >>143   配列を書くのは別に面倒でもなんでもないです 
 コピペしてちょっと直せば済むので   
 ただ、コピペで済む内容なら、コードで表現する方法があるのではないかと思ったのです 
 「新しくなにかプロパティを実装する」のではなく、「このプロパティを参照するとわかる」 
 という情報が存在するのかと考えました    
>>137   が書いてくれたように、「ありもしない物をあるはずだと思い込んでる」のかもしれません 
  >>144   それって同じフォーマットの行が並んだ設定ファイルみたいになんでしょ? 
 どの部分を自動でやってくれると思ってん? 
  >>145   自動でやってくれると言うか、Controls[n] の n に相当する部分を、何らかのプロパティで 
 持っているのではないかと思ったのです 
 それがわかれば、IDEでプロパティを書き換えてやればそれで済むな、と   
 あるいはそれがなければ、例えば   
 for (int i = 0; i < CBOX_ELEMENTS; i++) { 
 string s = "checkBox" + (i+1).ToString(); 
 Controls(s).Text = ... 
 }   
 みたいな形で指定できないかな、と思っていたのですが、これは無理そうですし 
  >>146   ちがくね? 
 お前がやりたいのって別のデータとid(?)が一致する項目にデータを入れていきたいんじゃねーの? 
 でもそれってコントロールを特定する必要があるんだよね? 
 コントロールとデータを紐付ける何かはあるの? 
  GetAllControlsのカウント取るとかそういう? 
 VB6はコントロール配列があったけどなー。.Netの世界にはないからの。 
 だから配列に突っ込めば済む話を何でわざわざより面倒な方法で解決しようとするのw 
 >>149   いや、単純にファイルから読み込んだ名前で、チェックボックスの文字を変えたいだけです 
 例えばファイルの中身が 犬,猿,雉だったら?CheckBox1-3の文字をそれぞれ犬、猿、雉にしてCheckBox4-20は「使用不可」にでもするような 
 だから機械的に参照できればよかったのです    
>>153   これでほぼ解決です、ありがとうございます 
  >>154   まあ一言でいうと、わざわざ自分で配列を作らなくても、それを実現する方法はすでに存在するだろうと思ってたのです 
 配列作ったら「そんなことしなくてもこう書けば一発で参照できるのに」って言われる方法があるんじゃないかと 
  >>155   その下にインデクサによる説明もあるだろw 
  public partial class Form1 : Form 
 public class B : private A 
 >>159   継承元をprotectedにすれば継承したクラスからしかアクセスできないようにはできる 
  そのクラス経由でしかアクセスできないようにしたいってことじゃないの? 
 ゆとりしか居ないのかなぁ 
 >>163   ゆとりなんてもうオッサンやでおじいちゃん? 
  これ参考にすればいいのかな 
 http://ufcpp.net/study/csharp/oo_conceal.html     protected internal 同一プロジェクト内のクラス内部、または、派生クラスの内部からのみアクセス可能   
 private protected (C# 7.2 以降)同一プロジェクト内のクラス内部、かつ、派生クラスの内部からのみアクセス可能 
 こういうこと? 
 >>155   それで解決しねーだろ 
 バラっバラにくんじゃね? 
 俺はてっきりコントロールの 
 座標でソートして名前付けたいのかと思った 
  皆様いろいろありがとうございました 
   >>158   書いてくださった方法が、ほぼ私が求めていたものを完璧に実現しています 
 抱かれてもいいくらい惚れました 
 ただ、試してみたところピックアップされる順番は必ずしもコントロールを配置した 
 順番通りではなく、はっきりした法則性も見いだせませんでした 
 テストプログラムを書いて、インデックスと見た目を一致させるようデザイナで 
 コントロールを並べ替えようかとも思いましたが、後日コントロールを追加した際 
 悩むことになりそうなのでやめておきました    
>>153   結局この方法でコントロールを検索し、発見したコントロールをリストに追加するという 
 方法で対応することにしました    
>>154   配列に突っ込むにも、コード上に直接 checkBox1 とか checkBox2 とかのリテラルを 
 埋め込みたくなかったので、検索した上で配列を作ることにしました    
>>148 , 150, 151 
 実は書いていることがわからないレベルなので、これから勉強します 
 「作って覚える」は一通りやったので、「独習c#」を紐解いてみます    
>>166   これで解決しました 
 158の方法で解決するかと思っていたのですが、やってみたところバラバラの順番でした 
 皮肉でもなんでもなく、コントロールの座標でソートとか、なぜそういう操作をしたいのだろうと 
 推測したのか教えていただけると嬉しいです 
 今後も質問すると思いますので、疑問点がわかりやすい文章を意識する必要があるので 
 今日からC#勉強し始めたけど、 
 >>167   いやいやいやcheckBox1 とか checkBox2 とかはリテラルじゃないってw 
 ただの識別子(フィールド名)   
 コードにリテラルを埋め込むというか、コンパイル時に誤りを検出できない 
 (普通の理解では)お行儀の悪いコードになるのはむしろ
>>153 みたいな方法だってw 
  namespaceとかcheckedがブロックなのが何かなぁ… 
 >>169   おっと・・・ 
 どうやら根本的なところで間違っていたようです 
 書いてあるとおりだとすると、質問とレスが噛み合っていない理由がわかりました 
 わざわざ行儀の悪い書き方を探していたのか 
  >>167   >>158 はOrderBy()でチェックボックスの名前(Name)順にソートしてる。 
 Nameの代わりに、TabIndexかTagを設定してそれを利用しても良い。 
 というか、Nameだとチェックボックスが10個以上になるとソートが望むようにならないか。 
  >>167   おそらく配置したコントロールから欲しい情報は座標とサイズぐらいしかない 
 それらの特定情報は別ファイルにある 
 なのでコントロールが上から 
 もしくは左からか順番に取得できれば 
 別ファイルに記述した通りの順番で情報を並べることができる 
 Controlsで取得できる順番はよく知らないけど 
 作った順かあるいわなんの特徴もなくランダムか何かを保証するものではないのかな?と 
  >>173   Controlsが返す順番は保証されてないけど、自分でソートすれば良い。   
 (1)TabIndex順 (各CheckBoxにタブオーダー(TabIndex)を設定しておく) 
 this.checkBoxes =  this.Controls.OfType< CheckBox >().OrderBy( x => x.TabIndex ).ToArray(); 
 (2)Tag順 (各CheckBoxのTagに数値を設定しておく) 
 this.checkBoxes =  this.Controls.OfType< CheckBox >().OrderBy( x => x.Tag ).ToArray(); 
 (3-1)Location順(左から) 
 this.checkBoxes =  this.Controls.OfType< CheckBox >().OrderBy( x => x.Location.X ).ThenBy( x=> x.Location.Y ).ToArray(); 
 (3-2)Location順(上から) 
 this.checkBoxes =  this.Controls.OfType< CheckBox >().OrderBy( x => x.Location.Y ).ThenBy( x=> x.Location.X ).ToArray(); 
  >>155   そういう使い方なら、チェックボックスを先に作っておくんじゃなくて 
 ファイルから読んだ内容で動的に作っていった方が手っ取り早い 
 どうせチェックボックスは全部等間隔に並べるんじゃろ? 
  >>126 ,
>>128   >>123 です 
 SetPrinter関数を使用することで実現できました。ありがとうございました。 
  >>178   ネストのイメージ書きたかっただけだろうよ 
  >>173   なるほど、コントロールから情報を取得する必要があると思えたのですね 
 実際はそれ以前の段階でしたが    
>>175   それも考えたのですが、デザイナで画面を確認したいので、静的に用意して 
 おきたいという結論になりました 
 動的に置くほうが難易度高そうだ、と思ったのもありますが 
  >>178-179     「意味無い」って、どういう意味? 
  うーん、string x = "10"; に対して 
 expression-bodied関数は、なんかエロいな… 
 やってる事は違うけど、考え方的にはCのマクロに近いのかな… 
 なんだよ、ToString()メソッドあるじゃねぇかよ…。 
 >>190     ごめん。   
 質問です。なんだよ、ToString()メソッドあるじゃねぇかよ… 
  VisualStudioでC#のフォームアプリを開発するときに 
 >>193   デバッグ用に文字列を出したいなら、using System.Diagnostics;して、Debug.WriteLine()とか使うべき。 
 これならリリースビルドにするだけで無効になるからコメントアウトも不要。 
 リリースビルドでも使いたいなら、Trace.WriteLine()。 
  >>194   おお、ちゃんとデバッグ用のがあるんだ 
 聞いてよかった 
 ありがとう    
>>195   なるほど 
 別に見られて困るようなものでも無かったけど 
 無知を晒す所だった・・・   
 てか、独学でやってると気づかずおかしなことやってそうで怖いわ 
 たまたま、ネット上で解説見つかるか 
 質問して教えてもらえるかの 
 綱渡りで進んでるw 
  >>192   おまえ出身言語化どこだよw 
 レヴェルが低すぎるぞ 
  引数の文字列が、データグリッドに含まれていない場合だけ追加したいんですが、追加されません。  
 >>198   >view.Rows.Add(str); 
 これじゃね 
  >>199    >>200   exist=trueでブレークポイントを置いてデバッグ実行すればわかるのでは? 
  そもそも exists = true; の行に到達してないというオチな気がする 
 >>201 とかぶってしまった  
>>201 の方が指摘として親切だからそっちだけ読めばいいよ 
  >>200    >>204 はとってもそれっぽい 
 で、例外が握りつぶされるような場所でAddToDataGridが使われてるせいで気づけてないとか   
 こういう場合自分はtry{...}catch(Exception exception){throw;}で囲って 
 throwの直前にブレークポイントを置いたりしてるけどもっとうまい方法があったら誰か教えてちょ 
  >>204 はそれっぽいと言ったけど 
 よく読むと 
 bool exists = false;//ここに移動  
 の部分は自分には理解できなかった  
>>204 の勘違い? 
  >>206    みなさん本当にありがとうございます。  
 >>208   それなら納得 
 existsの宣言の位置を移動するとif(!exists)がスコープから外れちゃうもんね    
>>209   >>204 の方法で解決したんなら
>>204 の指摘が正しかったんでしょうよ 
 で、それに気づかなかったんならやっぱり例外が握りつぶされてたんでしょ 
 なら今後のためにも原因は分からずで片付けず例外の名前くらい確認しといたほうが良いと思うよ 
  オブジェクト指向のプログラミングでは 
 変数は、公開しちゃダメ 
 >>212   後から書き換えられるのを確実に防止するために 
 プロパティを使うってことか なるほど 
 1人でコード書いてるからそういう発想が無かったけど 
 自分も後から絶対変な値を代入しない保証ないもんな   
 てことは、
>>211 の例だと 
 ・引数付きのコンストラクタを使って、フラグの状態をインスタンス化 
 ・そのフラグのプロパティはgetのみ設定 
 ってすればいいのか?   
 でもこれだと、そういうフラグを立てるタイミングがたくさんあったら 
 その分だけクラスを準備しとくことになると思うんだけど 
 そういうもんなの? 
  あ、いや 
 クラスを複数準備する必要はないな    
>>213 の後半の話は無しで 
 >>211   212は読まなくていい 
 フィールドだってreadonly修飾子で代入禁止できるが、212はそんなことも分かってないから   
 プロパティがフィールドと違う点は大ざっぱに 
 * 派生クラスでオーバーライドできる 
 * プロパティから構造体を返すとコピーされる 
 の2点 
 この2つの特性が必要ない(または避けたい)場合にフィールドを選択してよい 
 判断できないならプロパティを選択する 
  >>215   >* プロパティから構造体を返すとコピーされる 
 これが、全然分からんのだけど 
 classの代わりにstructを使った場合の話であってる? 
 今の自分が考えたところで、どうせちゃんと理解出来ない気もするけど 
  >>212 は別に全く問題ないだろ。    
>>211 の要はカプセル化の質問に対して、
>>212 はカプセル化の話として一般論として答えただけじゃん。   
 それに対して
>>215 と
>>217 はここはC#のスレだからC#特有のreadonlyなフィールドあるよとか言語依存の情報 
 つけ足してるだけじゃん。 
  オブジェクト指向では、変数は公開しない。 
 プロパティから構造体を返すとコピーってのは意味わかんないね 
 コピーされるのは右辺がプロパティだろうがフィルドだろうが同じだよw    
>>211   少なくともパブリックなメンバーに関しては、あえてフィールドを使う理由はないって 
 理解でいいと思うよ。例外はアンマネージドコードの呼び出しで使う型を定義する場合ぐらい。   
 フォールドのプロパティーに対して優位な点は   
 (1) 軽量である 
 (2) 簡潔に書ける   
 このぐらいしかない。   
 (1)が重要なケースなんかまずない。 
 (2)については、古いC#はともかく今のC#は儒分簡潔に書けるようになって来てる。 
 >>220   カプセル化っていのは、触る必要がないもの、触られては困るものを隠すこと。 
 この質問にはほとんど関係ない話w   
 フィールドをプロパティにしようが、触る必要がない文脈で触られることを防げるわけじゃないw 
 せいぜいセッターで値が適切かどうかチェックできる程度 
  まぁ、むしろ
>>211 のカプセル化などの話に対して、考え方説明せずに 
 初心者にいきなり言語仕様の詳細を羅列する
>>215 の方が教え方としてははぁーー??だわww 
 >>222   質問者は 
 >オブジェクト指向のプログラミングでは 
 >変数じゃなくてプロパティにアクセスさせるべき 
 >みたいな事をよく聞くんだけど  
 で書いて始めてんじゃん。だから、カプセル化の説明した方がまずいいんじゃねぇか?? 
  >>224   何が「だから」なのかよくわかりませんw   
 質問は外部に見せるデータをプロパティとして実装すべきかフィールドでもよいのか。 
 カプセル化(余分なものを外に見せるな)は何も関係ないってw 
  >>224   >オブジェクト指向のプログラミングでは  
 >変数じゃなくてプロパティにアクセスさせるべき 
 >みたいな事をよく聞くんだけど  
 を質問者が引き合いに出した以上、質問者はここからはしっかりわかってなくて、色々ごちゃ混ぜになってると 
 思われる。だから、そっから説明しなきゃ、おそらく習得できない。 
  自分はオブジェクト指向じゃない言語をちょっとだけやってたんだけど 
 >>227   別にダメじゃないよw 
 何度も言うけど、あえてフィールドを使う理由があんまりないだけw   
 フィールドをプロパティにしたらバグが減らせるとか可読性が上がるとか、 
 ほとんどの場合そんなことはない 
  >変数じゃなくてプロパティにアクセスさせるべき  
 >>229   そうなのか・・・ 
 でも、解説サイト見てると 
 「ダメ」的な雰囲気で書いてあるとこばっかりじゃない? 
 俺の理解が間違ってるのかもしれないが 
 俺的には現状
>>229 に書いてある事が正解に思えちゃうんだよな   
 俺が1人で小規模な開発してるだけだから 
 いまいちオブジェクト指向のメリットを感じる場面が少ないのかな 
  >>227   >public bool JudgFlag = true    
 変数を公開したら、ダメ。 
 カプセル化にならない   
 理由は、  
>>212   に書いてある 
  >俺が1人で小規模な開発してるだけだから  
 >いまいちオブジェクト指向のメリットを感じる場面が少ないのかな 
 まあこれだな    
>>212 の言ってる事は、OOPの「思想」としては間違いなく正しい 
 但し、単独での小規模開発という状況を前提にするなら「現実的なメリット」は無いに等しい 
 >>227   うん。君のケースだとダメだね。それだと、クラスの内部状態JudgFlagが誰でも自由に書き換えられちゃう。 
 だから、まずは君は基本、
>>220 のようなC#とか言語関係ない一般的なカプセル化について勉強しよう。   
 で、君のケースだと自分で書いてるが 
 >・引数付きのコンストラクタを使って、フラグの状態をインスタンス化 
 >・そのフラグのプロパティはgetのみ設定 
 ってやるか、 
 getプロパティ書くの嫌なら
>>215 が書いたようにC#にはreadonlyフィールドというのがあるのでそれで代用できる。 
  おまえら変数は公開しちゃだめだけど、プロパティやgetter/setterなら公開してもいいって思っとるやろw 
 >>231   どこの世界でも教条的(思い込みが激しいともいう)人はいるからねw   
 外部から取得/設定してもらう必要がある値をフィールドではなくプロパティにしたからって 
 ヒューマンエラーを減らす効果なんかないのは事実   
 ただ機能がより少ないフィールドをあえて使うことないでしょってだけの話   
 オブジェクトの公開するデータは必ずしもいつも変数に入っているわけではなく、 
 何らかの処理の結果を返す場合もあって、その場合はプロパティになるから、 
 だったら全部プロパティの方が統一感があるという考え方はあるかもしれない 
  まとめると 
 フォーム間のデータ受け渡しのやり方について教えてください 
 【マイトLーヤとPS4】 FFとDQの最新作、VR開発は危険、プレーヤーの日常感覚を損なうおそれ 
 http://2chb.net/r/liveplus/1524621704/l50   >>240   それは右座標を計算して返しただけであって処理を実行するのとは違う 
 面倒だからここ読んで  
https://msdn.microsoft.com/ja-jp/library/ms229054 (v=vs.100).aspx 
  >>241   Form2にプロパティを追加 
 Form1の該当メソッド内でForm2を宣言&インスタンス化してプロパティにパラメータをセット 
 Show(Dialog)メソッドで呼び出し 
  メッセージキューを勉強中なんですが、 
 >>244   ありがとうございます 
 この場合、もう二度と Form1 を使わないという状況であれば、Form2 の ShowDialog を 
 呼び出す前に this.Hide(); で隠しておいて、戻ってきたら this.Dispose(); でしょうか 
 Hide() だけで処理を抜けるコードを書き忘れて、いつまでもプログラムが残り続けるバグを 
 やったので、二度と戻ってこないフォームは Dispose() したいのです 
  今思ったのですが、そういう使い方だとむしろ Form2 を非表示で実行しておいて、 
 >>243   頭悪そうだけど、単にバッキングフィールドの値をそのまま返すのではないケースを 
 「何らかの処理の結果を返す」と言っている。   
 処理 = 高価な処理ではない。 
 重かろうが単なる足し算だろうが処理は処理だ 
  Applicationに共通のパラメータ持って、Form1とForm2で共有しちゃダメなんか 
 使い方次第じゃないかなとは思う 
 自作ツールをソースコード付きで公開したいのですが、 
 .netで簡単に実現できる機能(メールや圧縮、画像処理等)をネイティブCのアプリで利用したいです。VC++6.0の(C++ではなく)C言語で作るコンソールアプリでです。 
 >>254   今のOSSはMITライセンスでGithubに晒すのが主流 
  >>255   別プロセスにする 
 Win10のアプリなら WinRT のコンポーネントにすれば言語をまたがって普通に使える 
  >>255   標準入出力のリダイレクト。 
 古典的でダサいけどね 
  皆様ありがとうございました 
 今度はインデクサについて教えてください 
   https://ideone.com/TlRwJS     例として上記のようなコードを書いてみました 
 これで、インデクサを使って例えば anml["whale"] とすれば1が返ってくるような、 
 そういうものを作りたいと思います 
 (classified, lifeの各プロパティはユニークではなく、specificのみユニークとします)   
 本を紐解きながら書こうとしたのですが、animalsクラスの中ではリストになっていないので 
 書く場所はなさそうです。でもMainメソッドでは利用したい側なので、ここに実装することも 
 できない気がします。   
 多分インデクサの考え方そのものがわかっていません。どなたか教えていただけると 
 嬉しいです。 
 ListじゃなくてDictionaryを使えばOK 
 anml.FindIndex(_ => _.specific == "whale")でよくね? 
 インデクサてのは自作のクラスにつけるプロパティみたいなものだから、List<animals>を内蔵するクラス作って 
 >>262   すいません、理解のレベルが低いので、具体的にどう実装すればよいのかわかりませんでした 
 var anml = new Dictionary<animals, string>; 
 としてディクショナリは実装できたとして、要素追加の際 Add メソッドをどう書くのか、理解が 
 追いついていないようです    
>>263   この書き方で、求めている操作は実現できそうです 
 ラムダ式の理解が怪しいのは勉強するとして、毎回これを書くと面倒&間違えそうなのですが、 
 これは「十分に簡潔な書き方」なのか、それとも「メソッド等でさらに簡潔に書ける」のか、どちら 
 でしょうか。    
>>264   この場合、各プロパティにアクセスする際は anml[i].specific とかではなくて anml(i, specific)等 
 メソッドを介してアクセスすることになるのでしょうか? 
  >>264 は良くないよ 
 インデクサはループ内で使用されることを想定しておかないといけない 
 毎回線形検索が走るのは非効率すぎる 
  番号が欲しいのかanimalsオブジェクトが欲しいのか 
 >>266   今回の用途では速度は重要でなく、またそもそも実現方法がわからなかったので、アルゴリズムはまだまだ先の話ですね    
>>267   今回欲しいのは数字です 
  Index番号が欲しいなら
>>263 で十分じゃないか? 
 見つからなかったとき例外吐くらしいから気をつけろい 
 まちがえた。例外じゃなくて-1だ。すんまそ。回線で首吊ってくる 
 XAMLファイルからボタンを削除した場合、CSコードの方に呼び出されることのないコールバック関数の宣言が残ってしまます 
 >>273   Xamarin.Formsで使っています 
  ここでいいのかわかりませんが、質問させてください。 
 どうせJavaScript書いてるんならJavaScript側でJSONの配列に纏めてからAJAXでポストするのもアリ 
 [[[ ][ ]]]\[[]] [[[]]]],[[[ [][] ] 
 Entity FrameworkでDBへのselectとかのリトライしたい場合ってどのようにすべきでしょうか 
 普通のRDBなら一時的なエラーなんか滅多にないだろ 
 >>280   DbExecutionStrategy 
  [[[ []]]]*[[ [][] ][] } } {} [[[ 
 人間はILコードを覚えてハンドアセンブル出きるようになるべき 
 winformの左辺や上辺をドラッグするとフォームのサイズが変わらずにフォームが移動してしまいますが 
 >>288   古い脳の感覚でいえば、IL なんてハードウェアの裏づけのない、空想上の約束にしか過ぎないので、覚える気が起きない 
 x86-64 でおなかいっぱい 
  >>291   CASL くらいはやったよ、8080、z80/6809/80x86/z8000/r3000、まだ若かったからどんどん覚えることができたんだ… 
 でも、もうおなかいっぱいだ… 
  次元が違うだろ 
 >>293   ハードウェアマシン語とプログラム言語との間に、なぜ仮想マシンと仮想的な言語(IL/JVM)が採用されるようになったのか?そこが今でも判然としないのです… 
  >>294   ドライバは何故存在するの?つってる様なもんだぞそれ 
  >>295   いえいえ、階層性を全否定するわけではありません 
 「仮想マシンと中間コード」の必要性を問うているのです… 
  仮想マシンに焦点を絞るなら、ハードウェアの差異を吸収する為では 
 >>297   それならハードウェアや言語の統一を目指したほうが建設的なのでは? 
  >>298   不可能だろう 
 収斂進化により表面上似た様な機能を搭載する事はあっても、内部構造は特許なり権利なり絡んで来るから同じに出来ないし 
 JavaScript+CSS3ですらブラウザベンダ間で足並み揃えられないのに、言語の統一なんて出来る訳が無い 
  現状、中間言語側でも少なくとも JVM/.net framework にわかれちゃっているからねえ… 
 >>301   LLVM はコンパイラの中で完結しているのではないかな? 
  >>302   コンパイラ開発者はとりあえずLLVM-IRに変換すればいいし最終段で機械語に変換するか直接実行するか他の言語のコードに変換するかは自由 
 というか最初と最後だけ作ればいいわけだから寧ろLLVM-IRが中心 
  >>304   うん、それはよくわかる 
 すべての「構造化」を全否定するわけではないんだよ 
  JITコンパイルはVMとしては認めない派閥が存在することは認める 
 https://www.slideshare.net/ufcpp/ss-34533225   このスライドの67枚目の「良い例」のコードってこれで本当にいいの?   
 MSDNのParallel.Forの解説には 
 --- 
  localFinally デリゲートはスレッドごとに 1 回呼び出され、各スレッドのローカル状態に対して最後の操作を行います。 このデリゲートは、同時に複数のスレッドで呼び出される可能性があります。したがって、共有変数へのアクセスを同期する必要があります。 
 ---   
 と書いてあるから、countはアトミックに操作しないとまずい気がするんだけど  
https://msdn.microsoft.com/ja-jp/library/dd783299 (v=vs.100).aspx 
  >>312   MSDNの使用例にも 
 localState => Interlocked.Add(ref result, localState) 
 とあるしそれで正しいと思うよ 
  >>313   いやだから、MSDNのサンプル通りにするなら、
>>312 の 
 localCount => count += localCount 
 は、   
 localCount => Interlocked.Add(ref count, localCount) 
 でないとまずいと思うんですが 
  そうだねだからどうしたの 
 大して変わんねーよ 
 >>314   いや、
>>312 の言う通りと言ったつもりなんだが・・・ふらっと怖いな 
  おバカwebを鵜呑みにしない有望な
>>312 なんやからもう少し優しくレスしてやれよw 
 この例だとForよりAggregate使ったほうがいいな 
 >>318   自分の日本語に疑問を持たない君の方が怖いよ   
 「これ(A)」でいいのか、Bじゃないのかって質問に「それ」で正しいと答えたら 
 質問した方は普通は正しいのは「これ」の方だと理解する 
  C♯でJavaScriptで生成されてるチャットサイトからコメントビューアを作りたいのですが、JavaScriptが生成したHTMLを取得するのに適したライブラリってどれでしょうか? 
 >>322   追記 
 使う.Net frameworkは4.6.1です 
 Nugetで公開されてるライブラリ等でも問題ありません 
  javascriptで生成といっても生成元になるデータを何処かでリクエストしてる筈 
 ありがとうございます 
 おバカwebと言えば↓みたいに日本語と英語で全く逆のことが書いてあったりする 
 基本的にwebに書いてあることは疑ってかかったほうが良さそうね   
 日本語  
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/best-practices-strings#recommendations_for_string_usage   > 比較のために文字列を正規化する場合は、String.ToUpperInvariant メソッドではなく String.ToLowerInvariant メソッドを使用します。   
 英語  
https://docs.microsoft.com/en-us/dotnet/standard/base-types/best-practices-strings#recommendations_for_string_usage   > Use the String.ToUpperInvariant method instead of the String.ToLowerInvariant method when you normalize strings for comparison. 
 (グーグル翻訳) 比較のために文字列を正規化するときは、String.ToLowerInvariantメソッドの代わりにString.ToUpperInvariantメソッドを使用します。 
 >>326   X:webに書いてあることは 
 ○:日本語訳は 
  グラフィックの扱いについて教えてください 
 >>328   ベースの画像のいくつかの任意の位置に画像を貼り付ける描画ならそれで間違っていないけど  
https://msdn.microsoft.com/ja-jp/library/system.drawing.graphics.drawimage (v=vs.110).aspx  
https://msdn.microsoft.com/ja-jp/library/558kfzex (v=vs.110).aspx 
 どこを勘違いして悩んでいるのかいまいちわからない 
 とりあえずBitmap オブジェクトはImageオブジェクトの一種 
 他にMetaFileとかあるから 
 そしてGraphics.DrawImageメソッドを使って貼り付けてもベースのBitmap オブジェクトはBitmap オブジェクトのまま 
  >>329   私の認識は、最終的に描画したいビットマップを用意して、それを Paint イベントで 
 描画するというものです 
 Panel1_Paint(object sender, PaintEventArgs e) { 
 e.Graphics.DrawImage(canvas, 0, 0); 
 }   
 で、上記の例で Bitmap canvas; とでもして用意したビットマップに、任意の画像を 
 貼り付ける方法を知りたいのです 
 例えば256x256ピクセルのサイズで用意したビットマップに、32x32ピクセルの 
 画像を3個位貼り付けた canvas を用意したいというものです   
 「そうではなくて、最終的に描画したいものはGraphicsオブジェクトで用意して、 
 Paintイベントで毎回描画するのだ」というのが正なのかもしれません 
 Panel1_Paint(省略) { 
 e.Graphics.DrawImage(image_1, image_1_x, image_1_y); 
 e.Graphics.DrawImage(image_2, image_2_x, image_2_y); 
 ... 
 } 
 といった感じで   
 でもなんだか、毎回Paintイベントハンドラに描画処理を全部書くのは変な感じがして、 
 描画したい画像を用意するのと、実際に描画するのは別の処理ではないかと思っている 
 次第です 
  描画したい画像を用意するのと、それを描画するのは当然別の処理だ。 
 >>330   何でイベントでやるのか知らないけど複数の描画を同時にやるメソッドはなかったと思うよ  
https://dobon.net/vb/dotnet/graphics/index.html   Bitmap canvas=new Bitmap(x,y); 
 Graphics g = Graphics.FromImage(canvas); 
 Graphics.DrawImage(image_1, image_1_x, image_1_y); 
 Graphics.DrawImage(image_2, image_2_x, image_2_y); 
  あ、ごめん 
 >>331   アニメーションさせたいとか、そういう意図はないです 
 単に、描画したい画像を用意するのに、Bitmapオブジェクトにさらに画像を 
 貼り付ける方法がわからなくて悩んでいます    
>>332   イベントでやってるのは、単に参考にしたサイトで「Paintイベントハンドラで 
 処理する」と書いてあったので、それを鵜呑みにしただけです    
https://dobon.net/vb/dotnet/graphics/drawimage.html   これを見て気づきましたが、そもそもパネルに直接描こうとするのが間違いで、 
 パネルにPictureBoxを貼り付けた上でそこに置けば良いのかな? 
  >>334   どっちでも同じだと思う 
 Graphics g = Graphics.FromImage(panel1.BackGroundImage); 
 でやれば直接パネルに書き込めるし 
 ただ大きい画像を表示して画像の表示位置をスクロールさせたいのならパネルの上にPictureBoxが基本 
 とりあえず書いて動かしてみたら 
  >>334   実現したい要件だけを明確に書いた方がいいと思うよw   
 そこが明確じゃないのに「俺が考えた実装方法」ばっかり詳細に書くから 
 答える方も何を返答していいのか分からないw 
  >>336   実現したいことは、「任意の画像を任意の場所に配置したイメージを、panelに描画したい」です 
 これは明確で、それを実装するための方法でどう悩んでいるかが正しく伝わらないと、答える方も 
 こちらのレベルがわからなくて困るかと思ってました   
 実現したいことがちゃんと伝わっていませんでしたか 
 それ以前の問題でしたね。。。 
  bmp1が配置先のイメージ、 
 >>340   ありがとうございます 
 思っていることが問題なく実現できました   
 できるようになってみると、一体何を悩んでいたのか、自分でもわからなくなってしまいました 
 多分、DrawImage で書き込む先がVRAMだと思い込んでいたのでしょう 
  private void Form1_ResizeBegin(object sender, EventArgs e)  
 右上にってことは事後の方が top の値が小さくなってるからじゃないの? 
 >>343   イベント有効になっている? 
 Form1_ResizeEndのメソッドに処理が入っているかそこから確認 
     int leftEdge, rightEdge,topEdge ,bottomEdge;   
         public Form1() 
         { 
             InitializeComponent(); 
             this.ResizeBegin += Form1_ResizeBegin; 
             this.ResizeEnd += Form1_ResizeEnd; 
         } 
         private void Form1_ResizeBegin(object sender, EventArgs e) 
         { 
             this.Text = "start"; 
             leftEdge = this.Left; 
             rightEdge = this.Right; 
             topEdge = this.Top; 
             bottomEdge = this.Bottom; 
         } 
         private void Form1_ResizeEnd(object sender, EventArgs e) 
         { 
             this.Text = String.Format("{0}:{1}", (rightEdge < this.Right), (topEdge > this.Top)); 
             if ((rightEdge < this.Right) && (topEdge > this.Top)) 
             { 
                 this.Text = "OK"; 
             } 
         } 
 これで動いた 
  private void DataGridViewFilter() 
 >>346   ご回答ありがとうございます 
 イベントは有効です 
 左や上や左上への拡大縮小ドラッグは正常なのですが左下や右上がおかしいです 
 提供していただいたコードを試したのですが、何故かは分からないのですが rightEdge < this.Right がfalseになっています 
 もう少し調べてみます 
  申し訳ないけど、問題を再現できるそのまんまのコードを提示していない時点で 
 Listを値渡しすべき所が参照渡しになってたせいで 
 くっそハマったんだけど 
 こういうのって、C#の解説本1冊読めば 
 注意しろって書いてあるもんなの?   
 参照渡し云々って単語はかろうじて知ってて 
 ↓のサイトをたまたま見つけて、偶然解決出来たけど  
https://webbibouroku.com/Blog/Article/list-copy     エラーや例外にならないバグが怖すぎる・・・ 
 イメージの配置はできるようになりましたが、いろいろ触っていると、チラツキが 
 書いてませんでしたが、bg_brushは背景色の、fg_brushは前景色のブラシです 
 canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height); 
 DoubleBufferdとか触らずともこっちではちらつかないけどなあ 
 どこで何やってんの不明瞭だから当てずっぽうだが 
 https://ideone.com/s4ddqO     これが全コードです 
 空のWindowsフォームアプリケーションで生成されたフォームに、ボタンとパネル、 
 PictureBoxを配置しただけの状態です 
 パネルとPictureBoxは、DockをFillにしてウィンドウサイズに合わせてあります 
  これで、timer1のIntervalを50msにすると、はっきり分かる程度にちらつきます 
 >>361   やってみたけとちらついたりはしないねw 
 ただフレームレートが低いから滑らかに見えないだけ 
  解決のヒントにはならないだろうけど 
 >>363   環境の問題ですか・・・ 
 一応ディスプレイのリフレッシュレートは60Hz、タイマー設定が50msだと20Hzあれば 
 十分ですので、あまり関係ない気がするのですが 
 でも私の環境でしか出ないのであれば、環境依存かもしれません    
>>364   これを避けるためにダブルバッファリングをするわけですし、書き換えた後のビットマップを 
 PictureBoxに貼り付けるようにして、描画途中では貼っていません 
  >>365   いやいや何でそういう話になるのw   
 たぶん環境の問題なんかじゃなく、あなたが低フレームレートに起因する 
 カクカクした動きをちらつきだと誤認してるだけだと思うよw 
  >>367   カクカクした動きとチラつきを同一視しているわけではありません  
>>364   が書いたように、今回の例だと黒い円が一瞬消えているような感じがします 
 移動量の x += 10; をもっと少なくすれば目立たなくなりますが、それでも 
 なんとなく嫌な感じがします 
 でも言葉で説明するのは難しいですね   
 低フレームレートの認識を誤解していたようですが、インターバルを100msとか 
 50msとかだとディスプレイのリフレッシュレート(あるいは人間の認識力)に比べて 
 低すぎるので、かえって目立ってしまうということでしょうか? 
 確かに、インターバルを思い切って5msとかにしてみると、チラつきは軽減されてきた 
 気がします 
  ちょっと改変して逆にチラツキをわかるようにしてみた 
 https://ideone.com/3X8oJh   WinFormプロジェクトを新規で作って元のソースを全部消したうえで、このソースを既存の項目として追加 
 上がPictureBoxで下がPanel  
>>369   PictureBoxのダブルバッファがデフォルトで有効なのは知っているのを確認したので 
 その上でPanelはデフォルトでダブルバッファが有効だというのを念頭に入れてコードを実行してほしい 
 同じオブジェクトの動きだが、うちで確認する限りは下はあきらかにチラツキがあって上は目立たない  
>>364   >何もない状態を表示しなければいい 
 というわけで先に描画して動いた部分だけを消すという動作を実現してみたつもり 
 だったんだけど、移動量を大きくするとカクツキがどうしても目立ってしまってうまくいかない。ギブアップw  
>>369   もっとGDI+の動作を把握するとかゲームなどでの実装方法を探すかした方がいいと思う 
 残念ながら俺の知識ではここまで 
 ごめん 
 うーんw 
   >>360 のコード自体がダブルバッファリングの実装なので、 
 少なくともGDI+を使う限り、これで本当にちらつくなら何をやってもちらつき回避は不可能。   
 何度も言うけど、少なくとも俺の環境では低フレームレート特有の不自然さはあっても 
 フリッカーは確認できない   
 しつこいようだけど、俺は質問者がちらつき(フリッカー)がどういう現象か 
 理解してないだけのように思う 
 まあ、unity使ってもDirectX使ってもスクロールとかなめらかにならないしね 
 >>370   ありがとうございます 
 私が確認しても、確かに上下で明らかにチラつきが違い、下ははっきりとわかります 
 上はほとんどわからないレベルですね   
 PictureBoxもPanelも、どちらも出来上がったビットマップを貼り付けているのですから 
 同じ表示になりそうな気がしますが違いますね 
 これをちゃんと理解できれば解決できそうです 
  >>370 のコートだとたしかにフリッカーが確認できるねw  
>>372 は撤回します 
  >>372   私が「チラツキ」と表現しているのは、
>>370 が上げてくれたプログラムの 
 下側、panelで発生している現象です   
 私の理解では、
>>370 でなぜ表示に違いが生じるのかがわかりません 
 どちらも、加工後のcanvasを貼り付けているはずなのに    
>>370 でやっていることは、ダブルバッファリングではないのでしょうか?    
>>370 のプログラムを実行してみて、違いはPictureBoxをウィンドウに直接 
 貼り付けているか、panelを置いてその上に貼り付けているか、です 
 私のテストプログラムでは、panelを置いてその上にpictureBox1を置いてます 
 これが影響するのでしょうか 
  https://ideone.com/PNPIlj   蛇足だろうけどnew BitmapじゃなくPictureBox.Imageを直接描き変えるもの  
>>376   370で何をしたかったかというと「ダブルバッファリングではこれ以上改善できない」事の証明 
 >panelを置いてその上にpictureBox1を置いてます 
 それは多分関係ない。panelに背景を設定すると話が変わると思うけど 
 実際に改善するには移動量を少なくして滑らかに見せるくらいしかおもいつかない 
 消える側の方でなく進行方向側でカクついているんだよなあ・・・ 
  >>377   試してみました  
>>370 と変わらない感じですね 
 これまで質問してきた趣旨とは変わってしまいますが、   
 Graphics g = Graphics.FromImage(pictureBox1.Image);   
 これでビットマップを書き換えた後に pictureBox1.Image を書き換えていないと 
 いうことは、いちいち canvas ビットマップを用意して細工しなくてもよかったと 
 いうことでしょうか   
 で、本質ですが、ご提供いただいたテストプログラムでは明らかにチラつきの 
 改善が見られるということはダブルバッファリングは機能している、これ以上 
 気になるのであれば、それは滑らかさの問題であってチラつきの問題ではない、 
 と認識するのが良さそうですね 
  下PanelはBackgroundImage使ってるのが悪いんじゃねえかなあ 
 ああ、やっぱり俺の認識で合ってるねw 
 何だかおかしいと思ったが    
>>376   フリッカーを誤解してないのは分かったけど、
>>360 のコードでフリッカーなんか 
 発生しないってだから 
 >>350   それは参照渡しになってたわけじゃない 
 C#の参照渡しはhoge(ref list)のようにrefがつく 
 あなたがハマったのは参照の値渡しでインスタンスは複製されないということ   
 ぺらぺらの入門書とかだとわからんが、ジェネリックやクラスをちゃんと学べる程度の本なら載ってるはず 
  >>350   List固有の問題ではなく、classは全て参照型だからだ。 
 だから、=で代入しても同じオブジェクトを指すだけ。 
 ちなみにstructは値型。こっちなら=で代入したらオブジェクトが複製される。 
  >>360 をFPSと速度を変えられるようにしてみたけど 
 思ったより面白くもないし動作も滑らかじゃないなw 
 どっちにしろやっぱりフリッカーは発生しない  
https://ideone.com/E3V57h     ところで、タイトルバーをドラッグしたりすると画面の更新が止まる問題を 
 回避する方法ってなかったっけ? 
  ああ、今思ったけど、FPSは本当は実測した値を表示すべきだねw 
 >>384 はタイマーのインターバルから計算した理論値で実測値じゃない 
 グラボやドライバーの違いで発生する問題を自分のところじゃ発生しないからって頭ごなしに否定する奴はどうして生きてるんだろうな? 
 >>386   それは君が勝手にそう思ってるだけw 
 そんな問題はWin9xの時代だって存在しなかったよ 
 っていうか、言っちゃわるいけどフリッカーが発生する原因を理解していればそんな間抜けな台詞は 
 出てこない 
  なんか垂直同期(笑)とか書いてるのもいたけど、 
 DataGridViewで、複数のカラムを基準にソートするにはどうしたらいいでしょうか。  
 プロパティだけでは無理 
 さすがに垂直同期はネタだろ 
 >>389-390   複数列でのソートは、Kotlin なら、   
 配列.sortedWith(compareBy({ 列1 }, { 列2 }))    
 C# は、よく知らないけど、こういう感じ?   
 配列.OrderBy(列1).ThenBy(列2) 
  教えてください 
 >>395    名前空間A と名前空間A.B がある場合に、A.B内からAのクラスを扱うにはどうすればいいのですか? 
 >>399   クラスとは違って、やはりそうやって使うものなのですか 
  嫌なら全部同じ名前空間内に入れ込んでしまえ 
 >>405   逆に無駄な混乱が起きない? 
 同じ名前のクラスとかあるとちょっと面倒じゃない? 
  C#好きだけどnamespaceでネスト一つ深くなるのはあかんわ 
 >>406   全て自分で書くコードならいいんだけどね。サードパーティのライブラリのクラスと衝突する可能性なんていくらでもあるから。 
  >>406   書き分けのために命名が歪むのは良くない 
 NM1.Class/NM2.Class 
 NM1Class/NM2Class 
 単にプリフィクス付けるだけなら 
 名前空間があろうとなかろうとやってる事は同じ 
  >>406   むしろ同じ名前でも被らないようにする仕組みなんだが... 
  やたら長い名前付けて重複を避けるのさ。 
 >>406   自分(同じチーム)で同じ名前の違うクラスが必要になるケースは 
 少ないが(ないことはない)他人が書いたライブラリで既に使われているのと 
 同じ名前が必要になるケースなんかいくらでもあるよw   
 例えばSystem.Drawing.Point以外のPointが使えなかったら困るでしょ   
 あと、名前空間の目的は名前のバッティングの回避だけじゃない。 
 むしろ一番の目的は分類と整理でしょ。 
 名前空間が使えないライブラリは全部のファイルをデスクトップに置くできない人と同じ   
 適切に命名され適切な階層構造をもった名前空間は索引の機能を持つし、 
 コードのコンテキストを明確にする。   
 System.Drawing.PointがPointだけで2Dグラフィックの座標だと分かるのは、 
 プログラマはそれがSystem.Drawing内の型だと知っているから 
  >>412   普通にdrawingのcolorとmediaのcolorがバッティングしてるじゃん 
 それと自作のcolorとこれまた別の奴の作ったcolorがバッティングするだけでもう面倒臭くて死にそうになる 
  もっというとwpfでも別のcolor作ってんじゃん 
 >>414-415   何を言ってるのか意味がわからねいよ。 
  この程度で死ぬほど面倒臭がってたら、プログラミング自体が向いてないな。 
 >>416   バカじゃん 
 何でwinformにcolorあるのにwpfでも作ったの? 
 再利用できてないじゃん 
 役に立たないじゃん 
 名前空間分けてそれで? 
 新しいもの作ったら元気一杯に捨ててるじゃん   
 ってとこに集約する 
  >>421   反論できないならcolorクラスはもう作らせないぞ 
  全く話題になってないけどC#7.3も正式リリースされたぞ 
 >>422   > それと自作のcolorとこれまた別の奴の作ったcolor   
 > バカじゃん 
 > 何でwinformにcolorあるのにwpfでも作ったの?   
 え、なんで自分でcolor作ったの? 
  >>424   触るなって言ってんだろテメーマッチポンプか? 
 それとも別種の頭かわいそうな生ゴミか? 
  つか、同じ名前で違う用途に割り当てる方が難儀だろ普通は名前変える。 
 >>426   だから世の中にどんだけクラスが存在すると思ってんの? 
  普通の初心者だったらSystem.IOのPathとWPFのPathが競合することが気になると思う 
 >>427   自前クラスを組み込むクラスの組み合わせだけ考えりゃよかんべよ。 
  >>424   WPF「WinFormなんて爺さんのクラスなんて使えるかよ」 
  >>433   WinFormsが定年間近の爺さんだとしたらWPFは35歳無職童貞だな 
  drawimageって自分でクリッピングしないとはみ出たら遅い? 
 formとwpfで、似て非なる部品ってどうにかならんの? 
 >>433   UWP「そろそろWPFさんにはご退場願おうか」 
  >>437   メーカー「そろそろUWP用のコントロールつくっか?」 
  親フォームからnewした子フォームは親とは非同期ですか?それとも同期処理となりますか? 
 正しい言葉の使い方では非同期だけど、たぶん君が言ってるのは同期か非同期かではなくて同じスレッドかどうかだろう 
 つか、聞きたいのは、モーダルかモードレスかじゃね? 
 ここで質問するときは自分が何をやりたいかを書いてもらった方がいいな 
 >>439   >>441 の意味なら 
 方法 : Windows フォームをモーダルおよびモードレスで表示する  
https://msdn.microsoft.com/ja-jp/library/39wcs2dh (v=vs.110).aspx 
 >>440   同じスレッドなら同期ではないのですか?  
>>441   モーダルとはなんぞやレベルなので出直してきます  
>>442   参考サイトありがとうございます 
  ポータブルアプリの設定ファイルを扱うなら何がスタンダードですか? 
 >>444   セオリー通りappsettings.jsonやろ普通 
  >>444   人の手で編集するかどうか 
 するならcsvファイルかxlsがええで 
 Excel使えるから 
 xmlもiniもjsonも編集ツールが無くてゴミ 
  >>448   ほう 
 じゃあ、編集ツール出して見ろよ 
 そんな誰も編集できないフォーマットで設定とか言ってたって全く説得力ないよ 
 はい、論破 
  yamlとかtomlもまぁアリだな 
 >>450   C#ならappsettings.jsonで良くね?IOptionとの相性いいし 
  >>452   JSONが標準だとは思うし, まぁJSONにする 
 が, リスト末尾のカンマは許して欲しい 
  なるほど、今時はJSONですか。 
 >>454   その用途ならアプリ外からエディタで編集させることなんて無いだろうから、正直なんでも良いと思う 
  jsonならNewtonSoftがあるけどyamlシリアライザだとどれがデファクトなんだ? 
 jsonならNewtonSoftがあるけどyamlシリアライザだとどれがデファクトなんだ? 
 >>454   JSONで読んだり書いたりするなんてどうとでも出来る 
 まぁXML以外ならなんでもいいと思うけどね 
  前も書いたけど騙されたらダメwww 
 var exts = {".jpeg", ".jpg", ".png", ".gif"}; 
 !c.ToLower().EndsWith(extension) 
 >.NETには標準のシリアライザがいくつも存在するんだから、特に理由がないかぎり  
 >>459   今時その認識は正直ヤバい 
 今の.NETの標準のシリアライザはJSON.NET 
 Core系では完全に標準シリアライザとしてフレームワークで使われてるし、MSDNにもJSONならJSON.NET使えと書いてる 
  >>463   DataContractJsonSerializer でなくJson.net のソースは? 
  設定ファイルは、csv, yaml, json。 
 DataContractSerializerは絶対にファイルに書いちゃダメってわけではないけど、データのスキーマがあらかじめ決まってる場合には使えない 
 調べが足りずすみません。 
 XMLは全世界共通の汎用データ交換フォーマットであることが採用する唯一の理由であり、 
 XML は、JSON よりも可読性が高いから、人が見る・書く設定ファイル。 
 >>471   高くねーよ 
 タグの対応が外れたら素人に発見できんのか? 
 プログラマならともかくパンピーじゃ無理 
  XMLは可読性がわるい。つまり直観が効かない。機械向きで非人間的だから設定ファイルには不向き。 
 jsonはいい加減コメントの使用を本家が認めるべきだわな 
 >>471   XMLが読みやすいってwサヴァン症候群なんおまえ?w 
  コメントがあると独自スキーマを作り始めるからわざと外したと言っているけど病的だわ 
 そいつC#スレとPythonスレでよく見かけるが 
 >>460   EndsWithの第二引数は使えない? 
  >>476   悪名高いJSONライセンス(Good, not Evil)も作ってるからなぁ 
  XMLのタグの対応って言うけど 
 データの規模が大きくなったらXMLのほうが断然有利 
 何のデータも示さずjsonは使い物にならないと言われてもねー 
 データは自社の資産だから常識的に勝手には公表できない 
 https://www.infoq.com/news/2013/08/xml-json-performance     同じくらいのパフォーマンスというならまぁ納得出来る 
 クソみたいなパーサ使わにゃネスト深さでパフォーマンスが悪化するわけねーだろ 
  >>486   再現可能なサンプルぐらい作れ 
 今のままだと説得力ゼロで誰も納得しねーよ 
  XHTMLって死んだ技術だと思うが 
 >>489   5chに書き込むためだけに実験費用払いたくねえよ 
 こういう実験はサンプルとして人を雇わないとできないんだよ 
 思考停止ノータイムでボタン押さずに常識的に少し考えてからレスしてくれ頼むから 
  再現するJSONとXMLを一個ずつ用意すれば終わるのに自分以外の人間が必要か? 
 >>492   あんたは論外 
 パフォーマンスの話なんて誰もしてない 
 今はみんな生産性、可読性、保守性の話をしてるんだよ   
 それを測るためにJSONとXHTMLを等価変換するツールを作った   
 グループAの人達にはJSONでタグ打ちさせてそのJSONをツールでXHTMLに変換した   
 グループBの人達にはXHTMLで直接タグ打ちさせた   
 完成するまでの時間や完成したXHTMLのバグ密度など様々なメトリクスを計測したら直接タグ打ちしたグループBのほうがスコアが高かった   
 グループAとグループBのスコア差はネスト数が深いほど大きくなった   
 そういう話な 
 パフォーマンス比較なんてくだらん話は他所でやってくれ 
  >>493   人間のやることじゃないことを人間にさせて比較する意味がよくわからない 
  >>493   無駄な変数が多すぎて何を比較したいのか分からなくなってるな 
 仕事できなそう 
  テキストデータをバイナリエディタで書かせるような意味不明な実験を 
 馬鹿しかいないのか 
 こいつはなかなか面白いな, 素でこのコミュ力ならなかなかの逸材だし作っているならよく理解している 
 >>489   上が暗愚たと下も思考停止で伝染するんだな 
 バイナリデータでutf8の入力しづらさも検証したか? 
  いや面白いな 
 結局、手動で設定するファイルであるなら 
 >>503   そうでもないよ 
 VScodeでjsonの各種設定ファイルを手で変えたりするけど 
 あれがXMLだととんでもないことになる 
  深くて3階層程度でそんなに行数多くないならJSONは苦痛は少ないかな 
 >>504   そういう無意味な比較意味ないじゃん 
 xlsで設定できるアプリに使い勝手で勝てるの? 
  >>506   それが無意味に思えるなんて幸せなやつだな 
  >>507   だってjsonもxmlもいらねーもんよ 
  >>506   xlsとかwwwバージョン管理システム使ったことすらなさそうだな 
  残念だけどXMLはクソオブクソだけどXLSとかCSVはそれをはるかに上回るクソなの 
 >>493 の実験は「XHTMLのデータはJSONで記述するには適さない」ということを示しているだけだな 
 そりゃXHTMLのスキーマはXMLで表現しやすいように設計されてるんだから、 
 JSONだと属性とコンテンツの区別がなかったりして記述しづらいのは当たり前だ 
 JSONにはJSONに適したスキーマ設計がある 
  >>519   Gitでsqliteの差分見るのかい? 
  >>513   XLS: バイナリ, 標準化されてない(されてるかも知らんが概ねExcelないと読めん) 
 CSV: not well standarized 
 XLSX: zip圧縮されたXMLじゃん 
  >>520   dbの比較は簡単 
 バージョン管理の機能にはないけど 
  >>504   VSCodeのセッティングはネストが浅くて比較的読みやすいし、VSCodeによるコード生成がうまく機能してるからね 
  >>521   ビジネスでExcel入ってない環境とかあるの? 
  エクセルからマスターや設定をインポートするようになってるシステムは壊しそうで怖いわ 
 >>522   おれsqliteのバイナリをテキストエディタで書き換える能力ないのよ 
  >>524   DB同士のデータの比較したことねーの? 
  >>517   そこの会社の内部の抗争があるんだと思う   
 いまどきxhtmlを使ってる派閥がいて 
 そいつらが不利になったので意味不明なテストでxhtmlすげーをやって 
 何も考えないやつがそれに賛同したと   
 エジソンが高圧送電は危険だと言って動物を殺す実験をしたようなもの 
  >>525   開発は仮想のLinux上とか普通にあるから 
  >>528   json vs xmlの比較とは全く異なる次元のものを持ち込んで比較しようとするクズ 
  >>533   こいつdotnet newすら打ったことなさそうだな 
  >>532   そっちは完全に編集するツールがないじゃん 
 あってもゴミみたいなのしか 
  >>533   開発用システムでXLS読むために入れるとか本末転倒 
  >>536   お客さんに何で編集したいですか? 
 って聞いてみろよ 
 Excelでできるって言ったら大喜びするぜ 
  >>535   専用ツールがないと編集できないものなんてイラネ 
  >>506   Excelの場合はそもそもツリーデータ構造を表現するためのスタンダードなフォーマットが無いので比較する以前の段階   
 まずはツリー形式のデータ構造を表現するためのフォーマットのデファクトスタンダードを業界全体で決めてくれ 
 比較はその後に回していいんじゃないかな 
  vscodeのsettings.jsonとか見せたら発狂しそう 
 >>537   客は会社のシステム部門なんで別にExcel喜ばれないですむしろ殴られそうです 
  あとXLSXはともかくXLSをC#から弄ったことないんだけどExcelなしで読めるの? 
 >>517   やっとちゃんと読んでレスしてる人が来た   
 確かにもともとXMLをベースに考案されたデータ構造なのでXMLに有利と言えるかもしれない 
 しかしそれを認めると議論の発端である「jsonはxmlより優れている」という命題を「対象次第ではxmlのほうが有利である」という命題で最初から否定することになってしまう 
 本当に「jsonはxmlより優れている」なら対象がXHTMLだろうとなんであろうともjsonのスコアが高くなっていなければおかしい 
  なんでもかんでもExcelでやりたいVBAer()さんはVBAスレにおかえりください 
 >>543   ExcelCreator使って、Excelのインストールされてない環境で読み書きしてた 
 昔々ね 
  >>465   横から失礼。マイクロソフトの人もそう言ってるよ 
  >>543   OLEDB使えばExcelインストール無しでも読めるで 
  この手の議論はUI入力とデータ保持を同一のものとして考えちゃうから平行線だわな 
 >>544   キミが変なこと言ってるだけ   
 業務での作業性、操作性においてスマホよりPCがすぐれてるという人に対して 
 PCではタッチ入力できないとかそんな難癖つけてるだけ 
  >>478   EndsWithに第二引数とかあったのか 
 いけるわ!ありがとう 
  >>550   それ以前の話でしょw   
 設定データをユーザーが編集したいなんてかなり特殊な前提でありかつ質問者も 
 そんな要件を一言も上げてないのにアホかと、   
 .NET標準のシリアライザではなくあえて外様を使う理由はと聞いて、返って来た明確な答えは 
 結局「そっちの方が目新しいから」だけ。   
 中学生じみてるよと言ってるそばからこれだ。 
 プログラマ板みたいな話になっちゃうけど、本当今じゃプログラマって知能指数が低い奴が 
 やる仕事になってることを実感するよ 
  json,.netを使うのは早くて使いやすいからだと思う 
 >>556   どういう観点で見たときの使いやすいなのか説明が無いよね? 
  自分が json を使うとしたら、 
 結局Windowsのフォームアプリの設定ファイルは何が適してるんだよ 
 >>562   そもそも今時フォームアプリなんか採用する時点で全力で時代に背を向けてるんだからどうでもいいよ 
  >>562   configファイルにjson形式で書き込む 
  >>564-565   質問者は「ポータブルアプリの設定ファイル」と言ってる。   
 ポータブルアプリがUSBメモリに入れて持ち歩くような物のことを言ってるなら、 
 Settingsは明らかに不適切   
 あと、個人的にあんまりアプリケーション設定使ったことないんで勘違いしてるかもしれんが、 
 これって結構制限も多いしいろいろ面倒だよね 
  質問者ですが、こんなに荒れてしまうとは、、、申し訳ない。 
 ユーザー定義リソースにしてexeに直接書き込むって方法もあるよ 
 >>568   USBで運ぶポータブルアプリ程度ならApplicationSettings保存でもいいんじゃないの? 
  アプリケーションスコープにするとアプリから書き込みできないよ 
 >>571   でもアクセスの速度違うときあるからね。 
  すいません。 
 ケツの穴から手をつっこんで奥歯をがたがたみたいなBよりA 
 >>574   どっちでも動きゃいいだろ 
 さっさと完成させろよ 
  >>574   // form 
 void btnSaveInitialSettings_Click(object sender, EventArgs e) { 
 try { this.SaveInitialSettings(); } 
 catch(...) { ... } 
 }   
 void SaveInitialSettings() { 
 var initialSettings = this.GetInitialSettings(); 
 var reaction = 
 this.initialSettingsController.SaveInitialSettings(initialSettings); 
 reaction?.Invoke(this); 
 }   
 // controller 
 Action<IInitialSettingsView> SaveInitialSettings(InitialSettings initialSettings) { 
 this.initialSettingsService.SaveInitialSettings(initialSettings); 
 return view => view.Refresh(); 
 } 
  初心者は出来上がってから検討すりゃいいんだよ。 
 まず終わらせろ、Facebookのにいちゃんも言ってたべな。 
 Facebookにいちゃんが誰かわからんがそいつが言うまず終わらせろ、とお前が考えるまず終わらせろは別物だと思うぞ 
 >>580   リファクタリングなんか完成した後にバージョンアップする機会があったらやればいいんだよ。 
  将来が有るかどうかなんて、売れてから考えろw 
 >>581   そうだよね 
 エッチな絵が一枚も表示されないのにリピーターがいることを想定してる 
 なんてピンボケもいいとこだよね 
 割とマジで 
  仕様通りの動きだけど汚いコードと 
 >>584   そりゃ仕様満たしていないなら比較以前の問題だわな 
 仕様満たして完成までの期間で比較とかならともかく 
  まあ、熟練者になれば、素早く仕様通りのコードを綺麗に仕上げて来るからな。 
 リピーターが多い汚いコードと 
 世の中の多くのバカが勘違いしてるんだけど 
 洗練された華麗なコードとインデント揃っただけの綺麗なコードを混同してるばか発見 
 >>574   UI(Form)がモデル(何か仕事をするクラス)の参照を持つのは問題ないが、 
 逆は良くない。理由は、   
 (1) 役割分担があいまいになる 
 厨房の人間が1分おきにウェイターに注文を確認するのは適切な役割分担と言えるか?   
 (2) つぶしがきかない 
 Formの参照を握ってFormのメンバーを操作するクラスは、UIをWPFやUWPに 
 変更しても使いまわしできるか? 
  >>577   一読で理解できる知識がないのですが、勉強してみます。 
 ありがとうございます。 
  >>590     UIがデータ格納用クラスのインスタンスを生成 
 UIがプロパティを介してデータ格納用クラスの変数に代入 
 UIがコントローラにデータ格納用クラスのインスタンスを渡す   
 みたいな感じでよろしいでしょうか? 
  >>592   >UIがデータ格納用クラスのインスタンスを生成  
 誰がモデルのインスタンスを生成するかはケースバイケースだしどうでもよろしい   
 >UIがプロパティを介してデータ格納用クラスの変数に代入  
 重箱の隅をつつくようだが、オブジェクトのプロパティやメソッドを操作する時に 
 「データ格納用クラスの変数に代入 」なんていう内部の実装を意識する必要はない。 
 必要はない、というか意識しなくても使えるように作るのがカプセル化。   
 >UIがコントローラにデータ格納用クラスのインスタンスを渡す  
 俺がMVCを理解してないだけの可能性もあるが、少なくともWindows Formでは 
 VとCを分けたりしないのが普通と思う。コントローラなんてイラネ 
  話蒸し返して悪いんだが、xmlシリアライザーって今使ってるとやばいの?業務アプリの設定ファイルほぼこれで今までやってたんだが。。 
 csvとJSONなら圧倒的に後者のがメリットあるけど、 
 >>594   業務ドカタ系でJSONなんかほとんど無いから安心しろ 
 客サイドは情シスですらJSON何それとか平気で言いやがるしOSSのライブラリが必要なのもネック 
  >>596   Excelで編集できるできないって違いもあるのに 
 どこが「圧倒的」なの? 
 根拠もない主張を強く推すなよ 
 願望だろ?お前の 
  PCのiTunesって曲の情報管理全部XMLだよな 
 どうにかならんのか  
 Ant, Maven とか、Java系は、XML。 
 >>594   え?全然やばくないよ 
 むしろ安定した手堅い選択肢と言っていい 
 JSONを設定に使う製品はむしろ少数派 
  >>600   >JSON を設定ファイルに使うのは、JavaScript を使ったもの 
 最近のC#もそうですが 
  >>594   ヤバイってどういう状況? 
 殺されるの? 
  >>602   project構成は不評で結局xmlに戻ったね 
 ASP.NETのappsettingsはボイラープレートがjsonになってるけどxmlやiniもサポートされてる 
  素のJSONはコメントが使えないので設定ファイルには使い辛い。 
 川俣さんのことを馬鹿にする人が2chには多いけど、この記事の趣旨は正しいと思う 
 http://www.atmarkit.co.jp/fdotnet/extremecs/extremecs_18/extremecs_18_02.html     特定の技術への信仰と「俺スゲー」っていう間抜けな自己陶酔が結びついてる奴ってよくいるし、 
 このスレにも時々そんなのが出るけど、そういう奴のいうことは真に受けない方がいいですw 
 つか業務で使うなら余程のことがない限り枯れた技術の方が安定する 
 COBOLは実際優れてるんだよなあ 
 工数が低減できるかどうかよりも見積が精確にできることの方が管理者にとっては重要ってわけだね 
 大体この時間にABENDしますって 
 現場運用だと稀によくある 
 >>594 だけど 
 蒸し返した話にレスくれてありがとう 
 自分の用途にはxmlでも問題なさそうでとりあえず安心した 
  SVGやMathMLのような外部の名前区間が出てくるとか、Xamlのようにかっちりしたものを書きたい場合はXMLが有利 
 >>593   VCわけないんですか。 
 うーん・・・。 
 いろいろな設計方法があるということですね。   
 インスタンスの生成順として 
 A→B 
 A→C 
 とAからCにBのインスタンスを渡す方法は分かるのですが、   
 C→A 
 A→B 
 とインスタンスを生成した時、CにBのインスタンスを返すことって可能なのでしょうか? 
  >>619   「返す」ことにこだわりがあるのなら結構難しい 
 そこにこだわらず、単にCからbを扱えれば良いのならa.bでアクセス可能だろう 
  >>619    DIコンテナとか諸々のイディオムを知らない初心者だからまぁしゃあない 
 >>622   まず「返す」の意味が分からないんだよな  
>>619   何のためにその実装が必要なのか、まずはそっちから 
 普通は複数の派生インスタンス扱いたいのならどこかでまとめて管理する方が楽 
 横に伸ばしていくんじゃなく中心から引っ張っていく形 
  馬鹿なこと考えないでジャンケンゲームでも作ってろって 
 >>619   今時のマルチレイヤな設計ってのは、「汚い場所」をどこかに決めて、そこが依存関係の解決を一手に引き受けるようにするんだよ 
 で、他の部分は「汚い場所」に直接依存しないようにするの  
>>623 の例でいうと、Cを「汚い場所」とするならAがCを直接参照するのは良くなくて、 
 AからCのメソッドをコールバックしたいんだったらインターフェイスを介して呼ぶようにしたりする 
 汚い場所をどこにするかだけど、フォームアプリならフォームだったり、Webアプリならコントローラだったり 
 処理の起点となり、かつ、どのみち単体テストが困難な場所を選ぶのが一般的だ 
  なんだか要領を得ないからわからないけど 
 MVC をわかってないような奴に、何も教えられない 
 Railsってモデルがフォームの構造に依存するからなあ 
 >>632   何から始めても理解できない 
 分離するどころかやればやるほど結合が強くなる現実に打ちのめされるだけ 
  やってみたけど難し過ぎて手に負えなかったってことだね。 
 >>632   Vue.jsあたりかな 
 XAMLはテンプレートやコマンドバインディングが複雑すぎて本質を掴みづらい 
 WebのMVVM系フレームワークのほうがずっと見通しが良くてMVVMの本質を素直に実装してる 
  まずはUNDOなりマクロを実装するのに何が必要か 
 >>623   アクセシビリティに一貫性がありませんってエラーが… 
 internalでインスタンス生成するとOKなんですが、フォームクラスはpublicで宣言してるんですけど。 
  >>625   ご指摘を受けてメインのフォーム上でインスタンス管理しようとしているのですが、 
 アクセシビリティの一貫性というエラーが出てきています。   
 public partial class ExaminationForm : Form 
     { 
         public InitialSettingForm initialSettingForm; 
         public InitialValues initialValues;   
 で最後の行にアクセシビリティ一貫性のエラーが・・・。 
 3行目のpublicをinternalにするとエラー消えるのですがなんでだろう。 
  そのビューの入出力項目と隠し項目とユースケースを抽出するだけだよ 
 >>638   InitialValuesクラスがinternalなんだろ 
 publicに変えれば意図通りになる 
 言っちゃ悪いけど正しい設計とか気にするレベルじゃないと思うよ 
 まずは汚くてもいいから一本何か形にできるようになってから考えればいい 
  >>641   ああああああああ! 
 そこなのかあああ!   
 classってデフォルトでinternalになるんですね。 
 というかinternalって省略されるから気づきませんでした。 
 ここで半日費やしてたのでものすごく助かりました。 
 ありがとうございます。m(__)m 
  >>641   一本ゲーム作ったんですが、form1(初期値)、form2(ゲーム)にほとんどぶっこんだオブジェクト指向ほぼ無視プログラムになってしまったので、 
 ゲーム内のデータ管理とform2だけでも分離しようとして悪戦苦闘しています。   
 はるか昔にBasicやったぐらいなので、インスタンスの参照渡しとかその辺がうまく実装できなくて・・・。 
 勉強用に買った本にもインスタンスの参照渡しなんて全く書いてないし・・・。(´・ω・`) 
  あれでも 
 //インスタンス生成 
 >>644   すいません。ゴチャゴチャしてた変数名整理したらエラー消えました。。。 
 お騒がせしてもうしわけありません。 
  >>643   C++ 以外のすべての言語で、インスタンスの参照渡しだろ 
  >>647   初代MSX-Basicでゲーム作ってた頃以来のプログラミングなので(;^_^A 
  アホな質問ですが、 
 >>649   どれもダメ 
 initialValueをそのまま使わずに設定値を使うクラスにコピーして 
  >>650   えええ!   
 データはデータクラスで一元管理じゃないんですか? 
 そうしないとフォームなどからデータクラスを変更した時に、 
 コントロールクラス側でその通知を受け取って 
 もう一度データクラスからコントロールクラスにコピーする仕組みが必要になってきますよね。 
  自分がアホだと分かってる割には自分の判断を信じてるのな 
 勉強のためにプロが書いた大きなプログラムを見たんだが 
 >>652   いや、最初はコピーする仕様だったんですが、 
 データクラスで一元管理をするアドバイスを受けて変えたところです。   
 コピーするんなら元の仕様のままでよかったのかということに。 
  >>653   当然だよ。変数使うには課長級の決済が必要。変数管理台帳ファイルに全部記録されている。 
  >>655   そうか、公開用にリファクターしたのかな 
 いちいち一覧表見ないと何処につながってるか見えないなんて不便だもんね 
  >>654   変数名が妥当かどうか聞いてるんじゃなかったの?w   
 そのInitialValueとやらのクラスを使う実装方法が妥当かどうかは実現すべき仕様を誰も知らないので 
 誰にも分からないと思うよw   
 ローカル変数の命名に関しては、型名InitialValueをそのまま変数名にしても 
 何をやってるのか理解できるような文脈なら変数名をivにしても同じことでしょう。 
 だったら短い方がいい。   
 ただしローカル変数でも説明的な名前の方が適切な場合もあるので馬鹿の一つ覚えはダメ。 
 情況に応じて柔軟に 
  int[] intData = new int[10]; 
 =を含まない条件式。 
 >>660   せめてCountメソッドにしとけと思うぐらい。 
  >>660    async/awaitって呼び出しのネストが深くなると、大元の呼び出しで波線が立ってすごくもどかしいんですが、気にしなくていいでしょうか?それとも呼び出しのやり方を見直したほうがいいのでしょうか 
 >>660   カウントをCountメソッドにして引数に突っ込むラムダ式を閾値によって切り替える 
  ごめん。Count以外の処理もあるんだね。おらの回答は無視してくれ。 
 dataGridViewのデータソースをBindingListにしています。 
 >>664   波線が立つのは単にasyncなメソッドをawai付けずに投げっぱなし呼び出しの警告出ているだけじゃないのか  
>>665 の言う通りネスト関係ない 
  すいません。ちょっと教えてください。 
 >>670   Form1 f = 「new」 Form1(); 
 新しいForm1を作ったんだから前のはVisible=false;のままで表示されていない 
 例えばこうする 
 //Form1にて 
 Form2 f = new Form2(this);//Form2のコンストラクタの引数にForm1の参照を渡す 
 f.show(); 
 this.visible=false; 
 //Form2にて 
 private Form1 form1; 
 //コンストラクタ 
 public Form2(Form1 f) 
 {  
  InitializeComponent(); 
  form1=f; 
 } 
 //戻る処理 
 form1.Visible=true; 
 this.Visible=false; 
  >>670   目の前の問題を解決するよりまずインスタンスとは何かちゃんと理解した方がいいねw 
  もっと簡単にこれでもできるよw 
 class Program 
 C#初心者です。 
 >>677   どうでもいい 
 そんなミクロなレベルの速度が問題になることはない 
 IO一つで跡形も無く吹き飛ぶ 
  くだらねーパフォーマンスとくだらねー暗号化の話題が大好きだよな 
 パフォーマンスは重要だよ 
 >その結果、コンピュータの仕組みからしたらとてもありえないことを言い出す高卒様が出来上がるんだ 
 新しいものができたってのならいいけど、言うこと為すこと高卒様じゃあ・・・・ 
 >>677   条件次第なのでなんとも言えない 
 インライン展開とかCPUのキャッシュとかまで関わってくる可能性がある   
 気にしなければいけないほどパフォーマンスを気遣うなら、JITの結果を比較したほうがいいけど、多くはそこまでするほどではない 
  >>685   いや、初心者がググった知識で背伸びしてるんだろ 
  >>676   ありがとうございます。 
 私アホでした。 
  public class TargetOperation 
 最後の行で 
 >>689   } 
 } 
 return target; 
 } 
 じゃなくて 
 } 
 return target; 
 } 
 } 
 じゃね 
  デリゲート使うくらいならストラテジパターン使うけど 
 DataGridViewのセルのValueを取得すると、既定の型がObject型なんですが、既定の型をstringに変更する方法はありますか? 
 C#初心者でフォームアプリを作っているんですが 
 >>697   前者 
 デリゲートは現段階で呼び出し先が定まってなくて後でアドホックに処理を差し込みたいときに使うも 
 最初から呼ぶ相手が決まってるならそんなまどろっこしいことをしないで直接メソッドを呼べばよい 
  >>697   騙されちゃダメwww 
 そういうのはイベントで実装する。   
 何故か? 
 前者で作っちゃったら、その外部デバイスをポーリングしてるクラス(普通はそのデバイスの名前を付けると思うけど)、 
 前者で作っちゃったら他に流用できないよ 
  >>700   YAGNI 
 もしそれが必要になったらそのとき変更すればいい 
 そして、ほとんどの場合において結局必要にならない 
 職業プログラマじゃないとアプリのコードを目にする機会って少ないから、 
 .NET Framework自体のクラスのような不特定多数向けの設計を真似してしまいがち 
 一般に、アプリケーションプログラミングにおいては無駄な拡張性は極力組み込まずに必要最小限のコードでコンパクトに実装するのが正解 
 そのほうが結果的に変更時のコストも小さくなるよ 
  >>701   YAGNIなんか関係ない 
 アホか   
 必要もない仕様変更を想定して寛容に複雑にするのは愚かだが、 
 抽象度の高い(つまり汎用性も高い)方のクラスにより具体的(つまりそのプログラムでしか利用できない)クラスの 
 参照を持たせて依存させるなんてもっと愚かだ 
  >>702   自己矛盾してるね 
 依存させるのが何故愚かだと思う? 
 理由は、「必要もない(質問者のレスにない)仕様変更を想定しているから」に他ならないだろ 
  >>703   たぶん言っても無駄な人だと思うけど、普通はViewをModelに依存させるように作るのであって 
 ModelをViewに依存させない(Modelの参照をViewが持ってはダメ)なのと同じ。   
 こんな基本が分からない奴が回答する側に回ってはダメだと思うw 
  >>704   いかん酔っぱらって逆を書いちまったw   
 × (Modelの参照をViewが持ってはダメ) 
 〇 (Viewの参照をModelが持ってはダメ) 
  あと、仮に
>>700 の想定が正しいとするなら、抽象化すべきはクラスBではなくAの方でしょ 
 例えばAのデバイス依存部分だけをIDeviceインターフェイスとして切り出して委譲するとかね 
 Aにイベントを持たせるんだと、別のデバイスを監視するクラスCができたら 
 AのイベントとCのイベントをそれぞれ個別にイベントハンドリングしなきゃいけなくなる 
 ちゃんと頭使おうね 
 >>705   揚げ足取るようで悪いけど、Viewの参照をModelが持つこと自体は何の問題もないよ 
 というか、そうしないとMからVへの変化通知が実現できない 
 イベントを使うにしても結局参照は持ってるよ 
 MVPといって、IViewのようなインターフェイスを通してMからVを呼ぶパターンもあるね 
 なるべく疎にしたいのは型同士の依存関係の話で、参照するのがダメなわけじゃない 
  >>706   そういうのをYAGNIっていうんだよw 
 本当に何もわかってないねお宅w 
  まあ質問者の
>>697 に言うけど、実際書いてみれば 
 イベントで実装した方がずっとコンパクトかつ可読的に書けることが分かると思うよ。   
 Bが仮にAでしか利用しないクラスだとしても、普通はAはイベントを発行するだけ、 
 Bはそのイベントを受信して何か処理をする、ってやった方がずっと分かりやすい 
 メソッド一つだけならイベントでもいいけど、少なくとも
>>697 はメソッドが複数あるときもあると言ってるんだからイベントは不適切でしょ 
 インターフェイスで纏めたほうが扱いやすい 
 あえてそこにインターフェイスを噛ませる必要があるかどうかはYAGNIの問題だが、それとはまた別の観点の判断だ 
 プログラムで使用するテキストデータを、excelで管理しています 
 具体的にどういう手順を踏めばよいのでしょう? 
 静的に呼びだすなら5つのAPI 
 >>701   こういう奴が頻繁に現れるのを見るとYAGNIの罪は大きいなって思う 
  別に複数でもそんな多くなければイベントでも問題ないんじゃねぇかな 
 >>714   ありがとうございます、それぞれのAPIについて調べてみます 
  結局バランスの問題だな。もちろん人によってバランス違うけど。 
 >>718   極端なのは君だと思うぞ 
 まさかクラス間の依存関係に全部いちいちイベントを噛ましてるってわけではないよね 
 その上で、この例において特にイベントを使うのが適切だと判断した合理的な根拠は? 
 少なくとも
>>697 のレスからはそれを具体的に読み取れないから、根拠のない仮定に基づいた無駄な拡張性だと言ってるんだけど 
  >>691   ( ゚д゚) 
 ありがとうございます。 
 その通りです。 
 一晩見直したのに気づかなかった・・・。 
  >>697 です 
 みなさん色々なご意見ありがとうございます 
 基本的にはイベント等で疎結合にしたクラス作りが望ましいが、ケースバイケースで状況に応じてどちらの実装でも問題はないといったところでしょうか 
 レスして頂いた内容は非常に参考になり、まさにその両者のいい分で自分もどちらが最適解なのか悩んでいましたが、結局状況を判断出来る私が決めて実装するしかないのかなと思いました 
 途中インターフェースをかましてすれば良いとのレスがありましたが、どういった実装をすればいいのか全くわかりませんでした。この方法でも検討してみたいので、すみませんが具体的な実装を教えて頂けないでしょうか 
  >>721   interface IAlert { 
 void Set(Severity severity); 
 void Unset(); 
 } 
 たとえば、あるアラートに対してこういうインターフェイスを定義する 
 クラスAはこれをコンストラクタで受け取り、温度センサーの値が閾値を超えたら危険度に応じた引数でSetメソッドを呼ぶ 
 温度が低下して閾値を割ったらUnsetを呼んで解除する 
 このIAlertインターフェイスを、具体的な実装、たとえばパトランプを操作するクラスが実装するわけ 
 こうしておけば、 
 パトランプじゃなくて画面でアラート状態を表示したくなったときにAに手を入れずにIAlertを実装するだけで済む 
 もちろん、パトランプしか想定しなくていいなら直接パトランプクラスのメソッドを呼んでもいいし、Unsetが必要ないならイベントでもいいかもね 
 ただしイベントの場合はBからAへの密結合が発生するとか、それを避けるなら追加で橋渡しのコードが都度必要になるといった懸念点もある 
  >>722   早速ありがとうございます 
 ちょっとまだピンときませんが、じっくり検討してみたいと思います 
  BASICしか経験がないど素人がC#始めたんだけど、 
 >>725   真っ先に直さなきゃならないのは、「スコープの広い配列にインスタンスを入れておけば、どこからでも全てのデータにすぐにアクセスできていいじゃん!」と思っちゃう点でさあ 
 C#のスキルの無さから設計までメチャクチャにしてるんじゃないのかねえ 
  BASIC系って悪い習慣を覚えちゃうよね 
 >>722   それだと温度センサーがアラートをコントロールしているように解釈される 
 常識的に考えてアラートのコントロールは温度センサーの仕事ではないだろう 
 これは名前の問題であってインターフェースよりイベントを使えと言ってるわけではない 
  >>726   その通りです。 
 すべての変数をどこからでもアクセスしたい衝動にかられます。   
 Aのクラスの機能がA1とA2に分化できるから分けようと思うと、 
 AはCを参照してたからA1とA2両方にCのインスタンス参照を渡そうとなり、 
 結局機能は分けれたものの、どのクラスがどのクラスを参照してるのかがよくわからなくなってきました。 
  値1、2個を渡すのは簡単なんですけど、 
 >>730   オブジェクト指向で参照を共有することは少ない 
 共有するとしてもイミュータブル、ステートレスにして共有によるデメリットを消した上で共有する   
 長時間生存するインスタンスがあちこち参照しあって状態を刻々と変化させていくような設計が最悪のパターン 
  >>719   それは君が経験値不足なだけ。
>>697 である程度は想像できる。 
  >>731   なるほどCを参照しているA1、A2はCと独立したオブジェクトじゃなくなってしまいますものね。 
  Target[] target = new Target[Constants.MaximumNumberOfTarget]; 
 ターゲットをクリック出来たら消す 
 >>736   何が駄目なのかわからない 
 何か縛りプレイしているのならその前提から出してもらわないと 
 たとえば特定のデザインパターンの勉強が目的だとか 
  どうせこの人は一生治んないよ 
 listやdictionaryを使ってないのかな 
 target class 
 >>738   縛りはなかったのですが、見やすいコードということを考えすぎてました。 
 まずは動くコード書いて、人の書いたプログラムも見ながら勉強していきます。 
  >>740   最初Dictionay使うつもりだったのですが、 
 構造体かクラスに変数をまとめたほうがよさそうだったので今の形になりました。 
  >>736   何故そのような結論になるかわからない提示された仕様からだとテキスト出力クラスを作ろうって気になるかな 
 targetの渡し方はコンストラクタやメソッド引数にするかは自由   
 Hoge hoge = new Hoge(); 
 bool Output(){ 
   hoge.Set(target); 
   return hoge.Output(); 
 } 
  >>742   複数のTargetを管理する専用のクラスを書くんだよ 
 Formが全てのTargetを管理するのはオーバーワークだろ 
  >>729   貴様にはpublicを禁止する呪いを掛ける 
  そしてinternalを使い始めた! 
 と、すでに出来あがったゴミグラマが申しておるようですが 
 >>746   はい。 
 それやってみたのですが、フォーム2から初期設定値を初期値格納クラスに入れていて、 
 初期値格納クラスの参照、Targetクラスの参照、Targetクラス管理クラスの参照が入り乱れて書いている自分でもわけわかめになりました。 
 二つのプログラムを見比べた結果Form1でTarget管理させたほうがまだましなのかと・・・。   
 もっと規模の大きなプログラムだと違ってくるのかもしれないのですが。 
  >>751   小さいの組み合わせてでかいの作るんだから 
 でかいと組み方が変わるなんて言ってるやつは 
 そもそも下手クソなんだよ 
  素人が責務に応じたクラスの分割を理解するなんて 
 >>754   素人でも初心者でもわかる奴は最初からわかってるけど? 
 むしろ数ヶ月も時間をかけてわかって気になってるおまえが何もわかってないよ 
  >>754   理解しやすい構造になるわけだから素人も安心 
  >>755   猿には聞いてねえから飼育員さんとママゴトしてな 
  >>756   んでいつまで続けるの? 
 ウザくなってきたからスレ潰しするのもいいかなと思ってる 
  バカ、スレ潰し宣言wwwww 
 リストボックスの値を取得するのって 
 >>761   まず「Gender」が2つ出てくることに違和感はないのか 
 ListBoxは使ったことないけど  
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox.selecteditem (v=vs.110).aspx 
 string GenderStr = this.Gender.SelectedItem.ToString(); 
 にでも変えれば動かないか? 
  >>761   すいません。 
 自己解決しました。 
 大分疲れてきたようです。 
 寝ます・・・。 
  >>763   すいません。 
 ご親切にありがとうございます。   
 値を出力するクラスにwriteline書き忘れてました・・・。 
 値の取得は上のコードでOKでした。   
 朝から一日プログラミングして悪い頭が限界を超えているようです。 
 今日はもう寝ます。 
  >>714   いろいろ調べてみましたが、私が探している解決策とは異なったようです 
 一番知りたいのは、埋め込みリソースに対し、通常のファイルアクセスのように 
 アクセスする方法はないのか、という点です 
 (XLWorkbookのコンストラクタには、ファイルパスを与えますので) 
 今回のデータは参照のみ必要ですので、リソースとして埋め込んだ場合に 
 変更が効かなくなっても問題ないと考えました   
 712で書かれた内容は、「自分でファイルフォーマットを定義して、それを読んで 
 切り貼りするコードを自分で書くべし」、ということでしょうか 
 そのために有用なのが714のAPIということですか 
  ないよ 
 >>768   ありがとうございます 
 少し調べてみた限りですと、closedXMLはストリームからの読み込みはサポートして 
 いないようなので(当然の気もしますが)、テンポラリファイル等別の手段を考えます    
>>769   「リソースにアクセスしたい」ではなく、「ファイルにアクセスするメソッドにリソースを 
 渡したい」でした 
 768のおかげでそのまま実現するのは無理とわかりましたので、疑問としては解決です 
  Json保存すると漢字が化ける。なぜばけるの? Jsonの問題なのか、StrreamReader 
 文字列の実装には内部的にUnicodeで扱うものとバイト列として扱うものとがある。 
 JSON はJavaScript だから、UTF-8 
 >>773   何言っても通じないとは思うが、お前の愛するRubyの文字列の扱いは他と異なっている 
 Rubyの文字列は内部的にはエンコーディング情報を持ったバイト列だ 
 特にWin環境では非常にトラブルの原因になりやすいゴミ仕様である 
  Ruby は各文字列に、エンコードを持てるから、すごい 
 >>775   うん。何一つメリットのないカス仕様だね。 
  >>770   ClosedXML.Excel.XLWorkbookコンストラクタにはStream取るのもあるんだけど 
  >SHIFT_JIS を使う言語は、まずない。  
 >一方で前者は外部から文字列を読み込んでも内部的にはUnicodeだから読み込んだ文字列に対して処理を行う際に文字コードに悩む必要はない。  
 >後者はプログラムを書いている時の文字コード, 入力された文字コードを常に意識せねばならん。    
 前者はDefault unicode 
 後者はDefault bytecode 
 ということであれば、shift_jisなど他にもたくさんの文字コードが来る可能性があるのだから、コードを意識することにあまり違いはない 
 と思うが、、    
>>775   その考え方の方が正しいと思う。 
 そもそもunicoeをディフォールトにするんだったら、漢字はそのまま表示できるんじゃないの? 
 其れなのにXcelは何でわざわざSHIFT_JISをつかうんだろ。 
 Windows も内部的には、UTF-16 だろ。 
 >>780   Stringのエンコーディングが固定なら、IOのときだけ文字コードを意識すれば済む 
 素人のちょっとしたツールのレベルならともかく、一般的にはIとOの間(P)の部分がプログラムの殆どを占めるんだよ 
 Dictionaryのキーの文字コードが混在してて、存在するはずのキーの検索に失敗するとか悪夢だろ 
  >>778   Excelは言語じゃない。 
 日本語版のExcelのCSV出力時の文字コードがShiftJISなのは単に過去との互換性のため。 
 ちなみにBOMが付いていればUTFのCSVでも読み込める。 
  漢字が文字化けするのは保存した文字コードと読み込んだ文字コード指定が違うから 
 sqliteとの連携に関して質問です 
 >>787   どこもクソも決めるのはお前 
 SQLiteはDBのファイルパス指定して開けるだろ 
 SQLiteは普通のDBMSと違って、システムのどこかに共通のデータストアがあるみたいな考え方をしないんだよ 
 ファイルを名指しするのが基本 
  >>785   「文字コードなんて意識する必要はない。機械に任せたほうがいい。」とは考えないのだろうか? 
 そもそもテキストとは文字コードによって表現された文字の集合体だ。テキストを保存するIOに 
 たいしてわざわざ文字コードの情報を削除して保存するのは何故なのだ。正気の沙汰とは思えんな。 
  >Dictionaryのキーの文字コードが混在してて、存在するはずのキーの検索に失敗するとか悪夢だろ 
 >日本語版のExcelのCSV出力時の文字コードがShiftJISなのは単に過去との互換性のため。  
 ここにきて.NET CoreがWPF, Windows Formsを救済ってか 
 >>790   >>791   >>792   屁理屈言っても誰にも認められない 
 x=x+1は式としておかしいと言い張ってプログラムが全くできなかった人がいたけど 
 その人と同じ   
 文字コードがいろいろあるのは仕方ない 
 それぞれの都合で整数に文字を割り当てる方式がちがうので文字化けする 
 文字コードの情報というものがそもそもないので削除なんてしてない   
 自動判定は単なる憶測にすぎない 
 その自動判定だって誰かが書いたコードが判定してるんであって 
 機械に任せると言うのは言ってることがおかしい 
  public double Re { get; set; } 
 別に文字列を文字セット/エンコーディングごと抽象化するライブラリとか作ってくれて良いのよ? 
 >>796   { get; private set; } 
 とか?できないんだっけ? 
  WPFで 
 >>798   できると思います。   
 データ格納フォルダB:Aフォームから値を取得 
 Cクラス:Bから値を取得 
 となってるのでsetもpublicでないと困るんですよね。   
 データ格納フォルダBの値はAから値取得した後なにも処理がないので、 
 「Reは使用されていません」って正しい警告なんですけどねぇ。 
 格納しているデータが10個あって警告10個もでるとさすがにうっとうしい。 
  >>790   BOM付きのUTF以外は、文字コードの情報なんてものは最初から存在しない。 
 また、文字コードの自動判別も完璧ではなく、場合によっては全く判別出来ない。 
  BのコンストラクタにAからの値を受け付けて 
 >>799   Formはウィンドウ全体のアルファはOpacityで指定できるけど、 
 背景だけ透過させるとかは簡単にはできなかったような  
http://yellow.ribbon.to/ ~azumaya/doc_dotnet_uplayeredwnd.php    
>>800   そもそも
>>796 みたいな告なんか出ないと思うけど... 
 何か盛大に勘違いしてる予感... 
  >>803   WPFだと簡単にできたけどだめですか。。 
 背景透明なウィンドウとOpacity≒0で全体をほぼ透明化したウィンドウを重ねて代用します 
  >>803   勘違いなのかなぁ・・・。 
 すいませんもうちょっといろいろ実験してみます。 
  もともとスタートアップだったform1からform2にスタートアップを変更したいと考えています。 
 form1が出てからform2が表示されているような…。 
 InitialSettingなのかExaminationなのかどっちだよ 
 >>809   Debugで確認していったらどうもインスタンスの参照を渡せていないようです。 
  public partial class Form1 : Form 
 public partial class Form2 : Form 
 public class Class1 
 Form2で 
 >>814   みたいな、じゃなくて問題を再現可能な最小コードをIdeoneにでもあげる 
 何で
>>811-813 まで書いおいて一番肝心なところを書かないんだ 
 それじゃやってること荒らしと同じ 
  806から811で全然別物の質問になってるんだけど 
 うるせーな一度答えると決めたら最後までニコニコヅラで相手しろよクソハゲ 
 >>777   返信遅くなりました 
 ありがとうございます、確かに存在しました 
 やってみたら問題なくアクセスできました 
  >>811   Form2のコンストラクタ内でclass1を使用しようとしているのに、 
 form2.Pointer(class1)がその後で設定されてる。 
  >>819   ありがとうございます。m(__)m 
 その通りでした。 
 一個づつ追っていけば分かるはずなんですけど、 
 自分では思い込みがあって気づきませんでした。   
 本当に助かりました。 
 ありがとうございました。 
  >>815   すいません。 
 文章の書き方が悪かったです。   
 812の下から4行目のように 
 Form2で 
 int i = class1.fuga(); 
 class1のメソッドを使う命令を書くと、実行時にForm1もForm2も表示されずに終了になります。   
 と書くべきでした。 
  >>816   これまたすいません、ブレークポイントで見て言ったら画面の生成順は問題ないことが分かって、 
 インスタンスの参照が渡っていないことが原因と分かり。811-813みたいな最小コードで実験してました。 
  中学生ぐらいだったら教えてやってもいいけど、あんたいくつよ? 
 不安なメソッド内じゃ全部TryCatchで囲っちゃった方が良いです? 
 メインの処理全体をtry〜catchで括るだけさ。 
 ジェネリクスのListやHashSetを良く使うのですが、これで用が足りてしまうので自作までしたことありません 
 >>827   できる人はそんな無駄なことに時間をかけたりしません 
 視野狭窄な無能ほどそういうことに拘って工数をドブに捨て、結果的に全体のクォリティを上げる時間が失われるのです 
  ありものでどうしても駄目な理由がある場合のみ、仕方なく自作だわね 
 >>830   それも注意が必要だけどね 
 視野狭窄な小手先の技術に拘るプログラマは、くだらない問題に拘って「どうしても駄目だ」と思い込む(思い込もうとする)傾向がある 
 大抵そういうケースでは、視野を広げるとそもそも無理に手間をかけてまで解決する必要のない問題であることが多い 
  Dictionary クラスを継承して使いたくて、 
 >>831   プログラム以外でもあてはまる話だわな。 
 それ 
  たいていは英語力の無さに原因があるんだよな。 
 コンソールアプリです。 
 両方に出力する関数作って、その関数に置き換える事すら出来ない無能に何をアドバイスしろと? 
 Windowsで使えるteeコマンド探した方が早いんじゃねえか 
 PowerShellならデフォルトで用意されてるよ!>tee 
 >>836   ??? 
 すみません、よくわかりません    
>>837   書き方まずかったですかね。 
 そう言うのも含めて、2つの処理を同時にするという意味だつたのてすが。 
 他にはなさそうですね。 
  正直何言ってるのかよく分からんけど、普通にリダイレクトするだけのような... 
 PowerShellとか罰ゲームだろ 
 アプリ側で完結してないと、スクリプト操作とか変なバッチ叩かせてアプリ起動とか怪し過ぎるだろ。 
 if (-100 <= clickPointXTemp && clickPointXTemp <= 100)  
 クリックしてカーソルが-100<=clickPointXTemp<=100の位置にあるときに配列にその値を代入させているのですが、 
 データベースを使わないで、インデックスが共通する複数のデータ配列を作りたいときってどういう風な実装が最適なんでしょうか 
 スコープが原因だろうから全体のソース出さないとエスパーだらけの回答になるよ 
 >>851    複数のクラスで共通の変数定数を外出しして、 
 >>859   共通の変数などという低い抽象度でクラス設計を考えるのがそもそも間違ってる 
 実装からクラスを考えると必ず破綻するから、君の今の考え方のまま進む限りはいかなる選択肢も不正解 
 とはいえ最初から抽象度を上げて設計しろといっても初心者には無理な話だから、気にせず自分の思うように作ればいい 
 一通りモノ作れるようになったらオブジェクト指向モデリングの書籍を読むことをお勧めする 
  オブジェクト指向プログラミングしない方がいいもの作れるよ 
 >>860   >オブジェクト指向モデリングの書籍 
 例えばどんな本がありますか?特におすすめ、とかじゃなくてもいいです 
 どういう本が該当するのかよくわからないのです 
  >>862   王道はエリック・エヴァンスとかダグ・ローゼンバーグとか 
 今読んでも実際のコーディングに対しては何の参考にもならないと思うよ 
  どのプログラム言語を選ぶかでオブジェクト指向モデルの実現方法がかなり違う 
 >>863 の本くらいの抽象度になると実装方法にはほとんど依存しないよ 
 それどころかオブジェクト指向モデルすらも方法論全体の中では下層の方に位置付けられる 
  とりあえず入門レベルが終わったんだけど次はeffective c#4.0っての読めばいいですか? 
 more effective C# 6.0 7.0ですか? 
 フォーム間でのデータのやりとりはどうするのが一般的なのでしょうか?  
 >>869   言語仕様とか環境の変化で不要になった部分をバージョンアップしてるから 
 今からかうなら最新だけでいい 
 初版と4.0と最新で内容は被っている 
  ビジュアルスタジオでC#使ってると、どんどんコードスタイルが簡略化されていくんだよな。 
 SocketクラスのBeginConnectとかBeginReceiveとかに渡すコールバック関数を 
 まあ、C#ならコールバックは登録解除を明示的に行うからスタティックである必要は無いけどな。 
 >>875   そのSocketオブジェクトに合わせるのが正解 
 Socketを生で使うサンプルってスキルの低い業務ドカタが書いてたり書かれた時代が古かったりすることが多いので、 
 C#をよく理解してなくてCやVBの感覚でstaticにしないといけないと思ってるようなのが多い 
  >>876   イベントハンドラからのデリゲートとはどういう状況でしょう?    
>>877   なるほどありがとうございます! 
  TextBoxか、MaskedTextBoxに単位をつけたい。 
 テキストボックスの横にラベルで単位でも書いておこうぜ 
 >>879   入力支援・単位の入力補完・数値⇔文字列の変換 
 何でもできるけどホントにしたいことがそのレスでは分からない 
  >>873   え、more付いてないのと付いてるのって同じ本なん? 
 独習C#と言い、命名がわけわからんな… 
  説明不足ごめんなさい。 
 TextBoxクラスを継承して自前で実装すればできる 
 TextBoxクラスを継承してTextプロパティを上書き 
 ありがとうございます。 
 ユーザーコントロールでボーダーなしテキストボックスとラベル並べた方が楽な気がする 
 テキストボックスの描画や挙動を弄るの面倒くさいから汎用性を求めるんなら InputMan 買った方がいいよ 
 NuGetで参照できるオープンソースのWinFormsリッチコンポーネントって何が有名なの? 
 c#で穴ぼこメモリにしないように組むのって不可能? 
 可能だが、規模によっては現実的でない 
 OSの仕事 
 >>899   それでも駄目なの? 
 もうサービス部分はC言語で組んだほうが良さげ? 
  GCが勝手に詰めてくれるから気にしなくていい 
 >>900   Cだって確保管理はOSの仕事だろ 
 何のためにメモリの管理をOSに任せたくないんだ? 
  >>903   Cだってオブジェクト毎の領域をそれぞれ全てOSが管理しているわけじゃない 
 mallocが効率化のためにだいぶ仕事してる 
  OSでメモリはブロックなどで管理されていて要求があったら 
 使う予定の最大量の倍の空きメモリーあれば大体は気にならない。 
 リークしてると1ヶ月ぐらいで死ぬじゃん 
 極めて厳密に管理したいならC/C++でアロケータを自前で書くというのはあり得る 
 List#Containsの重複判定基準をEquals以外にすることはできないでしょうか? 
 >>909   c#は現在実行中のアプリのインスタンスを確認する方法はあるの? 
  >>911   >Equalsが、別の目的用にオーバーライドされている 
 常識的にはそっちの方が解消すべき「問題」のように思うけど... 
  >>908   Webサービスか何かを想定してる? 
 だったらコーディングで対応するんでなく、ロードバランサで複数のアプリケーションサーバに振り分けて 
 サービスが止まらない様にしつつ、一部のサーバをオンメンテでリブートすべし 
  C#スレでメモリーリークを心配するとか、どんだけ無能なんだよ。 
 普通はリークで死ぬ前にGen2GC連発して性能ガタ落ちになるんじゃ 
 実際にメモリリークが起こらないように気をつける術は昔ながらの方法しかない? 
 >>918   一時的なオブジェクトはもう必要ないなら握りっぱなしにしないで即座に使い捨てること 
 中途半端に握りっぱなしにしてるとGCの世代か昇格してメモリ使用量の増加やGCのパフォーマンス低下の原因になる 
 一方、単寿命オブジェクトのGCは爆速なので、newしたら積極的にすぐ放置すべき 
  C#でメモリリークさせるコード書く奴がC/C++で無くせるとは到底思えないわ 
 >>921   うーん 
 爆速ではないなぁ 
 3分に1回動かしてる処理があるんだけど 
 強制GCせずにずっと動かしてるとき 
 メモリ使用量がかなりあがった状態でGCが動くと 
 3分に一度の処理のタイミングがズレちゃうんだよね 
 そこで強制GCも十分に一度ぐらいの頻度で動かしてる状態 
  ちゃんと設計してればC#でメモリーリークなんて気にすることなんてあるか? 
 >メモリーリークなんて気にすること 
 C#でリークやらかす奴がC/C++でやらかさない道理がない 
 まあ、でもC#はメモリー管理を隠蔽しちゃったから、実はCやC++よりメモリー管理しにくいんだよな。 
 未確認飛行のSpan説明みてサンプルコード動かそうとしたんだけど 
 System.Spanにしてもでてきおる 
 フォームアプリでマウスクリックでイベントをはっせいさせているのですが、 
 >>937   そうじゃないusing System;ってこと 
  >>938   -=、+= 
 デザイナーみればわかると思うよ 
  >>938   Control.Enabled 
 どうでもいいけど、「割り込みイベント」って表現は間違ってるから他所では使わない方がいいよw 
  処理中フラグ持っておいて 
 ボタンからしか起動しない処理だと保証されてるなら-=+=でもフラグでもいいが 
 はあ? 
 処理ループの中でメッセージループを実装してGetMessage()でマウスイベントをフィルターかな?或いは読み捨てる 
 >>939   つまりSpanを使うのにusing System;さえすればいいってこと? 
 ごめんな、クソ素人過ぎて質問がまずいのか    
http://ufcpp.net/study/csharp/resource/span/ の   
 var s = "abcあいう亜以宇";   
 var sub = s.Substring(3, 3); 
 var span = s.AsReadOnlySpan().Slice(3, 3);   
 for (int i = 0; i < 3; i++) 
 { 
     Console.WriteLine((sub[i], span[i])); // あ、い、う が2つずつ表示される 
 }   
 を試したいんだけど、できないって話なんだ 
  >>933   やっぱりそうだよね 
 厳密にやろうと思ったら昔ながらの方法でやるしかないんだよね 
  >>950   現時点ではAsReadOnlySpanが存在しないっぽいね 
 Stringはもともと読み取り専用だからAsSpanでReadOnlySpanになるってことだと思うけど 
 過渡期の記事はそのまま鵜呑みにしない方がいいぞ 
  >>940   全く知らない概念でした。 
 勉強してみます。 
  >>943   これうまい手ですね。 
 使える場所ありそうですので試してみます。 
  >>948   おっしゃる通りで、連打対策必要だったんですね。 
 フォームアプリだと必須の対策なんですね。 
 他で少し変な挙動してたのは連打対策してなかったことが原因のようです。   
 連打対策してみます。 
 というか、どうやればいいんだろ。 
 また、お勉強しなければ。 
  >>955   いま質問した答えをイベントメソッドに組み込めば連打対策は終了 
 そっちを先に覚えるのが普通だと思ってた 
  >>954   全然うまい手じゃないw 
 PC-98の時代じゃあるまいし、フラグって言葉を聞いたら眉に唾して聞かなきゃダメwww 
 それを好むのは可読性に感心がないダメグラマの可能性が高いw 
  そもそもUIのデザイン論なんて大げさな話じゃなくても、 
 >>952   ありがとう、そういうこともあるんだな 
 勉強になった   
 10Gくらいの固定長テキストファイルから一行ずつ読み取って 
 最初の1-10文字はUSER ID、11はSEX・・・って分けてdbに突っ込んでるんだけど 
 StringBuilderでLength=0しつつappendするくらいじゃ、stringでsubstringするのとあまり変わらなかったんで 
 Span使えばマシになるのかなと思ったんだ 
  そんなもん丸ごとDBにロードしたほうが速いだろ 
 10GBのデータだと読取よりDBMSへの書き込み方法がネックになりそう 
 >>962   細かくなるとdbスレ行きなんだろうけど 
 実際に書くところはC#なわけで、どこがボトルネックになってるのかザコ過ぎてわからんw 
 とりあえずsqliteつかってメモリ上dbにinsertでトランザクション管理しっかりやってってして30分くらいだったからまーいいかと 
 sql server expressだとbulk insertはわからんけどselectで並列処理されるみたいだから乗り換えてみる予定 
  sql server expressはひっくるめたDBサイズが最大10 GBまでだったと思うが 
 Postgresでいいよ 
 MonoのLinux版のインストールの仕方、ご教示いただけますと有難いです。宜しくお願い致します。 
 >>967   Monoなんか今時もう誰も使ってないし誰もメンテしてないでしょ 
 今は.NET Coreの時代 
 GUIが目当てなら諦めなさい 
  UbuntuでもCentOSでもコマンド一発で入るがな 
 Windows.Forms で WndProc を override して自分のコードを加えているのですが 
 >>973   debuggerstepthrough 
  メインクラスとシリアル通信クラスの2つを使っています 
 >>976   何でそうなるのw 
 発想が逆だってw   
 そのシリア通信を担当するクラスSがデータ受信を通知するイベントを発生させて 
 受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw   
 ついでに言えば受信データもEventArgs使って渡してしまえばいい 
  >>977   やりたいのことはそれなんですよw 
 説明が下手ですいません 
 厳密にはデータを受けた事が分かったらメイン側は受信データの内容を解釈するクラスに送って処理分岐という形にしようかと思ってます。 
 用語や処理の知識がおいついてきてないので、あれを応用しようという感じにならず、調べるためのキーワードも出てこないです。   
 >>クラスSがデータ受信を通知するイベントを発生させて受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw   
 ここが具体的にどういう構文になるのでしょうか。 
  >>958   PCをあまり使い慣れてない人とか、ボタンはシングルクリックでいいのをダブルクリックしちゃったりとかあるんだよなこれが・・・ 
  非同期じゃないならボタンイネーブル切ればいいだけじゃね 
 状態をGUIだけに持たせておくのはおかしいといつか思うはず 
 >>979    >>985   引数に渡されたものを弄るのは行儀の悪い設計 
 IReceiverインターフェイスみたいなのを用意してport.AddReceiver(decoder)とするか、  
>>979 の言葉通りにいったん双方のクラスの外でイベントハンドラで受けて仲介したほうがいい 
  >>985 がなぜ行儀が悪いか補足しておこうか 
 普通、オブジェクトを別のクラスのコンストラクタに渡すとき、プログラマは 受け取った側→引数側 の向きの参照ができることを期待する 
 ところが、
>>985 だとそれが逆なんだよ 
 new FrameDecoder(this.port) としただけで、portがGCされないかぎり作り捨てたはずのFrameDecoderがGCされないという、非直感的なコードになるわけ 
  何言ってるのかさっぱりわからん 
 言い回しがようわからんが 
 >>985 みたいなのするのが解放されないオブジェクトを量産するっていうのはなんとなくわかる 
 >>988   分からないならイベントというものを正しく理解してないんじゃないかな 
 ボタンのクリックイベントをフォームが受け取れるのは、ボタンがフォームへの参照を(実際には間にデリゲートが入るので間接的にだが)持ってるから 
 基本的に、引数に渡ってきたものに自分自身を登録するのは避けたほうがいい 
 オブジェクトのライフタイムが非常に分かりにくくなるから 
  reactive extensionsって.NET発祥なのに使う人少ないよね 
 >>969   ちょまど神って???状態でしたので調べてみました。 
 一つ知識が増えました。ありがとうございます。 
  >>970   そうなんですか。。。 
 NET Coreっての調べてみます。どうも有難う御座います。   
 ちょど昨日 GUI って何だ??って検索したばかりでした。 
 3日前からプログラムの勉強をはじめたばかりで。。。 
  >>975   ありがとうございます。TRYしてみます。   
 この掲示板すごーい!!皆様に感謝です。 
  >>989   ないないw 
 イベントの購読解除はリークの原因になるのはその通りだけど、 
 それは
>>986 が主張するように、イベントを発生するオブジェクトを引数で受け取ったかどうかと無関係。    
>>990   俺は理解してないのは君の方だと思うよw 
 その君のいう俺様ルール、何が悪いのかさっぱり分からない   
 そもそも今はそんな話をしてるんじゃないw 
 単に質問者の参考になるかもしれんコードの骨組みを示しただけw 
  あ、 
 ふらっと C#,C♯,C#(初心者用) Part138  
 http://2chb.net/r/tech/1528194762/   たった 
 議論は他のところでよろしく 
 >>995   想像力のない人だなあ  
>>985 だと、イベントハンドラの登録を解除しない限り、FrameDecoderが不要になっても 
 登録先のCommunicationPortよりも先にGCされることは絶対にない。 
 じゃあ不要になったらイベントハンドラを登録解除できるようにしよう。いつ解除する? 
 それはFrameDecoder自身には分からない。知っているとしたら、それは
>>976 のいうメインクラスだろう。 
 登録解除するにはFrameDecoderクラスのDisposeメソッドを呼べ、という仕様にするか? 
 結局、985のFrameDecoderを正しく扱うには、メインクラス側がそういうクラス外から見ただけでは想像できないFrameDecoderの気難しい仕様を理解した上で、 
 必要に応じて明示的な解放を行わなくてはならない。 
 そんなことをするくらいならメインクラス側で明示的に登録・登録解除をやったほうが遥かに素直で分かりやすい。 
 
ID:R63QgqLH0のレス一覧:  >>302   コンパイラ開発者はとりあえずLLVM-IRに変換すればいいし最終段で機械語に変換するか直接実行するか他の言語のコードに変換するかは自由 
 というか最初と最後だけ作ればいいわけだから寧ろLLVM-IRが中心 
  >>304   うん、それはよくわかる 
 すべての「構造化」を全否定するわけではないんだよ 
  JITコンパイルはVMとしては認めない派閥が存在することは認める 
 https://www.slideshare.net/ufcpp/ss-34533225   このスライドの67枚目の「良い例」のコードってこれで本当にいいの?   
 MSDNのParallel.Forの解説には 
 --- 
  localFinally デリゲートはスレッドごとに 1 回呼び出され、各スレッドのローカル状態に対して最後の操作を行います。 このデリゲートは、同時に複数のスレッドで呼び出される可能性があります。したがって、共有変数へのアクセスを同期する必要があります。 
 ---   
 と書いてあるから、countはアトミックに操作しないとまずい気がするんだけど  
https://msdn.microsoft.com/ja-jp/library/dd783299 (v=vs.100).aspx 
  >>312   MSDNの使用例にも 
 localState => Interlocked.Add(ref result, localState) 
 とあるしそれで正しいと思うよ 
  >>313   いやだから、MSDNのサンプル通りにするなら、
>>312 の 
 localCount => count += localCount 
 は、   
 localCount => Interlocked.Add(ref count, localCount) 
 でないとまずいと思うんですが 
  そうだねだからどうしたの 
 大して変わんねーよ 
 >>314   いや、
>>312 の言う通りと言ったつもりなんだが・・・ふらっと怖いな 
  おバカwebを鵜呑みにしない有望な
>>312 なんやからもう少し優しくレスしてやれよw 
 この例だとForよりAggregate使ったほうがいいな 
 >>318   自分の日本語に疑問を持たない君の方が怖いよ   
 「これ(A)」でいいのか、Bじゃないのかって質問に「それ」で正しいと答えたら 
 質問した方は普通は正しいのは「これ」の方だと理解する 
  C♯でJavaScriptで生成されてるチャットサイトからコメントビューアを作りたいのですが、JavaScriptが生成したHTMLを取得するのに適したライブラリってどれでしょうか? 
 >>322   追記 
 使う.Net frameworkは4.6.1です 
 Nugetで公開されてるライブラリ等でも問題ありません 
  javascriptで生成といっても生成元になるデータを何処かでリクエストしてる筈 
 ありがとうございます 
 おバカwebと言えば↓みたいに日本語と英語で全く逆のことが書いてあったりする 
 基本的にwebに書いてあることは疑ってかかったほうが良さそうね   
 日本語  
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/best-practices-strings#recommendations_for_string_usage   > 比較のために文字列を正規化する場合は、String.ToUpperInvariant メソッドではなく String.ToLowerInvariant メソッドを使用します。   
 英語  
https://docs.microsoft.com/en-us/dotnet/standard/base-types/best-practices-strings#recommendations_for_string_usage   > Use the String.ToUpperInvariant method instead of the String.ToLowerInvariant method when you normalize strings for comparison. 
 (グーグル翻訳) 比較のために文字列を正規化するときは、String.ToLowerInvariantメソッドの代わりにString.ToUpperInvariantメソッドを使用します。 
 >>326   X:webに書いてあることは 
 ○:日本語訳は 
  グラフィックの扱いについて教えてください 
 >>328   ベースの画像のいくつかの任意の位置に画像を貼り付ける描画ならそれで間違っていないけど  
https://msdn.microsoft.com/ja-jp/library/system.drawing.graphics.drawimage (v=vs.110).aspx  
https://msdn.microsoft.com/ja-jp/library/558kfzex (v=vs.110).aspx 
 どこを勘違いして悩んでいるのかいまいちわからない 
 とりあえずBitmap オブジェクトはImageオブジェクトの一種 
 他にMetaFileとかあるから 
 そしてGraphics.DrawImageメソッドを使って貼り付けてもベースのBitmap オブジェクトはBitmap オブジェクトのまま 
  >>329   私の認識は、最終的に描画したいビットマップを用意して、それを Paint イベントで 
 描画するというものです 
 Panel1_Paint(object sender, PaintEventArgs e) { 
 e.Graphics.DrawImage(canvas, 0, 0); 
 }   
 で、上記の例で Bitmap canvas; とでもして用意したビットマップに、任意の画像を 
 貼り付ける方法を知りたいのです 
 例えば256x256ピクセルのサイズで用意したビットマップに、32x32ピクセルの 
 画像を3個位貼り付けた canvas を用意したいというものです   
 「そうではなくて、最終的に描画したいものはGraphicsオブジェクトで用意して、 
 Paintイベントで毎回描画するのだ」というのが正なのかもしれません 
 Panel1_Paint(省略) { 
 e.Graphics.DrawImage(image_1, image_1_x, image_1_y); 
 e.Graphics.DrawImage(image_2, image_2_x, image_2_y); 
 ... 
 } 
 といった感じで   
 でもなんだか、毎回Paintイベントハンドラに描画処理を全部書くのは変な感じがして、 
 描画したい画像を用意するのと、実際に描画するのは別の処理ではないかと思っている 
 次第です 
  描画したい画像を用意するのと、それを描画するのは当然別の処理だ。 
 >>330   何でイベントでやるのか知らないけど複数の描画を同時にやるメソッドはなかったと思うよ  
https://dobon.net/vb/dotnet/graphics/index.html   Bitmap canvas=new Bitmap(x,y); 
 Graphics g = Graphics.FromImage(canvas); 
 Graphics.DrawImage(image_1, image_1_x, image_1_y); 
 Graphics.DrawImage(image_2, image_2_x, image_2_y); 
  あ、ごめん 
 >>331   アニメーションさせたいとか、そういう意図はないです 
 単に、描画したい画像を用意するのに、Bitmapオブジェクトにさらに画像を 
 貼り付ける方法がわからなくて悩んでいます    
>>332   イベントでやってるのは、単に参考にしたサイトで「Paintイベントハンドラで 
 処理する」と書いてあったので、それを鵜呑みにしただけです    
https://dobon.net/vb/dotnet/graphics/drawimage.html   これを見て気づきましたが、そもそもパネルに直接描こうとするのが間違いで、 
 パネルにPictureBoxを貼り付けた上でそこに置けば良いのかな? 
  >>334   どっちでも同じだと思う 
 Graphics g = Graphics.FromImage(panel1.BackGroundImage); 
 でやれば直接パネルに書き込めるし 
 ただ大きい画像を表示して画像の表示位置をスクロールさせたいのならパネルの上にPictureBoxが基本 
 とりあえず書いて動かしてみたら 
  >>334   実現したい要件だけを明確に書いた方がいいと思うよw   
 そこが明確じゃないのに「俺が考えた実装方法」ばっかり詳細に書くから 
 答える方も何を返答していいのか分からないw 
  >>336   実現したいことは、「任意の画像を任意の場所に配置したイメージを、panelに描画したい」です 
 これは明確で、それを実装するための方法でどう悩んでいるかが正しく伝わらないと、答える方も 
 こちらのレベルがわからなくて困るかと思ってました   
 実現したいことがちゃんと伝わっていませんでしたか 
 それ以前の問題でしたね。。。 
  bmp1が配置先のイメージ、 
 >>340   ありがとうございます 
 思っていることが問題なく実現できました   
 できるようになってみると、一体何を悩んでいたのか、自分でもわからなくなってしまいました 
 多分、DrawImage で書き込む先がVRAMだと思い込んでいたのでしょう 
  private void Form1_ResizeBegin(object sender, EventArgs e)  
レス:1-200  201-400  401-600  601-800  801-1000  ALL  
このスレへの固定リンク: http://5chb.net/r/tech/1523004019/ ヒント: http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。TOPへ  TOPへ   
 
	  
全掲示板一覧  この掲示板へ  人気スレ  | 
	Youtube  動画  
	>50  
	>100  
	>200  
	>300  
	>500  
	>1000枚  
	新着画像 ↓「ふらっと C#,C♯,C#(初心者用) Part137 	YouTube動画>1本 ->画像>2枚 」 を見た人も見ています:・ふらっと C#,C♯,C#(初心者用) Part155  ふらっと C#,C♯,C#(初心者用) Part128  ふらっと C#,C♯,C#(初心者用) Part119  ふらっと C#,C♯,C#(初心者用) Part150  ふらっと C#,C♯,C#(初心者用) Part147  ふらっと C#,C♯,C#(初心者用) Part156  ふらっと C#,C♯,C#(初心者用) Part151  ふらっと C#,C♯,C#(初心者用) Part157  ふらっと C#,C♯,C#(初心者用) Part159  ふらっと C#,C♯,C#(初心者用) Part139 	 ふらっと C#,C♯,C#(初心者用) Part134 	 ふらっと C#,C♯,C#(初心者用) Part146 	 ふらっと Q#,Q♯,Q#(初心者用) Part 1  (10) FX初心者スレ Part130 	 FX初心者スレ Part127 	 FX初心者スレ Part101 	 FX初心者スレ Part121 	 MTB初心者質問スレ part103 	 ロード初心者質問スレ part446 	 【FF14】初心者の館 Part371 	 【FF14】初心者の館 Part328 	 Ruby 初心者スレッド Part 62 	 pixiv初心者&質問スレpart1 	 【初心者でも】エギングPart91【上級者でも】	 Java入門・初心者質問スレ Part.3  Ruby 初心者スレッド Part 67  Ruby 初心者スレッド Part 59  Java入門・初心者質問スレ Part.8 	 Java入門・初心者質問スレ Part.11  Java入門・初心者質問スレ  Part.6	 Ruby 初心者スレッド Part 61 	 Xiaomi(小米科技) 初心者 Part1  Java入門・初心者質問スレ  Part.5	 Java入門・初心者質問スレ Part.7 	 ウクレレ初心者集まれ! Part17 	 Java入門・初心者質問スレ Part.10  バジリスク絆初心者質問スレpart25 	 バジリスク絆初心者質問スレpart30 	 くだすれC++/CLI(初心者用)part2 Arduino初心者熱烈大歓迎質問スレ part28  【プロスピ】プロ野球スピリッツA初心者スレpart135  【初心者】ダイエットの質問・相談スレPart179 	 Twitter 初心者&質問スレ Part.41 	 Blender 初心者質問スレッド Part47  クロスバイク初心者質問スレ part12 	 クロスバイク初心者質問スレ part13 	 クロスバイク初心者質問スレ part17 	 【小説家になろう】初心者作者の集いpart.81 	 【初心者でも】エギングPart113【上級者でも】 【初心者でも】エギングPart89【上級者でも】	 youtube初心者スレ収益化 飛躍編part2 	 【小説家になろう】初心者作者の集いpart.51 	 【小説家になろう】初心者作者の集いpart.23 	 【小説家になろう】初心者作者の集いpart.90 	 【プロスピ】プロ野球スピリッツA初心者スレpart78  右投げ右巻きって初心者臭いよね Part2 	 シャドウバース初心者&質問スレPart41  	 【MTGA】Magic The Gathering Arena 初心者スレ 185  【プロスピ】プロ野球スピリッツA初心者スレ part56  【プロスピ】プロ野球スピリッツA初心者スレ part201  セキュリティ初心者質問スレッド Part140 	 ◆◆園芸初心者質問スレッド PART119◆◆  Wonderland Wars 入門者・初心者スレ Part5  【C++】 DirectX初心者質問スレ Part41 【C】 	 docomo Xperia Z SO-02E 初心者質問スレ part7  
  
    
  
 
 11:02:38 up 9 days,  1:24,  4 users,  load average: 79.47, 87.27, 95.38
in 0.74163198471069 sec
@[email protected]  on 110100