◎正当な理由による書き込みの削除について:        生島英之 とみられる方へ:ふらっと C#,C♯,C#(初心者用) Part137 	YouTube動画>1本 ->画像>2枚  
動画、画像抽出    || 
この掲示板へ   
類似スレ   
掲示板一覧  人気スレ  動画人気順 
 このスレへの固定リンク: http://5chb.net/r/tech/1523004019/ ヒント:  5chスレのurlに 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      例外に対処するイディオム的な物を教えてくれ、と言ってるように聞こえるけど   そんなものはないとしか... 
 なかなか意図するところが伝わってないのですが、「例外処理をループの中に閉じ込めて、   例外が発生しなかった場合だけループを抜ける」という書き方を知りたかったのです   処理の内容とかはどうでも良くて、ループの囲い方とその抜け出し方を      なので、以前レスいただいたように、whileで無限ループを作って、tryブロック内にbreakを   置いてループを抜ける、という回答で私には十分でした      試してみれば一発で分かる話だったのですが、tryブロックから外側のループを直接抜ける   ことができると思っていなかったので、それに気づかなかったということです      皆様お付き合いいただいてありがとうございました   また質問をした際には付き合っていただけると幸いです 
 困っているわけじゃないんだけどちょっと気になってることがあるので分かる方がいたら教えてください   次のコードを実行すると y に true が代入されますが、これはどういうときに使うのでしょうか      string x = null;   bool y = x is var z; // y に true が代入される 
 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   {   public int Id{get;set;}   public string Text{get;set;}   public string Other{get;set;}   }   このようなクラスを他プロジェクトやライブラリで   ICollectionの型として使い回したい場合   どのような依存をすればいいのでしょうか?   インターフェースでこの型実装を強制させるとかでしょうか?   インターフェースを使わないで他の参照方法のが望ましいのでしょうか? 
 >>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全般の話だと思うのですが、クラスを呼んだ時のパラメータは、コンストラクタに与えるのが良いのでしょうか、メソッドに与えるのが良いのでしょうか   両方できるので無造作に使ってるのですがOO的に間違った事をしていそうで      よろしくお願いします 
 >>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の目的はメンテナンス性と事前の徹底したバグ潰しだから、値を変更できるルートを予め絞っておくことは理に適ってる 
  色々とアドバイスありがとうございます   統一性があれば、後はデザパタに従うか等で決定するのが一般的と解釈しました   田舎の中小1人情シスでコードレビューもされないので世間の動向が分からず参考になります      都会の大手の人は切磋琢磨し洗練されたコードを書くんだろうなと憧れます 
 >>28   あまり我流過ぎるとチーム開発の時に混乱するという心配がありまして 
  >>38   対象を無視してオレオレナントナク基準で決めるほうが我流 
 物事にはそれぞれ特性があり最適な答えはいつも違う 
 それを導き出すには都度考えて議論を重ね実験を繰り返すしかないんだよ 
  見積り終わってるのに時間かけても無駄   一円の利益にもならない   今回の開発で黒字でなければ2回目はない   よって一番時間がかからない方法が正義 
 業務系はそれでいいのかもね   保守するのは自分でも自社でもない   ならどんなに汚いコードでも早くしあげたほうが勝ち   ただし納品された顧客はとんでもない借金を背負うことになる   罪悪感ってないのかね 
 >>41   いや 
 君のやり方だって怪しいもんじゃない? 
 具体的に○○さんのコードは見易くてわかりやすいですねって言われた実績あるの? 
 無いのに勝手な妄想で自分のコードを保守しやすいと思い込んでない? 
  >>43   お前なんか全身elseで強化した俺の敵じゃねぇ 
  VisualStrudioのC#でPS4を入力を表示するソフトを作りたいんだけども、   どんなライブラリが便利かな? 
 >>46   PS4の入力ってなに?   
 コントローラの事? 
  PS4を窓の外に出力する   入力すならまずはアマゾンで注文 
 作画ソフトを作成したいのですが   解像度より大きな領域を扱うことになりそうです   10%〜800%まで拡大縮小ができて   編集操作を行う必要があるのですが   どのような造りにしたら良いのでしょうか?   自分でスクロールバーを置いて編集領域は自前で描画するのでしょうか?   PictureBoxのようなコントロールでスクロール操作までできてしまうのでしょうか? 
 >>51   具体的には印刷すると模造紙ぐらいの大きさのでっかい回路図を作成します 
 保存するファイル形式はXmlです 
  >>50   自分でスクロールの機能まで実装してもいいけど、 
 特に理由がないならコンテナ(例えばPanel)の中にPictureBoxを入れて使うのが 
 普通じゃないですか 
  >>50   PictureBoxにスクロールバー表示するのは  
https://dobon.net/vb/dotnet/graphics/scrollimage.html   例ではコードでプロパティ設定しているけどデザイナで設定しても同じようにできる 
  模造紙レベルのでっかいpitureboxで画像のまま編集は現実的じゃないけどね   実際は表示部分だけ都度計算して描画することになる      ドロー系にしてもまあ普通は向いてない   C++でやるような内容だよ 
 論理座標とワールド座標、デバイス座標をよく理解すべき 
 >>54-57   ありがとうございます 
 頑張って見ます 
  すいません、PS4のコントローラをPCに接続して、   入力ボタンを表示したいのです。 
 配置が違うだけなのか。   でも認識させるにはDirectXのラッパーとか使うしか無さそうなのね。 
 Task.Factory.StartNew(またはTask.Run)で生成したスレッドの優先度を変える方法はあるのでしょうか。 
 63ですがスレッドプールを使わず、スレッドで対応することにしました。 
 >>65   Taskだと処理中に割り込み?が割と入ってきて、処理時間が遅延してしまうのです。 
 スレッドレベルで優先度を上げたいと思いまして。 
 結局Threadにして優先度を上げても割り込みは入ってくるのですが、多少マシになったような気がします。 
  >>66   それ単にスレッド生成で遅延しているなんてオチじゃないよな? 
  受託案件なのでC#で作らざるを得ないのです。 
 自分自身はファーム屋なので、マイコンでやりたいんですけどね。    
>>70   まだ遅延の原因はわかってませんです 
 生成時だけの遅延じゃないので、違うとは思いますが・・・ 
 ユーザーコントロールのプロパティをデザイン時のプロパティウィンドウでコンボボックスにしたく 
 人様のサイトで恐縮なのですが、以下をほぼコピペしました。    
http://blog.okazuki.jp/entry/20070207/1170820895     が、テキストボックスのままで選択肢になりません。 
 公開プロパティに、なにか別の宣言が要りましたでしょうか? 
 継承ユーザーコントロールだったのですが、継承元にも   [System.ComponentModel.TypeConverter(typeof(〜 が必要だっただけみたいです。      すみませんでした。 
 引き続きすみません。      たとえばユーザーコントロールに   Folder   File   という2つのstring型の公開プロパティを用意します。      IDEのプロパティウィンドウからFolderを設定(通常のテキストボックス)すると   そのフォルダ内のファイルを舐めてFileの選択肢にしたいのです。      TypeConverterで、静的な候補が出て選択できるところまでは出来たんですが   動的に候補を変更する場合、どうするんでしょうか。      IDEのプロパティウィンドウに、どうアクセスしたらいいのか、そこが分かれば何とかなる気がしてるんですが。 
 初歩的な質問で申し訳ないのですが、   戻り値なしのメソッドと、引数なしのメソッドはどういう状況で使用するのでしょうか?      戻り値なしのメソッドは   その後にどこかに代入したりする予定はなく出力が目的の場合に使用すると   読んだのですがその通りですか?   万が一、後で代入したくなった場合に備えて取り敢えず戻り値は設定しておいたりしないのでしょうか?      引数なしのメソッドは   引数がない(=変数宣言がない?)とそのメソッド自体、動いてくれないイメージがあるのですが、実際は動きますよね   何も値を与えられていないのに動くのはどうしてですか?      宜しくお願いします・・・ 
 >>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#には例外やイベントのように色々な機構があるから、とりあえず細かいことは気にせず先に進んだ方がいい 
  関数という言葉に惑わされてるということかな      メソッドは数学で言う関数そのものじゃない   (y=x+1とかそういうのじゃない)   やることを順番に書いてあるもの   サブルーチン   戻り値が定義されてたそれを返すだけ      ほかの言語で戻り値がないものは関数と区別してる言語もあるけど   わざわざ二種類つくるより戻り値なしで共通にしてある 
 >>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#関係ないよね 
 [[['[]  ]]] { {] ]][ '[][][] [][] [][][]  [] '[] [] 
 c#勉強始めたての者です。   indexofで文字列を検索しようとしているのですが、長文を検索するとエラーが出てしまいます。      MSDNを見ると戻り値がint32とあり、戻り値がintの範囲を超えるとlongエラーになるように推測していますが対応方法はあるのでしょうか。 
 すみません上記文中のlongは誤植ですので読み飛ばしてください。 
 文字数がintに収まるように文字列を切り出しながら検索すればいいんじゃないか   もちろん切れ目に検索対象の文字列が有るときの対策して切り出さなきゃならんけど 
 ありがとうございます。   matchメソッドというのを見つけました。   全然見つからなかったのに投稿し出来すぐ見つかるものですね。   matchで出来なかったらint分割にトライしようと思います。 
 フォーム上のコントロールを、プログラムから参照するいい方法はないでしょうか      SplitContainer上に配置した合計20個のチェックボックスについて、textをファイルから   読み込んだものに動的に変更したいと考えています      手元の書籍(作って覚えるc#)では、forループの中で      splitContainer1.Panel2.Controls[i].Text = mistakeText;      という形でやっていましたが、今回自分で用意したフォームはほかにもテキストボックスや   ラベルがあり、うまくチェックボックスを対象としてくれません   デザイン画面で配置した順番にやや依拠しているようですが、最後においたものほど添字が   小さそうだ、程度しかわかりません   今後デザインを変更する、あるいはチェックボックスを増やす可能性を考えると、何らかの   プロパティで順番を指定できるといいなと思いますが、発見できませんでした      Form1.Designer.cs のメンバ変数宣言欄に記載がある順番のように思えますが、IDEが   自動生成したコードを並べ替えるのも何やら気持ち悪く、今の所手を出していません      今回はチェックボックスですが、ほかにもラベルを順に参照するとか、テキストボックスを   順に参照する方法などあれば、教えていただけると助かります      なお、今回のフォームでは、とりあえずチェックボックスの名前は初期値(checkBox1など)に   なっています 
 >>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 Form1()    {     InitializeComponent();     this.checkBoxes =  this.Controls.OfType< CheckBox >().OrderBy( x => x.Name ).ToArray();    }       private CheckBox[] checkBoxes;   } 
 public class B : private A   {      }      みたいなこと C# じゃ出来ないんだっけ? 
 >>159   継承元をprotectedにすれば継承したクラスからしかアクセスできないようにはできる 
  そのクラス経由でしかアクセスできないようにしたいってことじゃないの? 
 ゆとりしか居ないのかなぁ   C#はprivate継承はサポートしてないよ   フィールドに持たせて移譲メソッド書くしかない 
 >>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#勉強し始めたけど、   結構ネスト深くなる言語っぽいね、これ。こんな…         namespace ConsoleApp1   {       class Program       {           static void Main(string[] args)           {               try               {                   checked                   {                       sbyte a = 64;                       sbyte b = 65;                       sbyte c = (sbyte)(a + b);                   }               }               catch (OverflowException ex)               {                   Console.Write(ex.Message);               }           }       }   } 
 >>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"; に対して   x.toString(); するんじゃなくて、int.Parse(x); するのか…。   xオブジェクトにintegerを吐き出させるのではなく、   integerオブジェクトにxオブジェクトを与えてintegerを吐き出させる…。      これは初めての体験だな…。 
 expression-bodied関数は、なんかエロいな… 
 やってる事は違うけど、考え方的にはCのマクロに近いのかな… 
 なんだよ、ToString()メソッドあるじゃねぇかよ…。 
 >>190     ごめん。   
 質問です。なんだよ、ToString()メソッドあるじゃねぇかよ… 
  VisualStudioでC#のフォームアプリを開発するときに   プロジェクトのプロパティから   出力の種類を「コンソールアプリ」にして   デバッグ用のConsole.WriteLineを出力できるようにしてるんだけど   リリースするときは、種類を「Windowsアプリ」にするだけで   コード中のConsole.WriteLineはコメントアウトとかしなくても   大丈夫ですか? 
 >>193   デバッグ用に文字列を出したいなら、using System.Diagnostics;して、Debug.WriteLine()とか使うべき。 
 これならリリースビルドにするだけで無効になるからコメントアウトも不要。 
 リリースビルドでも使いたいなら、Trace.WriteLine()。 
  >>194   おお、ちゃんとデバッグ用のがあるんだ 
 聞いてよかった 
 ありがとう    
>>195   なるほど 
 別に見られて困るようなものでも無かったけど 
 無知を晒す所だった・・・   
 てか、独学でやってると気づかずおかしなことやってそうで怖いわ 
 たまたま、ネット上で解説見つかるか 
 質問して教えてもらえるかの 
 綱渡りで進んでるw 
  >>192   おまえ出身言語化どこだよw 
 レヴェルが低すぎるぞ 
  引数の文字列が、データグリッドに含まれていない場合だけ追加したいんですが、追加されません。   何が原因でしょうか?      void AddToDataGrid(string[] strs)   {    bool exists = false;       foreach(string str in strs)    {     for(int i = 0; i <= view.Rows.Count; i++)     {      if(str == view[0, i].Value.ToString())       exists = true;     }     if(!exists)     {      view.Rows.Add(str);     }    }   }  
 >>198   >view.Rows.Add(str); 
 これじゃね 
  >>199    view.Rows.Add(str);   だけだと正常に追加されるので、条件判定かループあたりに原因があると思っています。   フラグの位置がおかしいので以下に修正してもダメでした。   void AddToDataGrid(string[] strs)    {    foreach(string str in strs)     {     bool exists = false;            for(int i = 0; i <= view.Rows.Count; i++)      {       if(str == view[0, i].Value.ToString())        exists = true;      }      if(!exists)      {       view.Rows.Add(str);      }     }    }   >>200   exist=trueでブレークポイントを置いてデバッグ実行すればわかるのでは? 
  そもそも exists = true; の行に到達してないというオチな気がする 
 >>201 とかぶってしまった  
>>201 の方が指摘として親切だからそっちだけ読めばいいよ 
  >>200      for(int i = 0; i < view.Rows.Count; i++)//Rows.Count以下じゃなく未満     {       bool exists = false;//ここに移動          if(str == Convert.ToString(view[0, i].Value))//ToString()だとValueがnullのときエラー   >>204 はとってもそれっぽい 
 で、例外が握りつぶされるような場所でAddToDataGridが使われてるせいで気づけてないとか   
 こういう場合自分はtry{...}catch(Exception exception){throw;}で囲って 
 throwの直前にブレークポイントを置いたりしてるけどもっとうまい方法があったら誰か教えてちょ 
  >>204 はそれっぽいと言ったけど 
 よく読むと 
 bool exists = false;//ここに移動  
 の部分は自分には理解できなかった  
>>204 の勘違い? 
  >>206    フラグよく見ていないからとりあえず      if(str == Convert.ToString(view[0, i].Value))       {exists = true;break}   に変更で   みなさん本当にありがとうございます。   結局原因はわからず仕舞いでしたが、最終的に以下の方法で打開しました。      void AddToDataGrid(string[] strs)   {    foreach(string str in strs)    {     bool exists = false;        for(int i = 0; i < view.Rows.Count; i++)     {      if(Convert.ToString(view[0,i].Value) == str)       exists = true;     }     if(!exists)     {      view.Rows.Add(name);     }    }   }  
 >>208   それなら納得 
 existsの宣言の位置を移動するとif(!exists)がスコープから外れちゃうもんね    
>>209   >>204 の方法で解決したんなら
>>204 の指摘が正しかったんでしょうよ 
 で、それに気づかなかったんならやっぱり例外が握りつぶされてたんでしょ 
 なら今後のためにも原因は分からずで片付けず例外の名前くらい確認しといたほうが良いと思うよ 
  オブジェクト指向のプログラミングでは   変数じゃなくてプロパティにアクセスさせるべき   みたいな事をよく聞くんだけど   ・プログラムの開始時にあるフラグ(true/false)を決めて、その後一切変更されることがない   ・そのフラグには、コード中の様々な所からアクセスがある   って場合は、プロパティじゃなくてpublicな変数でフラグを定義してもいいんですか?      オブジェクト指向がよくわかってないせいか   プロパティを経由するのがどうしても遠回りというか   一つ余分な作業を挟んでるように感じてしまう・・・ 
 変数は、公開しちゃダメ      その変数に、誰かが代入するかも知れないと考えると、   その変数に代入しているか、すべての場所を確かめないといけなくなるから、   プログラミングできなくなる      だから、プロパティで代入禁止に設定する      ただし、絶対に代入できない定数なら、公開してもよい 
 >>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   >オブジェクト指向のプログラミングでは  
 >変数じゃなくてプロパティにアクセスさせるべき 
 >みたいな事をよく聞くんだけど  
 を質問者が引き合いに出した以上、質問者はここからはしっかりわかってなくて、色々ごちゃ混ぜになってると 
 思われる。だから、そっから説明しなきゃ、おそらく習得できない。 
  自分はオブジェクト指向じゃない言語をちょっとだけやってたんだけど   そういう言語では、コードの最初の方に   public bool JudgFlag = true   って1行書いて、それにどこからでもアクセスするみたいな感じだと思うんだ   (全部独学だからこれも正解なのか知らんけど)   でも、オブジェクト指向ではこれやったらダメなんだよね?   ってのが知りたい      後、俺マジで初心者だから   質問文で聞きたいことが正確に表現できてる保証ないwすまん 
 >>227   別にダメじゃないよw 
 何度も言うけど、あえてフィールドを使う理由があんまりないだけw   
 フィールドをプロパティにしたらバグが減らせるとか可読性が上がるとか、 
 ほとんどの場合そんなことはない 
  >変数じゃなくてプロパティにアクセスさせるべき       これが異なる会社間での開発を可能にする、   オブジェクト指向の大原則・カプセル化      どの教科書にも書いてある      その理由は、クラス内を開発している会社・人と、   そのクラスを使う会社・人は、異なっているから      オブジェクト指向では、これらの2つの立場からの見方が大切。   君はどちらの開発者ですか?   クラスを作る方・使う方?      クラス内を開発しているのは、過去だから、   そこから未来の、クラスを使う人の動きを予測できない      だから、変数に直接触らせたらダメ。   そこまで予測して、クラス内を作れないから 
 >>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   
 外部から取得/設定してもらう必要がある値をフィールドではなくプロパティにしたからって 
 ヒューマンエラーを減らす効果なんかないのは事実   
 ただ機能がより少ないフィールドをあえて使うことないでしょってだけの話   
 オブジェクトの公開するデータは必ずしもいつも変数に入っているわけではなく、 
 何らかの処理の結果を返す場合もあって、その場合はプロパティになるから、 
 だったら全部プロパティの方が統一感があるという考え方はあるかもしれない 
  まとめると   「1人で小規模なコード書いてるだけなら   public bool JudgFlag = true   を書き換えたらダメなことぐらい自明だから、フィールドに1行書いて終わりでいい   若干雑だけど楽」   って考え方と   「いや、自分で決めたルールを自分で忘れることもあるから   ちゃんとプロパティにして触れない様にすべき   多少面倒でもコストを払うメリットがある」   って考えの対立なのかな      get;set;とか全く意味がわからなかった頃の嫌なイメージのせいで   プロパティを書く事が、「面倒・難しい」って体が拒否反応しちゃうんだよね   自動プロパティとか実装されてる今の時代に   何言ってんだって笑われそうだけど      まあ、でも色々モヤモヤしてた所がスッキリしました   ありがとう 
 フォーム間のデータ受け渡しのやり方について教えてください      プログラムを起動して、最初にForm1でパラメータなどを設定、次にForm2で設定した   パラメータを元にデータを編集したいとします   (Form1で編集済みのデータをForm2に表示する、でもいいです)      このときにデータを受け渡すのは、program.cs で Application.Run(new Form1()); と   呼び出す前に       1. Form2 のインスタンスを作っておいて、それを Form1 の引数として与えてやる   2. 必要なデータのインスタンスを Main() 内に用意しておいて、そのインスタンスを    Form1 と Form2 のそれぞれに送る   3. どっちもダメで他の方法がある      のどれが良いのでしょうか。   Form1 の中で Form2 のインスタンスを作成して、Form2 に送るという方法も考えましたが、   そうすると Form1 が不要になったときに Dispose() すると Form2 も落ちてしまいます。 
 【マイト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)メソッドで呼び出し 
  メッセージキューを勉強中なんですが、   MSMQとMessageQueueクラスって何が違うんでしょうか? 
 >>244   ありがとうございます 
 この場合、もう二度と Form1 を使わないという状況であれば、Form2 の ShowDialog を 
 呼び出す前に this.Hide(); で隠しておいて、戻ってきたら this.Dispose(); でしょうか 
 Hide() だけで処理を抜けるコードを書き忘れて、いつまでもプログラムが残り続けるバグを 
 やったので、二度と戻ってこないフォームは Dispose() したいのです 
  今思ったのですが、そういう使い方だとむしろ Form2 を非表示で実行しておいて、   その中で Form1 を呼び出すべき?   で、Form1 を抜けたら this.Show(); とか 
 >>243   頭悪そうだけど、単にバッキングフィールドの値をそのまま返すのではないケースを 
 「何らかの処理の結果を返す」と言っている。   
 処理 = 高価な処理ではない。 
 重かろうが単なる足し算だろうが処理は処理だ 
  Applicationに共通のパラメータ持って、Form1とForm2で共有しちゃダメなんか 
 使い方次第じゃないかなとは思う   双方で同時に書き換えたりするならやめたほうがいい      それ以前にタダクソダサイと思う 
 自作ツールをソースコード付きで公開したいのですが、   パブリックドメインソフトにするのが最善ですか? 
 .netで簡単に実現できる機能(メールや圧縮、画像処理等)をネイティブCのアプリで利用したいです。VC++6.0の(C++ではなく)C言語で作るコンソールアプリでです。   C#で作っでdllを作って、C++のdllでそれをコールする関数を公開すれば実現可能ですが、もっといいやり方ないでしょうか? 
 >>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>を内蔵するクラス作って   public int this[string p]{   get{ /* ここに検索して結果を返すコード書く */ }   }   でおkなんじゃねか?知らんけど。 
 >>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で使っています 
  ここでいいのかわかりませんが、質問させてください。   C#でフレームワーク ASP.Net MVCで作っています。      テーブルのフォームをPOSTしたいのですが、   動的に作成した行をどのようにサーバー側で受け取ればよいのかわかりません。      <td>       <input class="form-control" id="no1" name="no2" type="text" value="" />   </td>   <td>       <input class="form-control" id="no2" name="no2" type="text" value="" />   </td>         このように、複数行があって、noの後ろの数値は、行を追加したら増えるように   javascriptで制御しています。      サーバー側の処理として、引数を    (string no1, string no2, ・・・)と列挙してすべて書けば、   POSTデータを受け取れることは確認済みです。      ただ、ユーザーの操作で行を何行追加するかもわからず、あらかじめ想定する   最大数の引数を列挙するのも現実的ではありません。   すべてのフォームデータを一挙に受け取って、   サーバー内部のロジックで処理する方法はないでしょうか。 
 どうせJavaScript書いてるんならJavaScript側でJSONの配列に纏めてからAJAXでポストするのもアリ 
 [[[ ][ ]]]\[[]] [[[]]]],[[[ [][] ] 
 Entity FrameworkでDBへのselectとかのリトライしたい場合ってどのようにすべきでしょうか   一時的なエラーだったりしたらもう一回トライとかしたいのです   例外全キャッチするのも無駄なのかなぁと思いまして 
 普通のRDBなら一時的なエラーなんか滅多にないだろ   400でいいよそんなもん 
 >>280   DbExecutionStrategy 
  [[[ []]]]*[[ [][] ][] } } {} [[[ 
 人間はILコードを覚えてハンドアセンブル出きるようになるべき 
 winformの左辺や上辺をドラッグするとフォームのサイズが変わらずにフォームが移動してしまいますが   サイズを変更するように設定するプロパティなどはありますでしょうか   コードを書く必要がありますか? 
 >>288   古い脳の感覚でいえば、IL なんてハードウェアの裏づけのない、空想上の約束にしか過ぎないので、覚える気が起きない 
 x86-64 でおなかいっぱい 
  >>291   CASL くらいはやったよ、8080、z80/6809/80x86/z8000/r3000、まだ若かったからどんどん覚えることができたんだ… 
 でも、もうおなかいっぱいだ… 
  次元が違うだろ   ILは高級なオブジェクト指向言語   そもそも機械語に似せることを意図されていない 
 >>293   ハードウェアマシン語とプログラム言語との間に、なぜ仮想マシンと仮想的な言語(IL/JVM)が採用されるようになったのか?そこが今でも判然としないのです… 
  >>294   ドライバは何故存在するの?つってる様なもんだぞそれ 
  >>295   いえいえ、階層性を全否定するわけではありません 
 「仮想マシンと中間コード」の必要性を問うているのです… 
  仮想マシンに焦点を絞るなら、ハードウェアの差異を吸収する為では   (.netはJavaVMほどあちこちに移植されてないというだけで)      ILに関して言えば、複数の言語(C#、VB.net、F#、他)を共通のフレームワーク上で動かせる様にする為 
 >>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) 
 でないとまずいと思うんですが 
  そうだねだからどうしたの   資料公開してる本人に言えばいいんじゃないの 
 大して変わんねーよ   そんなに処理分けたきゃ   別exeにしてキックしろよ   後はできるならOSがうまくやるし   OSがうまくできなかったらそりゃできないんだろうよw 
 >>314   いや、
>>312 の言う通りと言ったつもりなんだが・・・ふらっと怖いな 
  おバカwebを鵜呑みにしない有望な
>>312 なんやからもう少し優しくレスしてやれよw 
 この例だとForよりAggregate使ったほうがいいな 
 >>318   自分の日本語に疑問を持たない君の方が怖いよ   
 「これ(A)」でいいのか、Bじゃないのかって質問に「それ」で正しいと答えたら 
 質問した方は普通は正しいのは「これ」の方だと理解する 
  C♯でJavaScriptで生成されてるチャットサイトからコメントビューアを作りたいのですが、JavaScriptが生成したHTMLを取得するのに適したライブラリってどれでしょうか?   Formアプリで作る予定ですが   webBrowserコントロールが一番手軽でしょうか? 
 >>322   追記 
 使う.Net frameworkは4.6.1です 
 Nugetで公開されてるライブラリ等でも問題ありません 
  javascriptで生成といっても生成元になるデータを何処かでリクエストしてる筈   そっちを解析して直接的にHttpClientでgetしたほうがええよ 
 ありがとうございます   単純にセッションが必要っぽそうだったのでHttpClientでもいけそうです   使い方調べ直します 
 おバカ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に書いてあることは 
 ○:日本語訳は 
  グラフィックの扱いについて教えてください      panelに複数の画像イメージを貼り付けたいと思います   (トランプのカードを任意の枚数置くような感じです)      WidthとHeightをpanelのサイズに合わせて、Bitmapオブジェクトを   作ってそこに必要な画像を貼り付けて、最後にPaintイベントでその   ビットマップを Graphics.DrawImage で表示すれば良さそうだ、という   認識です      問題はBitmapオブジェクトに画像を貼り付けることで、メソッドを   調べても、Bitmapオブジェクトの任意の場所に任意のイメージを   貼り付けるものはなさそうです   そもそも用意した画像は Image.FromFile で準備しているのですが、   Imageオブジェクトを貼り付けられるのは Graphics.DrawImage   メソッドになるので、そもそも Bitmap オブジェクトを用意すると   いう発想が間違っているような気もします      多分いろいろ間違って認識しているので、どこから考え直せばよいか   教えていただけると嬉しいです 
 >>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); 
  あ、ごめん   Graphics g = Graphics.FromImage(canvas);   g.DrawImage(image_1, image_1_x, image_1_y);   g.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が配置先のイメージ、   bmp2がbmp1に配置したいイメージだとしたら以下になる      Graphics g = Graphics.FromImage(bmp1);   g.DrawImage(bmp2, x, y); // bmp1の(x, y)にbmp2を書き込む   g.Dispose();   pictureBox1.Image = bmp1;      これだけでパネルにbmp1が表示される 
 >>340   ありがとうございます 
 思っていることが問題なく実現できました   
 できるようになってみると、一体何を悩んでいたのか、自分でもわからなくなってしまいました 
 多分、DrawImage で書き込む先がVRAMだと思い込んでいたのでしょう 
  private void Form1_ResizeBegin(object sender, EventArgs e)   {                    leftEdge = this.Left;                    rightEdge = this.Right;                    topEdge = this.Top;                    bottomEdge = this.Bottom;   }      private void Form1_ResizeEnd(object sender, EventArgs e)   {    if ((rightEdge < this.Right) && (topEdge > this.Top))    {      // 処理に入らない    }   }      このコードでフォームを右上にドラッグして拡大した場合に処理に入らないのですがどこがおかしいでしょうか  
 右上にってことは事後の方が 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()   {       BindingSource objBind;       DataTable objData;       string strFilter;       objData = (DataTable)DataGridView1.DataSource;       if (IsNothing(objData) == false)       {           objBind = new BindingSource();           objBind.DataSource = objData;           strFilter = "Color like '%" + txt_Condition.Text + "%'";           objBind.Filter = strFilter;       }   } 
 >>346   ご回答ありがとうございます 
 イベントは有効です 
 左や上や左上への拡大縮小ドラッグは正常なのですが左下や右上がおかしいです 
 提供していただいたコードを試したのですが、何故かは分からないのですが rightEdge < this.Right がfalseになっています 
 もう少し調べてみます 
  申し訳ないけど、問題を再現できるそのまんまのコードを提示していない時点で   確実に原因はあなたの勘違いにあると断言できる 
 Listを値渡しすべき所が参照渡しになってたせいで 
 くっそハマったんだけど 
 こういうのって、C#の解説本1冊読めば 
 注意しろって書いてあるもんなの?   
 参照渡し云々って単語はかろうじて知ってて 
 ↓のサイトをたまたま見つけて、偶然解決出来たけど  
https://webbibouroku.com/Blog/Article/list-copy     エラーや例外にならないバグが怖すぎる・・・ 
 イメージの配置はできるようになりましたが、いろいろ触っていると、チラツキが   気になるようになってきました   テストしてみたところ、下記のレベルでもチラツキが発生します        private void timer1_Tick(object sender, EventArgs e)     {      Graphics g = Graphics.FromImage(canvas);      g.FillEllipse(bg_brush, x, y, radius, radius);      x += 5;      g.FillEllipse(fg_brush, x, y, radius, radius);      count++;      g.Dispose();      pictureBox1.Image = canvas;      if (count == 10)      {       count = 0;       timer1.Stop();      }     }   timer1.Intervalは100msにしてあります   チラつきを押さえるには、フォームの DoubleBufferd を true にすると良いと見ましたが、   true にしても false にしても変わりないようです   そもそも PictureBox は内部処理でダブルバッファリングを行っているとも見ました   まだなにかできることはあるのでしょうか 
 書いてませんでしたが、bg_brushは背景色の、fg_brushは前景色のブラシです      Brush bg_brush = new SolidBrush(SystemColors.Control);   Brush fg_brush = new SolidBrush(Color.Black);      で定義しています 
 canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height);      として定義しています 
 DoubleBufferdとか触らずともこっちではちらつかないけどなあ   ちらつくってのはどういうふうに見えることを言ってるの?   panelやpictureBoxのサイズやradiusの値もさらしてみては? 
 どこで何やってんの不明瞭だから当てずっぽうだが   下手に自前描画してるチラつくなら大体OnPaintBackgroundのせい 
 https://ideone.com/s4ddqO     これが全コードです 
 空のWindowsフォームアプリケーションで生成されたフォームに、ボタンとパネル、 
 PictureBoxを配置しただけの状態です 
 パネルとPictureBoxは、DockをFillにしてウィンドウサイズに合わせてあります 
  これで、timer1のIntervalを50msにすると、はっきり分かる程度にちらつきます 
 >>361   やってみたけとちらついたりはしないねw 
 ただフレームレートが低いから滑らかに見えないだけ 
  解決のヒントにはならないだろうけど      ちらつきって何かということについて   すでに表示されてるものが一瞬透明に見えるから表示がおかしく見えること      たとえば半径100の円が横に5ドット動くとする   普通に考えたらほとんどの円に背景は隠れたままだけど何も考えないで適当にやると   背景が一瞬見えてしまう      一度円を消してなにもない状態を表示して   次に円を書いてるから問題がある      何もない状態を表示しなければいい 
 >>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+の動作を把握するとかゲームなどでの実装方法を探すかした方がいいと思う 
 残念ながら俺の知識ではここまで 
 ごめん   >Panelはデフォルトでダブルバッファが有効だというのを念頭に入れて   Panelはデフォルトでダブルバッファが無効だというのを念頭に入れて   の間違い 
 うーん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使ってるのが悪いんじゃねえかなあ      canvasはPanelのPaintで描画するようにして   PanelのDoubleBufferedをtrueにするかOnPaintBackgroundの無効化でチラ付かなくなったよ      あとチラつきとは関係ないけどお行儀的には再描画はTickで   Invalidate(true)呼び出してPaintのタイミングはフレームワークに任せるべし   Tick毎に無駄にImage/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の時代だって存在しなかったよ 
 っていうか、言っちゃわるいけどフリッカーが発生する原因を理解していればそんな間抜けな台詞は 
 出てこない 
  なんか垂直同期(笑)とか書いてるのもいたけど、   頭の中80年代で止まってるんじゃなかろうかw 
 DataGridViewで、複数のカラムを基準にソートするにはどうしたらいいでしょうか。   以下のようなイメージです。      元データ   ------   4   2   1   4   2   1   5   4   6   7   1   3   1   6      これを、カラムのヘッダーセルのクリック操作だけで、以下のように出来るようにしたいです。   ------   1   3   1   4   1   6   2   1   4   2   5   4   6   7  
 プロパティだけでは無理   各列のSortModeはAutomatic以外にして   ColumnHeaderClickイベントで自分でソートする必要がある   実際にどうやってソートするかはDataGridViewに表示してるデータをどうやっているか次第   ところで下の状態で1番目の方のカラムヘッダをクリックしたらどうなるの?   とか色々場合があってUIというかUX?を決定するのが結構面倒 
 さすがに垂直同期はネタだろ   釣られる奴がいるとは思わなかったけど w 
 >>389-390   複数列でのソートは、Kotlin なら、   
 配列.sortedWith(compareBy({ 列1 }, { 列2 }))    
 C# は、よく知らないけど、こういう感じ?   
 配列.OrderBy(列1).ThenBy(列2) 
  教えてください   キャストが上手くできずに困っています   具体的には、VisualStudioでデバッグのウォッチウィンドウに      Enumerable.Empty<int>() is IEnumerable<object>      と入力するとtrueと表示されるので少なくとも条件が整えば   IEnumerable<int> は IEnumerable<object> に   キャストできるとおもうのですが、プログラム上で安直に      Console.WriteLine(Enumerable.Empty<int>() is IEnumerable<object>);      を実行すると画面にFalseと表示されてしまいます      ウォッチウィンドウ上とプログラム上で何か条件の違いがあって   このようなことが起こっているのだとは思いますが、理解が不十分で解決方法が分かりません      そもそもIEnumerable<T>のTは共変なのでintがobjectにアップキャストできる以上   IEnumerable<int>も無条件でIEnumerable<object>にキャストできると   思っていたのですが、この部分に何か誤解があるのでしょうか      VisualStudio15.6.7、コンソールアプリ、ターゲットフレームワーク4.7.1でテストしています   よろしくお願いします 
 >>395    レスどうもありがとうございます。その後色々と試してみると、プログラムで      Console.WriteLine((Enumerable.Repeat(4649, 1) as IEnumerable<object>)?.First() ?? 184);      を実行すると画面には184と表示され、教えていただいとことと辻褄が合うように思います   また、これまでの結果から考えてウォッチウィンドウで      (Enumerable.Repeat(4649, 1) as IEnumerable<object>)?.First() ?? 184      の値を調べれば4649と表示されるのかなと思いきや「メモリを読み取ることができません」と表示されたので、   こちらの挙動はおっしゃる通り分からない(バグ?)と考えるしかなさそうです      ジェネリックでないIEnumerableはLINQが使えないのでこれまで      if (x is IEnumerable<object> enumerableObject)   {     ...   }      と書く場面があったのですが、これではIEnumerable<値型>が拾えなさそうなので      if (x is IEnumerable enumerable)   {     var enumerableObject = enumerable as IEnumerable<object> ?? enumerable.Cast<object>();     ...   }      とでも書いておこうかと思います(今のプログラムではxがジェネリックでないIEnumerableになることはないのですが)   もっと良い方法があれば教えてもらえると嬉しいです   名前空間A と名前空間A.B がある場合に、A.B内からAのクラスを扱うにはどうすればいいのですか? 
 >>399   クラスとは違って、やはりそうやって使うものなのですか 
  嫌なら全部同じ名前空間内に入れ込んでしまえ   悩まなくて済むぞ 
 >>405   逆に無駄な混乱が起きない? 
 同じ名前のクラスとかあるとちょっと面倒じゃない? 
  C#好きだけどnamespaceでネスト一つ深くなるのはあかんわ 
 >>406   全て自分で書くコードならいいんだけどね。サードパーティのライブラリのクラスと衝突する可能性なんていくらでもあるから。 
  >>406   書き分けのために命名が歪むのは良くない 
 NM1.Class/NM2.Class 
 NM1Class/NM2Class 
 単にプリフィクス付けるだけなら 
 名前空間があろうとなかろうとやってる事は同じ 
  >>406   むしろ同じ名前でも被らないようにする仕組みなんだが... 
  やたら長い名前付けて重複を避けるのさ。   ダイビングがかったるいって?   最初のusingに書くだけだから大丈夫。 
 >>406   自分(同じチーム)で同じ名前の違うクラスが必要になるケースは 
 少ないが(ないことはない)他人が書いたライブラリで既に使われているのと 
 同じ名前が必要になるケースなんかいくらでもあるよw   
 例えばSystem.Drawing.Point以外のPointが使えなかったら困るでしょ   
 あと、名前空間の目的は名前のバッティングの回避だけじゃない。 
 むしろ一番の目的は分類と整理でしょ。 
 名前空間が使えないライブラリは全部のファイルをデスクトップに置くできない人と同じ   
 適切に命名され適切な階層構造をもった名前空間は索引の機能を持つし、 
 コードのコンテキストを明確にする。   
 System.Drawing.PointがPointだけで2Dグラフィックの座標だと分かるのは、 
 プログラマはそれがSystem.Drawing内の型だと知っているから 
  >>412   普通にdrawingのcolorとmediaのcolorがバッティングしてるじゃん 
 それと自作のcolorとこれまた別の奴の作ったcolorがバッティングするだけでもう面倒臭くて死にそうになる 
  もっというとwpfでも別のcolor作ってんじゃん   バッティングうぜぇんだよ      こんな簡単なクラスでもう再利用効かないんだから名前空間まで作って管理するなよバカっタレかよ   当のMSからもうまともなことやってねぇっていうかできないんだから   いい加減ファンタジー設計はやめるべき   いや、もうファンタジーじゃないな   メルヘンの領域まで入ってる 
 >>414-415   何を言ってるのか意味がわからねいよ。 
  この程度で死ぬほど面倒臭がってたら、プログラミング自体が向いてないな。 
 >>416   バカじゃん 
 何でwinformにcolorあるのにwpfでも作ったの? 
 再利用できてないじゃん 
 役に立たないじゃん 
 名前空間分けてそれで? 
 新しいもの作ったら元気一杯に捨ててるじゃん   
 ってとこに集約する 
  >>421   反論できないならcolorクラスはもう作らせないぞ 
  全く話題になってないけどC#7.3も正式リリースされたぞ   念願の where T : Enum 
 >>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   参考サイトありがとうございます 
  ポータブルアプリの設定ファイルを扱うなら何がスタンダードですか?   XmlSerializer使ってxmlファイルにするか   Win32API経由でレガシーなiniファイルにするか。      やっぱ前者ですかね? 
 >>444   セオリー通りappsettings.jsonやろ普通 
  >>444   人の手で編集するかどうか 
 するならcsvファイルかxlsがええで 
 Excel使えるから 
 xmlもiniもjsonも編集ツールが無くてゴミ 
  >>448   ほう 
 じゃあ、編集ツール出して見ろよ 
 そんな誰も編集できないフォーマットで設定とか言ってたって全く説得力ないよ 
 はい、論破 
  yamlとかtomlもまぁアリだな   jsonはtailing commaがちょっと煩い 
 >>450   C#ならappsettings.jsonで良くね?IOptionとの相性いいし 
  >>452   JSONが標準だとは思うし, まぁJSONにする 
 が, リスト末尾のカンマは許して欲しい 
  なるほど、今時はJSONですか。   ただ、少し調べて見たところweb系の構成ファイルとして使う?みたいで自分の思ってるのとは違うのかなと感じました。      後出しになってしまって申し訳ないんですが、自分のイメージしてるのはFormアプリで例えば「最前面に表示する/しない」だとか「昇順/降順で並べる」みたいな、チェックボックスやラジオボタンの選択内容を起動時に読み込み、終了時に書き込みする想定です。      appsettings.jsonは読み込みしかなさそうだったのですが、書き込みってありますか?自分でjson形式にコンバートしてベタに書き込みしろってことですかね? 
 >>454   その用途ならアプリ外からエディタで編集させることなんて無いだろうから、正直なんでも良いと思う 
  jsonならNewtonSoftがあるけどyamlシリアライザだとどれがデファクトなんだ? 
 jsonならNewtonSoftがあるけどyamlシリアライザだとどれがデファクトなんだ? 
 >>454   JSONで読んだり書いたりするなんてどうとでも出来る 
 まぁXML以外ならなんでもいいと思うけどね 
  前も書いたけど騙されたらダメwww      .NETには標準のシリアライザがいくつも存在するんだから、特に理由がないかぎり   あえて外様を使うとか頭の悪い中学生じみてる 
 var exts = {".jpeg", ".jpg", ".png", ".gif"};      var f = Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories)                        .Where(c => exts.All(extension => !c.EndsWith(extension)))                        .ToArray();      extsの拡張子以外のファイルを抽出したいんだけど   大文字小文字区別せずに拡張子だけを比較する方法ないですか?      もっと効率いい方法ある気が・・・ 
 !c.ToLower().EndsWith(extension)   で対応します 
 >.NETには標準のシリアライザがいくつも存在するんだから、特に理由がないかぎり    >あえて外様を使うとか頭の悪い中学生じみてる      いくつもあるの? どんなのがあるのか三つくらい教えてください。   ビルドするごとに消えるのでは使いにくいというか何度もビルドするのは普通だとおもうので   それでは使い物にならないので、ビルドしても消えないものがいい。 
 >>459   今時その認識は正直ヤバい 
 今の.NETの標準のシリアライザはJSON.NET 
 Core系では完全に標準シリアライザとしてフレームワークで使われてるし、MSDNにもJSONならJSON.NET使えと書いてる 
  >>463   DataContractJsonSerializer でなくJson.net のソースは? 
  設定ファイルは、csv, yaml, json。   Java系のant, maven などは、XML。   Mac系は、property file      chef, vagrant では、Ruby。   Gradle では、Groovy      Haxe のserializer は、数個のプログラミング言語に渡って機能するし、   json, xml みたいに型情報が無くなったりしない      もちろん、Ruby, Groovy も、   プログラミング言語自体が設定ファイルだから、そのまま使える 
 DataContractSerializerは絶対にファイルに書いちゃダメってわけではないけど、データのスキーマがあらかじめ決まってる場合には使えない   あくまで書く側と読む側とで解釈が共通でありさえすれればよくて、その中身を人間は気にしないよ、ってときに使う 
 調べが足りずすみません。   NewtonsoftのJSON.NETというのを使えばいいみたいですね。   .NET標準のXmlSerializerと同じような感じの使い方ですね。      ちなみに、XMLはやめた方が良いと意見ありましたが、   どういった理由からでしょうか? 
 XMLは全世界共通の汎用データ交換フォーマットであることが採用する唯一の理由であり、   JSONが主流になった時点で既に存在意義が失われているから 
 XML は、JSON よりも可読性が高いから、人が見る・書く設定ファイル。   例えば、アプリのフォームのデザインの設定ファイルに使う      人が見ない、単にコンピューター間のデータの受け渡しには、JSON      XMLを使うと、ややこしい 
 >>471   高くねーよ 
 タグの対応が外れたら素人に発見できんのか? 
 プログラマならともかくパンピーじゃ無理 
  XMLは可読性がわるい。つまり直観が効かない。機械向きで非人間的だから設定ファイルには不向き。   たしかに寄ってたかってよく考えてあるのは解る。それには感心するが、寄ってたかって考えすぎると   たいていは失敗する。その代表的な例としてはXMLもっとも良い例のひとつだろう。つまり駄作だなとおもう。 
 jsonはいい加減コメントの使用を本家が認めるべきだわな 
 >>471   XMLが読みやすいってwサヴァン症候群なんおまえ?w 
  コメントがあると独自スキーマを作り始めるからわざと外したと言っているけど病的だわ   これだから実務屋でない奴は 
 そいつC#スレとPythonスレでよく見かけるが   サヴァンかどうかはともかく発達障害は煩ってるぞ 
 >>460   EndsWithの第二引数は使えない? 
  >>476   悪名高いJSONライセンス(Good, not Evil)も作ってるからなぁ 
  XMLのタグの対応って言うけど   JSONも例えば}が数階層のどっかで一つ消えたら人間に対応できなくなるよね 
 データの規模が大きくなったらXMLのほうが断然有利   JSONとXHTMLを等価変換するスクリプトを書いてJSONだけでウェブサイトを構築する実験を社内でやった事があるがJSONのスコアは酷いものだった   JSONはネストが深くなると使い物にならん 
 何のデータも示さずjsonは使い物にならないと言われてもねー 
 データは自社の資産だから常識的に勝手には公表できない   実験方法は簡単にだけど示したのだからデータが欲しければ実験して検証すればいい      逆にJSONが優れていると言うなら   根拠無しではなくデータなり検証方法を示してほしいね 
 https://www.infoq.com/news/2013/08/xml-json-performance     同じくらいのパフォーマンスというならまぁ納得出来る 
 クソみたいなパーサ使わにゃネスト深さでパフォーマンスが悪化するわけねーだろ 
  >>486   再現可能なサンプルぐらい作れ 
 今のままだと説得力ゼロで誰も納得しねーよ 
  XHTMLって死んだ技術だと思うが   10年ぐらい前の世界かな?      xmlが見やすいって人は初めて見た 
 >>489   5chに書き込むためだけに実験費用払いたくねえよ 
 こういう実験はサンプルとして人を雇わないとできないんだよ 
 思考停止ノータイムでボタン押さずに常識的に少し考えてからレスしてくれ頼むから 
  再現するJSONとXMLを一個ずつ用意すれば終わるのに自分以外の人間が必要か?   プログラミングやったことありますか? 
 >>492   あんたは論外 
 パフォーマンスの話なんて誰もしてない 
 今はみんな生産性、可読性、保守性の話をしてるんだよ   
 それを測るためにJSONとXHTMLを等価変換するツールを作った   
 グループAの人達にはJSONでタグ打ちさせてそのJSONをツールでXHTMLに変換した   
 グループBの人達にはXHTMLで直接タグ打ちさせた   
 完成するまでの時間や完成したXHTMLのバグ密度など様々なメトリクスを計測したら直接タグ打ちしたグループBのほうがスコアが高かった   
 グループAとグループBのスコア差はネスト数が深いほど大きくなった   
 そういう話な 
 パフォーマンス比較なんてくだらん話は他所でやってくれ 
  >>493   人間のやることじゃないことを人間にさせて比較する意味がよくわからない 
  >>493   無駄な変数が多すぎて何を比較したいのか分からなくなってるな 
 仕事できなそう 
  テキストデータをバイナリエディタで書かせるような意味不明な実験を   やって悦にいる会社に勤めてかわいそうとしか思えない   上が暗愚だと下が苦労する 
 馬鹿しかいないのか      人間がやる意味がないとか言ってる連中は実験の趣旨を全く理解してない      だから思考停止してノータイムでボタン押すのやめろって言ってるんだよ      ほんと馬鹿の相手するの疲れるな 
 こいつはなかなか面白いな, 素でこのコミュ力ならなかなかの逸材だし作っているならよく理解している 
 >>489   上が暗愚たと下も思考停止で伝染するんだな 
 バイナリデータでutf8の入力しづらさも検証したか? 
  いや面白いな   どこかの技術系のサイトでネタにしてくれないかな 
 結局、手動で設定するファイルであるなら   jsonもxmlもゴミだろ?   なんの話してんの? 
 >>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なしで読めるの?   COM使って読むとか言わないよね? 
 >>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を使うのは早くて使いやすいからだと思う   使いやすいと書くとまた難癖つけられそうだけどw 
 >>556   どういう観点で見たときの使いやすいなのか説明が無いよね? 
  自分が json を使うとしたら、   ・周りが使ってるから   ・xml と比較して見た目が好み   って程度の理由だなあ。      どっちが優れてるかの比較なんてそれ自体がズレてるような。 
 結局Windowsのフォームアプリの設定ファイルは何が適してるんだよ   jsonでもxmlでも大差ないよ好きな方どうぞって結論でいいの? 
 >>562   そもそも今時フォームアプリなんか採用する時点で全力で時代に背を向けてるんだからどうでもいいよ 
  >>562   configファイルにjson形式で書き込む 
  >>564-565   質問者は「ポータブルアプリの設定ファイル」と言ってる。   
 ポータブルアプリがUSBメモリに入れて持ち歩くような物のことを言ってるなら、 
 Settingsは明らかに不適切   
 あと、個人的にあんまりアプリケーション設定使ったことないんで勘違いしてるかもしれんが、 
 これって結構制限も多いしいろいろ面倒だよね 
  質問者ですが、こんなに荒れてしまうとは、、、申し訳ない。      おっしゃるように通常のWindowsフォームアプリならSettingsがデザイナで設定できるし楽なんですが、   ファイルの格納先がローカル(Roamingだったかな?)になるのでUSBメモリなどに持ち運んで使うポータブルアプリとしては採用できないというところでの質問でした。      特に設定ファイルの可読性を求めないようであれば、   形式としては古いが追加ライブラリ不要のXMLか、   スタンダードな形式だが別途追加ライブラリ必要なJSONか、   好きな方を選べって感じですかね。。 
 ユーザー定義リソースにしてexeに直接書き込むって方法もあるよ 
 >>568   USBで運ぶポータブルアプリ程度ならApplicationSettings保存でもいいんじゃないの? 
  アプリケーションスコープにするとアプリから書き込みできないよ 
 >>571   でもアクセスの速度違うときあるからね。 
  すいません。   初心者なのでこちらに移動してきました。   MVC的な設計で      初期設定値を入力するフォーム   ↓   初期設定値を格納するクラス      というのを作りたいのですが、      A.    クラス側に各変数のプロパティを作成   フォームからプロパティを介してクラスの変数に値を代入      B.   クラス側にフォームの初期値を取りに行くメソッドを作成   クラスからメソッドを実行してフォームに値を取りに行く      のどちらが良いのでしょう?   自分ではAの方がよさそうな気がするのですが、一般的な設計としてこうするというのがあったら教えてください。 
 ケツの穴から手をつっこんで奥歯をがたがたみたいな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   そりゃ仕様満たしていないなら比較以前の問題だわな 
 仕様満たして完成までの期間で比較とかならともかく 
  まあ、熟練者になれば、素早く仕様通りのコードを綺麗に仕上げて来るからな。   初心者は先ず動くコード、次に仕様通り、最後に綺麗なコードでいいよ。   時間掛かるのはこの際問題にしないw 
 リピーターが多い汚いコードと   リピーターが少ない綺麗なコード      後者はゴミだよね 
 世の中の多くのバカが勘違いしてるんだけど      綺麗なコード==間違えやすい製造に時間がかかるコード      じゃないんだよね   綺麗なコードはバグが少ないし製造も早い      汚くても動くコードを早く書け!なんて言ってるやつは根本的に何かがズレてる   そんな方針でコーディングしたら汚くて動かないコードを時間をかけて作る羽目になる 
 洗練された華麗なコードとインデント揃っただけの綺麗なコードを混同してるばか発見 
 >>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シリアライザーって今使ってるとやばいの?業務アプリの設定ファイルほぼこれで今までやってたんだが。。   とりあえず今やってる案件JSONで見直してみるか   一人で開発やってるとついついこういうのに遅れがちになるなぁ 
 csvとJSONなら圧倒的に後者のがメリットあるけど、   xmlとJSONなら規模がでかくない限りどっちでも良いや 
 >>594   業務ドカタ系でJSONなんかほとんど無いから安心しろ 
 客サイドは情シスですらJSON何それとか平気で言いやがるしOSSのライブラリが必要なのもネック 
  >>596   Excelで編集できるできないって違いもあるのに 
 どこが「圧倒的」なの? 
 根拠もない主張を強く推すなよ 
 願望だろ?お前の 
  PCのiTunesって曲の情報管理全部XMLだよな 
 どうにかならんのか  
   Ant, Maven とか、Java系は、XML。   Android 画面の設定ファイルとか      Windows でも、XAML で画面設定する      プロジェクトの設定ファイルも      JSON を設定ファイルに使うのは、JavaScript を使ったもの。   例えば、Node.js を含んだ、VS Code      他には、プログラミング言語自体が設定ファイルになるもの。   Ruby, Groovy, Haxe 
 >>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は実際優れてるんだよなあ   低品質なPGでもほぼ完璧に見積工数通りに仕上がるし、バグもほとんど出ない   金持ちな客からきっちり工数見合いで金取れるならSIerにとってこれほど好都合な言語はない 
 工数が低減できるかどうかよりも見積が精確にできることの方が管理者にとっては重要ってわけだね 
 大体この時間にABENDしますって   異常停止をルーチンワーク化して運用している所があったな 
 現場運用だと稀によくある   開発側がそれを織り込んじゃダメだけど 
 >>594 だけど 
 蒸し返した話にレスくれてありがとう 
 自分の用途にはxmlでも問題なさそうでとりあえず安心した 
  SVGやMathMLのような外部の名前区間が出てくるとか、Xamlのようにかっちりしたものを書きたい場合はXMLが有利   文字列や数値しか出てこないような簡単な構造ならJSONの方が便利なことも多い。   Trueなのかtrueなのかとか考えなくても良くて、エディタがサポートしてくれるし、エスケープの仕様とかがシンプルで、ファイルも小さい。逆に言うとその程度なのでわざわざ切り替えるほどでもないとは思う 
 >>593   VCわけないんですか。 
 うーん・・・。 
 いろいろな設計方法があるということですね。   
 インスタンスの生成順として 
 A→B 
 A→C 
 とAからCにBのインスタンスを渡す方法は分かるのですが、   
 C→A 
 A→B 
 とインスタンスを生成した時、CにBのインスタンスを返すことって可能なのでしょうか? 
  >>619   「返す」ことにこだわりがあるのなら結構難しい 
 そこにこだわらず、単にCからbを扱えれば良いのならa.bでアクセス可能だろう 
  >>619    何でわざわざ話を複雑にするの?   class C   {     A a;     B b;        public C()     {       a = new A(this);       b = new B(a);     }   }      例えばこれじゃダメなの?   DIコンテナとか諸々のイディオムを知らない初心者だからまぁしゃあない   MVCでもMVVMでもいいからチュートリアル的なものをひとつやっとくとだいぶ違うとは思う 
 >>622   まず「返す」の意味が分からないんだよな  
>>619   何のためにその実装が必要なのか、まずはそっちから 
 普通は複数の派生インスタンス扱いたいのならどこかでまとめて管理する方が楽 
 横に伸ばしていくんじゃなく中心から引っ張っていく形 
  馬鹿なこと考えないでジャンケンゲームでも作ってろって 
 >>619   今時のマルチレイヤな設計ってのは、「汚い場所」をどこかに決めて、そこが依存関係の解決を一手に引き受けるようにするんだよ 
 で、他の部分は「汚い場所」に直接依存しないようにするの  
>>623 の例でいうと、Cを「汚い場所」とするならAがCを直接参照するのは良くなくて、 
 AからCのメソッドをコールバックしたいんだったらインターフェイスを介して呼ぶようにしたりする 
 汚い場所をどこにするかだけど、フォームアプリならフォームだったり、Webアプリならコントローラだったり 
 処理の起点となり、かつ、どのみち単体テストが困難な場所を選ぶのが一般的だ 
  なんだか要領を得ないからわからないけど   Bを操作するメソッドをAに用意してCがA経由でBを操作するのはだめなのか? 
 MVC をわかってないような奴に、何も教えられない      まず、無料のRails チュートリアルで、MVC webアプリの設計から学べ 
 Railsってモデルがフォームの構造に依存するからなあ   あんなのAccessのフォームなんかと同レベルだよ   変な癖がつくから初心者には適さない 
 >>632   何から始めても理解できない 
 分離するどころかやればやるほど結合が強くなる現実に打ちのめされるだけ 
  やってみたけど難し過ぎて手に負えなかったってことだね。 
 >>632   Vue.jsあたりかな 
 XAMLはテンプレートやコマンドバインディングが複雑すぎて本質を掴みづらい 
 WebのMVVM系フレームワークのほうがずっと見通しが良くてMVVMの本質を素直に実装してる 
  まずはUNDOなりマクロを実装するのに何が必要か   考えると、「C」の動きが見えて来るかと思うけどね      GOFの最初の章にも説明はあるよ 
 >>623   アクセシビリティに一貫性がありませんってエラーが… 
 internalでインスタンス生成するとOKなんですが、フォームクラスはpublicで宣言してるんですけど。 
  >>625   ご指摘を受けてメインのフォーム上でインスタンス管理しようとしているのですが、 
 アクセシビリティの一貫性というエラーが出てきています。   
 public partial class ExaminationForm : Form 
     { 
         public InitialSettingForm initialSettingForm; 
         public InitialValues initialValues;   
 で最後の行にアクセシビリティ一貫性のエラーが・・・。 
 3行目のpublicをinternalにするとエラー消えるのですがなんでだろう。 
  そのビューの入出力項目と隠し項目とユースケースを抽出するだけだよ      ログイン画面だったら   入出力項目として   ・ユーザーid   ・パスワード   隠し項目は無し   ユースケースは   ・ログインする      なので   class LoginViewModel {   public string UserId { get; set; }   public string Password { get; set; }   public void Login() {   // login impl   }   }   こうなる      あとはViewがVMを監視するために変更通知イベントなどを実装しましょう   それだけ 
 >>638   InitialValuesクラスがinternalなんだろ 
 publicに変えれば意図通りになる 
 言っちゃ悪いけど正しい設計とか気にするレベルじゃないと思うよ 
 まずは汚くてもいいから一本何か形にできるようになってから考えればいい 
  >>641   ああああああああ! 
 そこなのかあああ!   
 classってデフォルトでinternalになるんですね。 
 というかinternalって省略されるから気づきませんでした。 
 ここで半日費やしてたのでものすごく助かりました。 
 ありがとうございます。m(__)m 
  >>641   一本ゲーム作ったんですが、form1(初期値)、form2(ゲーム)にほとんどぶっこんだオブジェクト指向ほぼ無視プログラムになってしまったので、 
 ゲーム内のデータ管理とform2だけでも分離しようとして悪戦苦闘しています。   
 はるか昔にBasicやったぐらいなので、インスタンスの参照渡しとかその辺がうまく実装できなくて・・・。 
 勉強用に買った本にもインスタンスの参照渡しなんて全く書いてないし・・・。(´・ω・`) 
  あれでも      //インスタンス生成   InitialValues initialValues = new InitialValues();    //インスタンスの参照渡し   initialSettingForm.InitialValuesPointer = initialValues;      としているのに      フィールド”InitialValues"は割り当てらせません。常に規定値nullを返します。      となります。   実際にnull値が入ってるようで、initialSettingFormにインスタンスの参照は渡せていない模様・・・。   newしてるのになんで割り当てられませんと出るのでしょう?? 
 //インスタンス生成   ×InitialValues initialValues = new InitialValues();    ↓   this.initialValues = new InitialValues();    でした。すいません。 
 >>644   すいません。ゴチャゴチャしてた変数名整理したらエラー消えました。。。 
 お騒がせしてもうしわけありません。 
  >>643   C++ 以外のすべての言語で、インスタンスの参照渡しだろ 
  >>647   初代MSX-Basicでゲーム作ってた頃以来のプログラミングなので(;^_^A 
  アホな質問ですが、   Class InitialValue   に初期値を全部詰め込み、必要であればコントローラから参照しているのですが、   インスタンスの参照をinitialValueとすると   initialValue.StartPointX+hoge   などインスタンスの参照がくどくて読みづらい。   いっそiVとかしたいのですが、自分にしかわからない省略は良くないと聞いたもので・・・。      initialValue.StartPointX   initValue.StartPointX   iV.StartPointX      どれが読みやすいコードでしょうか? 
 >>649   どれもダメ 
 initialValueをそのまま使わずに設定値を使うクラスにコピーして 
  >>650   えええ!   
 データはデータクラスで一元管理じゃないんですか? 
 そうしないとフォームなどからデータクラスを変更した時に、 
 コントロールクラス側でその通知を受け取って 
 もう一度データクラスからコントロールクラスにコピーする仕組みが必要になってきますよね。 
  自分がアホだと分かってる割には自分の判断を信じてるのな   アホ草 
 勉強のためにプロが書いた大きなプログラムを見たんだが   変数が全部4桁英数字でランダムに発生させてるような文字列だった   僕ら初心者には「これ何の変数だっけ?」と分かりにくいだけなんだけど   大きなプログラムだと万が一、変数がダブったりするのを避けるためにそうするんですかね?   変数一覧表かなにか作るんですか? 
 >>652   いや、最初はコピーする仕様だったんですが、 
 データクラスで一元管理をするアドバイスを受けて変えたところです。   
 コピーするんなら元の仕様のままでよかったのかということに。 
  >>653   当然だよ。変数使うには課長級の決済が必要。変数管理台帳ファイルに全部記録されている。 
  >>655   そうか、公開用にリファクターしたのかな 
 いちいち一覧表見ないと何処につながってるか見えないなんて不便だもんね 
  >>654   変数名が妥当かどうか聞いてるんじゃなかったの?w   
 そのInitialValueとやらのクラスを使う実装方法が妥当かどうかは実現すべき仕様を誰も知らないので 
 誰にも分からないと思うよw   
 ローカル変数の命名に関しては、型名InitialValueをそのまま変数名にしても 
 何をやってるのか理解できるような文脈なら変数名をivにしても同じことでしょう。 
 だったら短い方がいい。   
 ただしローカル変数でも説明的な名前の方が適切な場合もあるので馬鹿の一つ覚えはダメ。 
 情況に応じて柔軟に 
  int[] intData = new int[10];                   int intThread = -3;     // 閾値                   int intCount = 0;                   for (int i = 0; i < intData.Length; i++)                   {                       if (intThread >= 0)                       {                           if (intData[i] > intThread)                           {                               // 処理                               intCount++;                           }                       }                       else if (intThread < 0)                       {                           if (intData[i] < intThread)                           {                               // 処理                               intCount++;                           }                       }                   }      閾値がプラスとマイナスで条件式を変えたいんだけど、   中の処理が一回で済む書き方ってあります? 
 =を含まない条件式。   そして閾値というキーワード。      まとめない方がいいよ。 
 >>660   せめてCountメソッドにしとけと思うぐらい。 
  >>660    単に同じ処理を2回書く無駄をなくしたいだけなら&&と||を使って   条件式をまとめるだけ      if((threshold >= 0 && x > threshold) || (threshold < 0 && x < threshold))   {     ....   }      値が不変のはずのthresholdの符号をループで毎回評価する無駄が許せないなら   Func<int, bool> predicate = x => x > threshold;   if (threshold < 0) predicate = x => x < thredhold;   ....   if (predicate(x))   {     ....   }   async/awaitって呼び出しのネストが深くなると、大元の呼び出しで波線が立ってすごくもどかしいんですが、気にしなくていいでしょうか?それとも呼び出しのやり方を見直したほうがいいのでしょうか 
 >>660   カウントをCountメソッドにして引数に突っ込むラムダ式を閾値によって切り替える 
  ごめん。Count以外の処理もあるんだね。おらの回答は無視してくれ。 
 dataGridViewのデータソースをBindingListにしています。   この時にデータの絞込を実装する方法はあるのでしょうか。 
 >>664   波線が立つのは単にasyncなメソッドをawai付けずに投げっぱなし呼び出しの警告出ているだけじゃないのか  
>>665 の言う通りネスト関係ない 
  すいません。ちょっと教えてください。      //Form1にて   Form2 f = new Form2();   f.show();   this.visible=false;      としてForm2を開いて、Form1を非表示にします。   //Form2にて   Form1 f = new Form1();   f.visible=true;   this.visible=false;      としてForm1に戻った場合、先程form1で入力した内容が消えてしまいます。   form1の内容を消さずにform2からform1に戻る方法を教えてください。 
 >>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                  var f2 = new Form2();               f2.Shown += (s, ev) => Hide();               f2.ShowDialog(this);               Show(); 
 class Program   {       TargetOpe targetOpe = new TargetOpe();       static void Main(string[] args)       {           Target [] target= targetOpe.InitializeTarget();           Console.WriteLine(target[1].x);       }   }      Target [] target= targetOpe.InitializeTarget();の行のtargeOpeで   静的でないフィールド、メソッド、またはプロパティ 'Program.targetOpe' で、オブジェクト参照が必要です   のエラーがでます。   newしてるのになんででしょう? 
 C#初心者です。   ある変数のその時々の値によって呼ぶメソッドを変えたいため初歩的にifやswitchで分岐させていたのですが、毎回分岐させるのもどうかと思い変数が変わるタイミングでデリゲートに代入して呼び出す方法を試してみました。   しかしながらパフォーマンステストを行ったところ、10程度の条件分岐であればifでメソッド呼び出し >>> デリゲートで呼び出しという結果でした。   速度を重視しつつ動的に呼び出すメソッドを変えるという場合はデリゲートではなく毎回条件分岐を行ったほうが良いということなのでしょうか? 
 >>677   どうでもいい 
 そんなミクロなレベルの速度が問題になることはない 
 IO一つで跡形も無く吹き飛ぶ 
  くだらねーパフォーマンスとくだらねー暗号化の話題が大好きだよな 
 パフォーマンスは重要だよ   だけど、そんなのを語る以前に、コンピュータの仕組みについての素養を極端に欠く人が多すぎるんだよ   最近のC#入門書はよく出来ていて、大抵の本が最低限の仕組みが知識が身につくようページを割いて解説してるわけだけど・・・・分かっていない人ほど読み飛ばすんだな   その結果、コンピュータの仕組みからしたらとてもありえないことを言い出す高卒様が出来上がるんだ 
 >その結果、コンピュータの仕組みからしたらとてもありえないことを言い出す高卒様が出来上がるんだ      ありえないことなんてないだろ。頭硬すぎじゃねーの。「コンピュータはこうあるべきだ」とかに縛られてると新しい発想のソフトが生まれない。 
 新しいものができたってのならいいけど、言うこと為すこと高卒様じゃあ・・・・ 
 >>677   条件次第なのでなんとも言えない 
 インライン展開とかCPUのキャッシュとかまで関わってくる可能性がある   
 気にしなければいけないほどパフォーマンスを気遣うなら、JITの結果を比較したほうがいいけど、多くはそこまでするほどではない 
  >>685   いや、初心者がググった知識で背伸びしてるんだろ 
  >>676   ありがとうございます。 
 私アホでした。 
  public class TargetOperation       {           Target[] target = new Target[Constants.MaximumNumberOfTarget];              public Target[] InitializeTarget()           {               for (int i = 0; i < Constants.MaximumNumberOfTarget; i++)               {                   target[i] = new Target();                   target[i].x = 100;               }           }           return target;       } 
 最後の行で   クラス、構造体、またはインターフェイス メンバーの宣言でトークン 'return' が無効です。   です。   またアホなことをしてそうな気がしますが、昨夜からわからず・・・。 
 >>689   } 
 } 
 return target; 
 } 
 じゃなくて 
 } 
 return target; 
 } 
 } 
 じゃね 
  デリゲート使うくらいならストラテジパターン使うけど 
 DataGridViewのセルのValueを取得すると、既定の型がObject型なんですが、既定の型をstringに変更する方法はありますか?   今はConvert.ToStringで変換してるんですが、記述数が多くなりすぎて参ってます。 
 C#初心者でフォームアプリを作っているんですが   例えばあるクラスAが非同期で外部機器を延々ポーリングしていて、トリガーが発生したらクラスBの処理を行いたいといった場合   ・クラスAにクラスBのインスタンスを渡して、クラスBのメソッドを呼び出す   ・クラスAに宣言したデリゲート(evemt?)にクラスBのメソッドをコールバック関数として登録し、クラスAはデリゲートを実行する   どちらが一般的なコーディングなんでしょうか   後者だと複数実行したい処理があるとかなり冗長な気がするんですが、他にセオリーあれば教えて頂きたいです   よろしくお願いします 
 >>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で管理しています   closecXMLを使ってアクセスしていて、これ自体は無事に実装できました      テストが一通り終わって、テキストデータも確定したので、データの散逸や   改ざんを防ぐために実行ファイルに埋め込みたいのですが、リソースとして   取り扱うことってできないでしょうか      具体的には、      workbook = new XLWorkbook(filename);      として開いているところがあるのですが、このfilenameにリソースファイルの   名前を当てることができないのか調べています      string filename = "Properties.Resources.textdata.xlsx";      としてアクセスできれば簡単だと思っていたのですが、そうはいきませんでした 
 具体的にどういう手順を踏めばよいのでしょう?   excelデータは1,000行以上あるので、取り込みではなく手入力が必要だと   ちょっと切ないです   でももう修正しないもの(修正するとしても部分的)ですから、機械的に   データを移行できるのであればそれでも問題ありません 
 静的に呼びだすなら5つのAPI   FindResource()   LoadResource()   SizeofResource()   LockResource()   FreeResource()   動的に更新するなら更に3つ   BeginUpdateResource()   EndUpdateResource()   UpdateResource() 
 >>701   こういう奴が頻繁に現れるのを見るとYAGNIの罪は大きいなって思う 
  別に複数でもそんな多くなければイベントでも問題ないんじゃねぇかな 
 >>714   ありがとうございます、それぞれのAPIについて調べてみます 
  結局バランスの問題だな。もちろん人によってバランス違うけど。   イベントによって結果再利用性あがるけど、   >イベントで実装した方がずっとコンパクトかつ可読的に書けることが分かると思うよ。    の通り、可読性の観点からしてもイベントの方が分かりやすいと思う。      これぐらいもYAGNIとかいってるようじゃ、極端すぎてバランス感覚おかしいんじゃねぇかな。 
 >>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系って悪い習慣を覚えちゃうよね   特にVBAはひどい 
 >>722   それだと温度センサーがアラートをコントロールしているように解釈される 
 常識的に考えてアラートのコントロールは温度センサーの仕事ではないだろう 
 これは名前の問題であってインターフェースよりイベントを使えと言ってるわけではない 
  >>726   その通りです。 
 すべての変数をどこからでもアクセスしたい衝動にかられます。   
 Aのクラスの機能がA1とA2に分化できるから分けようと思うと、 
 AはCを参照してたからA1とA2両方にCのインスタンス参照を渡そうとなり、 
 結局機能は分けれたものの、どのクラスがどのクラスを参照してるのかがよくわからなくなってきました。 
  値1、2個を渡すのは簡単なんですけど、   クラスのインスタンスを100個つくるためにその参照を配列にいれる   参照の入った配列をreturnで返す   とかしてるとなんの値をいじってるのかわけわかめです。      これまで値と参照の区別をして思考してこなかったからなのかなぁ。 
 >>730   オブジェクト指向で参照を共有することは少ない 
 共有するとしてもイミュータブル、ステートレスにして共有によるデメリットを消した上で共有する   
 長時間生存するインスタンスがあちこち参照しあって状態を刻々と変化させていくような設計が最悪のパターン 
  >>719   それは君が経験値不足なだけ。
>>697 である程度は想像できる。 
  >>731   なるほどCを参照しているA1、A2はCと独立したオブジェクトじゃなくなってしまいますものね。 
  Target[] target = new Target[Constants.MaximumNumberOfTarget];      public Target[] InitializeTarget()   {     for (int i = 0; i < Constants.MaximumNumberOfTarget; i++)      {      target[i] = new Target();      target[i].x = 100;      target[i].y = 100;     }   }      こういうふうにForm1のクラスでターゲットの座標100個発生させて表示させます。 
 ターゲットをクリック出来たら消す   一定時間クリックできなかったら点滅させる   ゲーム終了後にターゲットの座標をテキストファイルに書き出す      などの処理がすべてForm1上に存在することになるのですが、   それでもいいのでしょうか?   これらの作業を無理にクラスに分けようとすると   ターゲットクラスインスタンスの参照100個を渡さなくてはいけなくなります。 
 >>736   何が駄目なのかわからない 
 何か縛りプレイしているのならその前提から出してもらわないと 
 たとえば特定のデザインパターンの勉強が目的だとか 
  どうせこの人は一生治んないよ   ただプログラムなんてちゃんと動けば目的達成できるんだし、まあ、これでも良いんじゃないの 
 listやdictionaryを使ってないのかな      だったらまだそのアプリを作る段階まで届いてない 
 target class   にx,y,timeなどメンバ変数7個程度を入れてます。   このターゲットを表示するためForm1上にクラスのインスタンスを参照する配列を置くと、   表示とゲームのコントロールすべてがForm1上におくことになって見苦しいのかと思いました。      でもテトリスとか他のミニゲームみても同じような設計になってるんですね。   無理して別クラスにするよりもtargetクラスの配列に関連した、表示、ゲーム処理はForm1上に置いてみます。   (というか実際に配列を別クラスに切り分けたら、余計読みづらくなった・・・) 
 >>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   これはさすがの俺も意表をつかれた度と超えたバカwwwww 
 リストボックスの値を取得するのって      string Gender = this.Gender.SelectedItem.ToString();      の一文だけじゃだめなの?   なぜか値が取得できない。 
 >>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   の問題なのか、StrreamWriterのもんだいなのか? 取り合えず、Read、Writeともに   shift_jisでEncode指定したら化けないようになったが、意味がよくわからない。    普通に考えるとStringにShift_JIsが入っていて、それを認識しているなら、Read   WirteにShift_jisを指定する必要はないと思うのだ。だからStringにはそういう情報は   入ってない筈だ。ファイルにSHiftJIsの属性がはいっているなら、Write側だけに指定   すればよいはずだ。ReadにもSHIFT_JISを指定しなければならないということはファイルにも   その属性は保存されていないということだ。Stringに属性を保存しておけばすべて丸く   収まるとおもうのだが、なぜそうしないのだろうか? 
 文字列の実装には内部的にUnicodeで扱うものとバイト列として扱うものとがある。   前者は入出力時にそれぞれバイト列->UnicodeとUnicode->バイト列をどのようにマッピングするか(i.e. エンコーディング)を指定する必要がある。   後者であればその必要はない。   一方で前者は外部から文字列を読み込んでも内部的にはUnicodeだから読み込んだ文字列に対して処理を行う際に文字コードに悩む必要はない。   後者はプログラムを書いている時の文字コード, 入力された文字コードを常に意識せねばならん。   一長一短だからどっちの実装もあり得るが.NETは内部Unicodeが標準的だということだ      文字列自身に自分のエンコーディング情報を埋め込むのはやめておけ   禄でもないことにしかならん 
 JSON はJavaScript だから、UTF-8      Ruby, Python もそう。   ネット上に流れるテキストも同じ      SHIFT_JIS を使う言語は、まずない。   PowerShell も、UTF-16      ここ数年は、Unicode に統一された。   それ以外の、SHIFT_JIS, EUC-JP は使わない 
 >>773   何言っても通じないとは思うが、お前の愛するRubyの文字列の扱いは他と異なっている 
 Rubyの文字列は内部的にはエンコーディング情報を持ったバイト列だ 
 特にWin環境では非常にトラブルの原因になりやすいゴミ仕様である 
  Ruby は各文字列に、エンコードを持てるから、すごい      例えば、文字列a がSHIFT_JIS で、b がUTF-8 として、      a + b   みたいに、文字列を連結すると、エンコードエラーになる 
 >>775   うん。何一つメリットのないカス仕様だね。 
  >>770   ClosedXML.Excel.XLWorkbookコンストラクタにはStream取るのもあるんだけど 
  >SHIFT_JIS を使う言語は、まずない。    エクセルファイルをCSVにEportしたファイルだけど、    var sr = new StreamReader(fs, Encoding.GetEncoding("shift_jis"))   これでなら正常に読める。ということはエクセルはshift_jisだと思うが、、 
 >一方で前者は外部から文字列を読み込んでも内部的にはUnicodeだから読み込んだ文字列に対して処理を行う際に文字コードに悩む必要はない。  
 >後者はプログラムを書いている時の文字コード, 入力された文字コードを常に意識せねばならん。    
 前者はDefault unicode 
 後者はDefault bytecode 
 ということであれば、shift_jisなど他にもたくさんの文字コードが来る可能性があるのだから、コードを意識することにあまり違いはない 
 と思うが、、    
>>775   その考え方の方が正しいと思う。 
 そもそもunicoeをディフォールトにするんだったら、漢字はそのまま表示できるんじゃないの? 
 其れなのにXcelは何でわざわざSHIFT_JISをつかうんだろ。 
 Windows も内部的には、UTF-16 だろ。   PowerShell, ブラウザも、UTF-8       保守費用が掛かるから、MS も、SHIFT_JIS を辞めたいはず      Excel など、長年使っている人が多いから、やめられないだけ 
 >>780   Stringのエンコーディングが固定なら、IOのときだけ文字コードを意識すれば済む 
 素人のちょっとしたツールのレベルならともかく、一般的にはIとOの間(P)の部分がプログラムの殆どを占めるんだよ 
 Dictionaryのキーの文字コードが混在してて、存在するはずのキーの検索に失敗するとか悪夢だろ 
  >>778   Excelは言語じゃない。 
 日本語版のExcelのCSV出力時の文字コードがShiftJISなのは単に過去との互換性のため。 
 ちなみにBOMが付いていればUTFのCSVでも読み込める。 
  漢字が文字化けするのは保存した文字コードと読み込んだ文字コード指定が違うから   それだけ   つまりやった側の間違い      どこで間違えたか手順を順に見直すべし 
 sqliteとの連携に関して質問です   なんらかのクライアントで先にテーブルを作り、レコードもinsertしておいて、それを読み込むプログラムを作りたいのですが、既存のdbファイルはどこに配置すればよいのでしょうか   デバッグしてみたらno such tableと言うようなエラーが出たので、どうやら実行時に新たにdbファイルを作ってそれを読もうとしてしまっているようです 
 >>787   どこもクソも決めるのはお前 
 SQLiteはDBのファイルパス指定して開けるだろ 
 SQLiteは普通のDBMSと違って、システムのどこかに共通のデータストアがあるみたいな考え方をしないんだよ 
 ファイルを名指しするのが基本 
  >>785   「文字コードなんて意識する必要はない。機械に任せたほうがいい。」とは考えないのだろうか? 
 そもそもテキストとは文字コードによって表現された文字の集合体だ。テキストを保存するIOに 
 たいしてわざわざ文字コードの情報を削除して保存するのは何故なのだ。正気の沙汰とは思えんな。 
  >Dictionaryのキーの文字コードが混在してて、存在するはずのキーの検索に失敗するとか悪夢だろ      文字コードなんて本質的なことじゃない。だから混在してもかまわない。   それを人手でやろうとするから「混在する悪夢」が発生する。   そういう場合にこそ機械に自動的にやらせるべきだろう。 
 >日本語版のExcelのCSV出力時の文字コードがShiftJISなのは単に過去との互換性のため。    >ちなみにBOMが付いていればUTFのCSVでも読み込める。      互換性のためならもっとほかの方法がある。アプリのためにコードを弄るなんて最悪の方法だろう。 
 ここにきて.NET CoreがWPF, Windows Formsを救済ってか 
 >>790   >>791   >>792   屁理屈言っても誰にも認められない 
 x=x+1は式としておかしいと言い張ってプログラムが全くできなかった人がいたけど 
 その人と同じ   
 文字コードがいろいろあるのは仕方ない 
 それぞれの都合で整数に文字を割り当てる方式がちがうので文字化けする 
 文字コードの情報というものがそもそもないので削除なんてしてない   
 自動判定は単なる憶測にすぎない 
 その自動判定だって誰かが書いたコードが判定してるんであって 
 機械に任せると言うのは言ってることがおかしい 
  public double Re { get; set; }   ってプロパティを省略して書くと見やすくていいんですが、   他クラスから参照するだけの変数だと、   Reは使用されていませんって警告がずっと出てうっとうしい。   何かいい手はないでしょうか? 
 別に文字列を文字セット/エンコーディングごと抽象化するライブラリとか作ってくれて良いのよ?   既存文字列と互換性があって使い勝手, 拡張性と統一性と性能が担保されるなら普及もするだろう      でも曲がりなりにもそれ続けられてるのってRubyくらいで他に思い浮かばない   なんで無いのかと言うけど試されてないわけないんだよ, 現実的じゃないから普及してない 
 >>796   { get; private set; } 
 とか?できないんだっけ? 
  WPFで   WindowStyle="None"   AllowsTransparency="True"   Background="#01FFFFFF"   でほぼ透明だけどマウスイベントを受け取るウィンドウを作ったのですが   これとおなじことをFormでやりたいのですがやりかたがわかりません   どのようにすればいいですか? 
 >>798   できると思います。   
 データ格納フォルダB:Aフォームから値を取得 
 Cクラス:Bから値を取得 
 となってるのでsetもpublicでないと困るんですよね。   
 データ格納フォルダBの値はAから値取得した後なにも処理がないので、 
 「Reは使用されていません」って正しい警告なんですけどねぇ。 
 格納しているデータが10個あって警告10個もでるとさすがにうっとうしい。 
  >>790   BOM付きのUTF以外は、文字コードの情報なんてものは最初から存在しない。 
 また、文字コードの自動判別も完璧ではなく、場合によっては全く判別出来ない。 
  BのコンストラクタにAからの値を受け付けて   public readonly double Reに渡すとかじゃだめなんね? 
 >>799   Formはウィンドウ全体のアルファはOpacityで指定できるけど、 
 背景だけ透過させるとかは簡単にはできなかったような  
http://yellow.ribbon.to/ ~azumaya/doc_dotnet_uplayeredwnd.php    
>>800   そもそも
>>796 みたいな告なんか出ないと思うけど... 
 何か盛大に勘違いしてる予感... 
  >>803   WPFだと簡単にできたけどだめですか。。 
 背景透明なウィンドウとOpacity≒0で全体をほぼ透明化したウィンドウを重ねて代用します 
  >>803   勘違いなのかなぁ・・・。 
 すいませんもうちょっといろいろ実験してみます。 
  もともとスタートアップだったform1からform2にスタートアップを変更したいと考えています。   Program.csの           static void Main()           {               Application.EnableVisualStyles();               Application.SetCompatibleTextRenderingDefault(false);               Application.Run(new InitialSettingForm1());           }   のForm1をForm2に変更したのですがどうもうまくいきません。 
 form1が出てからform2が表示されているような…。   試しに           public ExaminationForm1()           {                  InitializeComponent();               MessageBox.Show("a");   }   と入れてみると   メッセージボックスが表示→okをクリック→form2が表示   となります。   他にも設定しなければいけないところがあるのでしょうか・・・。 
 InitialSettingなのかExaminationなのかどっちだよ   ExaminationForm1のコンストラクタにブレークポイントおいて実行   ブレークしたら呼び出し履歴を確認する 
 >>809   Debugで確認していったらどうもインスタンスの参照を渡せていないようです。 
  public partial class Form1 : Form       {           Form2 form2;           Class1 class1;              public Form1()           {               InitializeComponent();               form2 = new Form2();               form2.Show();                  class1 = new Class1();               form2.Pointer = class1;           }       } 
 public partial class Form2 : Form       {           Class1 class1;           public Class1 Pointer           {               set               {                   class1 = value;               }           }           public Form2()           {               InitializeComponent();               int i = class1.fuga();               MessageBox.Show(i.ToString());           }       } 
 public class Class1       {           public int hoge = 2222;           public int fuga()           {               return hoge;           }       } 
 Form2で   int i = class1.fuga();   みたいなclass1のメソッドを使う命令を書くと、実行時にForm1もForm2も表示されずに終了になります。      Form2にclass1の参照をきちんと渡せていないようなのですが、どこが悪いんでしょう・・・。 
 >>814   みたいな、じゃなくて問題を再現可能な最小コードをIdeoneにでもあげる 
 何で
>>811-813 まで書いおいて一番肝心なところを書かないんだ 
 それじゃやってること荒らしと同じ 
  806から811で全然別物の質問になってるんだけど   Form1のコンストラクタの先頭とForm2のコンストラクタの先頭にそれぞれブレークポイントおいて   ブレークしたらF10キー1行ずつステップオーバーしていって   どういう順番で実行されてるか確認 
 うるせーな一度答えると決めたら最後までニコニコヅラで相手しろよクソハゲ 
 >>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 クラスを継承して使いたくて、   これの各種インターフェイスを実装した中身 Dictionary クラスのラッパーを作った事あるなあ。   今思えば若かった。 
 >>831   プログラム以外でもあてはまる話だわな。 
 それ 
  たいていは英語力の無さに原因があるんだよな。   その機能を見つけられないとかだからさ。 
 コンソールアプリです。   今までに自分が吐き出した標準出力を自分で取得する事は可能でしょうか?   このアプリ(A)は主に他のアプリ(B)から実行されることを想定しています。Aは普通にConsole.WriteLineで出力し、BがProcess.StandardOutput.ReadToEndで取得、ログを残します。   A単体で実行してログも残したい要求があります。 Console.WriteLineと同時にファイルに出力すればいいのですが、最後に一括で取得できればスマートかなと思ったのですが、いかがでしょうか? 
 両方に出力する関数作って、その関数に置き換える事すら出来ない無能に何をアドバイスしろと? 
 Windowsで使えるteeコマンド探した方が早いんじゃねえか 
 PowerShellならデフォルトで用意されてるよ!>tee 
 >>836   ??? 
 すみません、よくわかりません    
>>837   書き方まずかったですかね。 
 そう言うのも含めて、2つの処理を同時にするという意味だつたのてすが。 
 他にはなさそうですね。 
  正直何言ってるのかよく分からんけど、普通にリダイレクトするだけのような...   っていうか、普通はコマンドライン引数で出力先を切り替えるように作ると思うんだけど... 
 PowerShellとか罰ゲームだろ   インタラクティブシェルとしては悪くないけど、まとまったスクリプト書こうとすると大嫌いになる   Add-TypeでインラインでC#書いたほうがマシだわ   特にC#erはソースの見た目がなんとなく似てるだけに地獄を見るんだよ 
 アプリ側で完結してないと、スクリプト操作とか変なバッチ叩かせてアプリ起動とか怪し過ぎるだろ。   業務アプリじゃねーんだw 
 if (-100 <= clickPointXTemp && clickPointXTemp <= 100)                    {                       clickPointX[clickNumber] = clickPointXTemp;                       MessageBox.Show(clickPointX[clickNumber].ToString() + "%");                       MessageBox.Show(clickPointX[0].ToString() + "%");                       MessageBox.Show(clickPointX[1].ToString() + "%");                       MessageBox.Show(clickPointX[2].ToString() + "%");                       clickNumber++;                   } 
 クリックしてカーソルが-100<=clickPointXTemp<=100の位置にあるときに配列にその値を代入させているのですが、   クリックするとその場で配列に代入できても次のクリックで0になってしまいます。      1回目クリック   clickPointXTemp=10   [0]=10   [1]=0   [2]=0      2回目クリック   clickPointXTemp=30   [0]=0   [1]=30   [2]=0      2回目クリック   clickPointXTemp=100   [0]=0   [1]=0   [2]=100      なんでだろ・・・。 
 データベースを使わないで、インデックスが共通する複数のデータ配列を作りたいときってどういう風な実装が最適なんでしょうか   var A = new int[x]    var B = new int[x]   var C = new int[x]   ・   ・   ・   var E = new int[x]   みたいな感じです 
 スコープが原因だろうから全体のソース出さないとエスパーだらけの回答になるよ 
 >>851    struct Hoge   {     int A;     int B;     int C;     int D;     int E;   }   ....   var hogeArray = new Hoge[100];   複数のクラスで共通の変数定数を外出しして、   その変数クラスを継承するのって良し悪しで言うとどうでしょうか      is aなのかちと微妙な感じです   内臓名クラスを継承して動物クラスを作ってるような        has aなのでオブジェクトとして渡すべきですか? 
 >>859   共通の変数などという低い抽象度でクラス設計を考えるのがそもそも間違ってる 
 実装からクラスを考えると必ず破綻するから、君の今の考え方のまま進む限りはいかなる選択肢も不正解 
 とはいえ最初から抽象度を上げて設計しろといっても初心者には無理な話だから、気にせず自分の思うように作ればいい 
 一通りモノ作れるようになったらオブジェクト指向モデリングの書籍を読むことをお勧めする 
  オブジェクト指向プログラミングしない方がいいもの作れるよ   関数で組む方法を極めた方がいい 
 >>860   >オブジェクト指向モデリングの書籍 
 例えばどんな本がありますか?特におすすめ、とかじゃなくてもいいです 
 どういう本が該当するのかよくわからないのです 
  >>862   王道はエリック・エヴァンスとかダグ・ローゼンバーグとか 
 今読んでも実際のコーディングに対しては何の参考にもならないと思うよ 
  どのプログラム言語を選ぶかでオブジェクト指向モデルの実現方法がかなり違う 
 >>863 の本くらいの抽象度になると実装方法にはほとんど依存しないよ 
 それどころかオブジェクト指向モデルすらも方法論全体の中では下層の方に位置付けられる 
  とりあえず入門レベルが終わったんだけど次はeffective c#4.0っての読めばいいですか? 
 more effective C# 6.0 7.0ですか?   moreとついてるので前の本を読む必要があるかと思っていたんですが大丈夫そうならそちらを購入しようかと思います 
 フォーム間でのデータのやりとりはどうするのが一般的なのでしょうか?   例えば、Form2の表示と同時に、Form1に入力済みのデータをForm2に表示させる場合、今は以下のようにしています。      class Form1   {    public object Data{get; set;}       var form2 = new Form2();    form2.Parent = this;   }      class Form2   {    public Form Parent{get; set;}       Load()    {     this.Data = Parent.Data;    }   }  
 >>869   言語仕様とか環境の変化で不要になった部分をバージョンアップしてるから 
 今からかうなら最新だけでいい 
 初版と4.0と最新で内容は被っている 
  ビジュアルスタジオでC#使ってると、どんどんコードスタイルが簡略化されていくんだよな。 
 SocketクラスのBeginConnectとかBeginReceiveとかに渡すコールバック関数を   staticで書いてあるのとそうでないのと両方見かけるんですけど   どっちが良いんでしょう? 
 まあ、C#ならコールバックは登録解除を明示的に行うからスタティックである必要は無いけどな。   でもこれがイベントハンドラからのデリゲートなら話は別だ。 
 >>875   そのSocketオブジェクトに合わせるのが正解 
 Socketを生で使うサンプルってスキルの低い業務ドカタが書いてたり書かれた時代が古かったりすることが多いので、 
 C#をよく理解してなくてCやVBの感覚でstaticにしないといけないと思ってるようなのが多い 
  >>876   イベントハンドラからのデリゲートとはどういう状況でしょう?    
>>877   なるほどありがとうございます! 
  TextBoxか、MaskedTextBoxに単位をつけたい。   小数点有りや無し、-の数値を入力できたりするものってできますか?   -2℃   14℃   25.5℃   2.5℃ 
 テキストボックスの横にラベルで単位でも書いておこうぜ       □㌕ 
 >>879   入力支援・単位の入力補完・数値⇔文字列の変換 
 何でもできるけどホントにしたいことがそのレスでは分からない 
  >>873   え、more付いてないのと付いてるのって同じ本なん? 
 独習C#と言い、命名がわけわからんな… 
  説明不足ごめんなさい。   出力ですが、最終的にはTextBoxの枠ごと印刷したいと考えております。   883の言う単位の入力補完だと思います。      MaskedTextBoxのマスクに####℃と記入し、   「-24.4」等のデータをデータベースから取り出して、入れたところMaskedTextBox.Textが244℃となってしまいました。   このテキストボックスを小数点有りの場合、なしの場合、負の符号が有りの場合なしの場合、「----」の場合、   1桁から5桁+「℃」としてTextBox.Textに出力したいと考えております。      できますか? 
 TextBoxクラスを継承して自前で実装すればできる 
 TextBoxクラスを継承してTextプロパティを上書き   書式とか単位を属性に持たせれば汎用的に使える。   コピペされたときの場合も考慮すること 
 ありがとうございます。   なんとなく、それっぽいものが作れそうです。 
 ユーザーコントロールでボーダーなしテキストボックスとラベル並べた方が楽な気がする 
 テキストボックスの描画や挙動を弄るの面倒くさいから汎用性を求めるんなら InputMan 買った方がいいよ 
 NuGetで参照できるオープンソースのWinFormsリッチコンポーネントって何が有名なの? 
 c#で穴ぼこメモリにしないように組むのって不可能? 
 可能だが、規模によっては現実的でない   パフォーマンスを気にするなら、別にボトルネックが存在していないかを見直す方が先 
 OSの仕事   どうしても嫌でデカいbyte配列確保して中に文字や数字全部入れても無駄 
 >>899   それでも駄目なの? 
 もうサービス部分はC言語で組んだほうが良さげ? 
  GCが勝手に詰めてくれるから気にしなくていい   ただし巨大なオブジェクトは専用の領域があって移動されないので断片化されやすいから注意 
 >>900   Cだって確保管理はOSの仕事だろ 
 何のためにメモリの管理をOSに任せたくないんだ? 
  >>903   Cだってオブジェクト毎の領域をそれぞれ全てOSが管理しているわけじゃない 
 mallocが効率化のためにだいぶ仕事してる 
  OSでメモリはブロックなどで管理されていて要求があったら   要求サイズに合わせてそのブロックの中のさらに細かいブロックなどを払いだしてる   こっちがどうしようとOSでブロックを作ってその中でやりくりしてる      例えそのブロックの中で断片化していて何か不都合あるのか? 
 使う予定の最大量の倍の空きメモリーあれば大体は気にならない。   いまどきのパソコンはアプリが使いたいメモリーサイズの数百倍は有るから気にするな。 
 リークしてると1ヶ月ぐらいで死ぬじゃん   現状自分でメモリ管理しないとどこで何が確保されてるのかわからないわけで   そういうの確実に管理したいときはc言語のがいいのかなぁ?と 
 極めて厳密に管理したいならC/C++でアロケータを自前で書くというのはあり得る   しかしリークという点ではC#よりC/C++の方が遥かにやっちまい易いので, メモリ安全を確保する目的でC/C++で書くのは本末転倒のように思う 
 List#Containsの重複判定基準をEquals以外にすることはできないでしょうか?   ListにしたいクラスのEqualsが、別の目的用にオーバーライドされている為、Equalsを使うことができません。 
 >>909   c#は現在実行中のアプリのインスタンスを確認する方法はあるの? 
  >>911   >Equalsが、別の目的用にオーバーライドされている 
 常識的にはそっちの方が解消すべき「問題」のように思うけど... 
  >>908   Webサービスか何かを想定してる? 
 だったらコーディングで対応するんでなく、ロードバランサで複数のアプリケーションサーバに振り分けて 
 サービスが止まらない様にしつつ、一部のサーバをオンメンテでリブートすべし 
  C#スレでメモリーリークを心配するとか、どんだけ無能なんだよ。 
 普通はリークで死ぬ前にGen2GC連発して性能ガタ落ちになるんじゃ   どんだけ握ってんだよと 
 実際にメモリリークが起こらないように気をつける術は昔ながらの方法しかない?   プロジェクトでnewするときはインスタンスマネージャー的なのを通して   可能な限りインスタンスを監視するとかそんなの? 
 >>918   一時的なオブジェクトはもう必要ないなら握りっぱなしにしないで即座に使い捨てること 
 中途半端に握りっぱなしにしてるとGCの世代か昇格してメモリ使用量の増加やGCのパフォーマンス低下の原因になる 
 一方、単寿命オブジェクトのGCは爆速なので、newしたら積極的にすぐ放置すべき 
  C#でメモリリークさせるコード書く奴がC/C++で無くせるとは到底思えないわ 
 >>921   うーん 
 爆速ではないなぁ 
 3分に1回動かしてる処理があるんだけど 
 強制GCせずにずっと動かしてるとき 
 メモリ使用量がかなりあがった状態でGCが動くと 
 3分に一度の処理のタイミングがズレちゃうんだよね 
 そこで強制GCも十分に一度ぐらいの頻度で動かしてる状態 
  ちゃんと設計してればC#でメモリーリークなんて気にすることなんてあるか?   そんなガバガバ設計してるやつがCだったら大丈夫なんだけど、って馬鹿な話誰が信じるよ 
 >メモリーリークなんて気にすること   ページフォルトを気にしないヴァカっていたな。   リークしていないが累積しすぎたページフォルトがOSを殺す 
 C#でリークやらかす奴がC/C++でやらかさない道理がない 
 まあ、でもC#はメモリー管理を隠蔽しちゃったから、実はCやC++よりメモリー管理しにくいんだよな。 
 未確認飛行のSpan説明みてサンプルコード動かそうとしたんだけど   using System.Memory;すると   CS0305ジェネリック種類 'Memory<T>' を使用するには、1 型引数が必要です。   って叱られるのなんで?   VSもCoreも最新 
 System.Spanにしてもでてきおる   using static System.Memory<string>;   ってするとエラーは消えた 
 フォームアプリでマウスクリックでイベントをはっせいさせているのですが、   ある処理ループの実行中はこのクリックイベントの割り込み発生を禁止させたいです。   マウスクリック割り込みイベントを無効化、有効化する方法ってないでしょうか? 
 >>937   そうじゃないusing System;ってこと 
  >>938   -=、+= 
 デザイナーみればわかると思うよ 
  >>938   Control.Enabled 
 どうでもいいけど、「割り込みイベント」って表現は間違ってるから他所では使わない方がいいよw 
  処理中フラグ持っておいて   クリックイベントの入り口で処理中ならreturnするのでよくない?      bool 処理中=false;      クリックイベントの頭   if(処理中)return; 
 ボタンからしか起動しない処理だと保証されてるなら-=+=でもフラグでもいいが   そうでないなら真面目に並列処理管理しないとね 
 はあ?   クリックイベント自体を抑止したのか?   意味あるの? 
 処理ループの中でメッセージループを実装して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のデザイン論なんて大げさな話じゃなくても、   ユーザーの捜査に反応できない文脈では何らかの方法(通常はグレイアウト)でそれを   ユーザーに対して明示しないUIは問題あるでしょうww      そんなことにも思い至らない回答者は無視していいよw 
 >>952   ありがとう、そういうこともあるんだな 
 勉強になった   
 10Gくらいの固定長テキストファイルから一行ずつ読み取って 
 最初の1-10文字はUSER ID、11はSEX・・・って分けてdbに突っ込んでるんだけど 
 StringBuilderでLength=0しつつappendするくらいじゃ、stringでsubstringするのとあまり変わらなかったんで 
 Span使えばマシになるのかなと思ったんだ 
  そんなもん丸ごとDBにロードしたほうが速いだろ   固定長ファイルのロードはどのDBMSでもコマンド一発でできる 
 10GBのデータだと読取よりDBMSへの書き込み方法がネックになりそう 
 >>962   細かくなるとdbスレ行きなんだろうけど 
 実際に書くところはC#なわけで、どこがボトルネックになってるのかザコ過ぎてわからんw 
 とりあえずsqliteつかってメモリ上dbにinsertでトランザクション管理しっかりやってってして30分くらいだったからまーいいかと 
 sql server expressだとbulk insertはわからんけどselectで並列処理されるみたいだから乗り換えてみる予定 
  sql server expressはひっくるめたDBサイズが最大10 GBまでだったと思うが 
 Postgresでいいよ   ロード時に固定長レコードのフォーマットを指定できるから一時テーブルもC#もいらん 
 MonoのLinux版のインストールの仕方、ご教示いただけますと有難いです。宜しくお願い致します。 
 >>967   Monoなんか今時もう誰も使ってないし誰もメンテしてないでしょ 
 今は.NET Coreの時代 
 GUIが目当てなら諦めなさい 
  UbuntuでもCentOSでもコマンド一発で入るがな 
 Windows.Forms で WndProc を override して自分のコードを加えているのですが   デバッガで進めていくと、その中に突入してしまいます。      InitializeComponent の中みたいに、デバッガが入らなくする宣言みたいなものなかったですか? 
 >>973   debuggerstepthrough 
  メインクラスとシリアル通信クラスの2つを使っています   シリアル通信の受信完了でイベントをメイン側に発生させることら可能でしょうか。受信完了したらメイン側から受信データを取りに行くようにしたいのですが。 
 >>976   何でそうなるのw 
 発想が逆だってw   
 そのシリア通信を担当するクラスSがデータ受信を通知するイベントを発生させて 
 受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw   
 ついでに言えば受信データもEventArgs使って渡してしまえばいい 
  >>977   やりたいのことはそれなんですよw 
 説明が下手ですいません 
 厳密にはデータを受けた事が分かったらメイン側は受信データの内容を解釈するクラスに送って処理分岐という形にしようかと思ってます。 
 用語や処理の知識がおいついてきてないので、あれを応用しようという感じにならず、調べるためのキーワードも出てこないです。   
 >>クラスSがデータ受信を通知するイベントを発生させて受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw   
 ここが具体的にどういう構文になるのでしょうか。 
  >>958   PCをあまり使い慣れてない人とか、ボタンはシングルクリックでいいのをダブルクリックしちゃったりとかあるんだよなこれが・・・ 
  非同期じゃないならボタンイネーブル切ればいいだけじゃね 
 状態をGUIだけに持たせておくのはおかしいといつか思うはず 
 >>979    class FrameReceivedEventArgs:EventArgs   {     public byte[] Frame{get; private set;}     ....   }      class CommunicationPort   {     public even EventHandler<FrameReceivedEventArgs> FrameReceived;     ....   }      class FrameDecoder   {     public FrameDecoder(CommunicationPort c}     {       c.FrameReceived += CommunicationPort_FrameReceived;     }        private void CommunicationPort_FrameReceived((object sender, FrameReceivedEventArgs e)     {       ....     }     ....   }   >>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の気難しい仕様を理解した上で、 
 必要に応じて明示的な解放を行わなくてはならない。 
 そんなことをするくらいならメインクラス側で明示的に登録・登録解除をやったほうが遥かに素直で分かりやすい。 
 
 read.cgi ver 07.7.25 2025/07/21 Walang Kapalit ★ | Donguri System Team 5ちゃんねる 
 lud20251017063051caID:acSSis/XMのレス一覧:  >>937   そうじゃないusing System;ってこと 
  >>938   -=、+= 
 デザイナーみればわかると思うよ 
  >>938   Control.Enabled 
 どうでもいいけど、「割り込みイベント」って表現は間違ってるから他所では使わない方がいいよw 
  処理中フラグ持っておいて   クリックイベントの入り口で処理中ならreturnするのでよくない?      bool 処理中=false;      クリックイベントの頭   if(処理中)return; 
 ボタンからしか起動しない処理だと保証されてるなら-=+=でもフラグでもいいが   そうでないなら真面目に並列処理管理しないとね 
 はあ?   クリックイベント自体を抑止したのか?   意味あるの? 
 処理ループの中でメッセージループを実装して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のデザイン論なんて大げさな話じゃなくても、   ユーザーの捜査に反応できない文脈では何らかの方法(通常はグレイアウト)でそれを   ユーザーに対して明示しないUIは問題あるでしょうww      そんなことにも思い至らない回答者は無視していいよw 
 >>952   ありがとう、そういうこともあるんだな 
 勉強になった   
 10Gくらいの固定長テキストファイルから一行ずつ読み取って 
 最初の1-10文字はUSER ID、11はSEX・・・って分けてdbに突っ込んでるんだけど 
 StringBuilderでLength=0しつつappendするくらいじゃ、stringでsubstringするのとあまり変わらなかったんで 
 Span使えばマシになるのかなと思ったんだ 
  そんなもん丸ごとDBにロードしたほうが速いだろ   固定長ファイルのロードはどのDBMSでもコマンド一発でできる 
 10GBのデータだと読取よりDBMSへの書き込み方法がネックになりそう 
 >>962   細かくなるとdbスレ行きなんだろうけど 
 実際に書くところはC#なわけで、どこがボトルネックになってるのかザコ過ぎてわからんw 
 とりあえずsqliteつかってメモリ上dbにinsertでトランザクション管理しっかりやってってして30分くらいだったからまーいいかと 
 sql server expressだとbulk insertはわからんけどselectで並列処理されるみたいだから乗り換えてみる予定 
  sql server expressはひっくるめたDBサイズが最大10 GBまでだったと思うが 
 Postgresでいいよ   ロード時に固定長レコードのフォーマットを指定できるから一時テーブルもC#もいらん 
 MonoのLinux版のインストールの仕方、ご教示いただけますと有難いです。宜しくお願い致します。 
 >>967   Monoなんか今時もう誰も使ってないし誰もメンテしてないでしょ 
 今は.NET Coreの時代 
 GUIが目当てなら諦めなさい 
  UbuntuでもCentOSでもコマンド一発で入るがな 
 Windows.Forms で WndProc を override して自分のコードを加えているのですが   デバッガで進めていくと、その中に突入してしまいます。      InitializeComponent の中みたいに、デバッガが入らなくする宣言みたいなものなかったですか? 
 >>973   debuggerstepthrough 
  メインクラスとシリアル通信クラスの2つを使っています   シリアル通信の受信完了でイベントをメイン側に発生させることら可能でしょうか。受信完了したらメイン側から受信データを取りに行くようにしたいのですが。 
 >>976   何でそうなるのw 
 発想が逆だってw   
 そのシリア通信を担当するクラスSがデータ受信を通知するイベントを発生させて 
 受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw   
 ついでに言えば受信データもEventArgs使って渡してしまえばいい 
  >>977   やりたいのことはそれなんですよw 
 説明が下手ですいません 
 厳密にはデータを受けた事が分かったらメイン側は受信データの内容を解釈するクラスに送って処理分岐という形にしようかと思ってます。 
 用語や処理の知識がおいついてきてないので、あれを応用しようという感じにならず、調べるためのキーワードも出てこないです。   
 >>クラスSがデータ受信を通知するイベントを発生させて受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw   
 ここが具体的にどういう構文になるのでしょうか。 
  >>958   PCをあまり使い慣れてない人とか、ボタンはシングルクリックでいいのをダブルクリックしちゃったりとかあるんだよなこれが・・・ 
  非同期じゃないならボタンイネーブル切ればいいだけじゃね 
 状態をGUIだけに持たせておくのはおかしいといつか思うはず 
 >>979    class FrameReceivedEventArgs:EventArgs   {     public byte[] Frame{get; private set;}     ....   }      class CommunicationPort   {     public even EventHandler<FrameReceivedEventArgs> FrameReceived;     ....   }      class FrameDecoder   {     public FrameDecoder(CommunicationPort c}     {       c.FrameReceived += CommunicationPort_FrameReceived;     }        private void CommunicationPort_FrameReceived((object sender, FrameReceivedEventArgs e)     {       ....     }     ....   }  レス:1-200  201-400  401-600  601-800  801-1000  ALL  
このスレへの固定リンク: http://5chb.net/r/tech/1523004019/ ヒント:  5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。TOPへ    TOPへ   
 
	   	
	
	
 
全掲示板一覧  この掲示板へ  人気スレ  | 
	Youtube  動画  
	>50  
	>100  
	>200  
	>300  
	>500  
	>1000枚  
	新着画像   ↓「ふらっと C#,C♯,C#(初心者用) Part137 	YouTube動画>1本 ->画像>2枚 」 を見た人も見ています:・【DFFAC/DFFNT】初心者スレ DISSIDIA FINAL FANTASY(ARCADE)/NT part12【まったり】 	  ・ダーツ初心者ワイ、安定して投げられない   ・【MTGA】Magic The Gathering Arena 初心者スレ 36 	  ・MacOSX86 初心者およびノートPCスレ  ・【プロスピ】プロ野球スピリッツA初心者スレpart135   ・FX初心者スレ 423pips   ・【プロスピ】プロ野球スピリッツA初心者スレ part184   ・FX初心者スレ 342pips   ・【PS4/XB1/Switch】APEX LEGENDS エーペックスレジェンズ初心者スレPart106【転載禁止】   ・【プロスピ】プロ野球スピリッツA初心者スレpart78   ・デジタル初心者が高校卒業までにプロになるスレ12 ©bbspink.com	  ・◆伝統芸能初心者質問スレ15◆  ・youtube初心者スレ収益化 跳躍編part34   ・カメラ初心者だけど3万円〜4万円ぐらいで買えるミラーレス教えろwwwwwwwwwwwwwwwwwwww   ・競馬初心者なんだけど一緒に予想してくれない? 	  ・【PS4/XB1/Switch】APEX LEGENDS エーペックスレジェンズ初心者スレPart95【転載禁止】   ・エロゲ初心者俺「はよセックスしろ」   ・【初心者】ダイエットの質問・相談スレPart179 	  ・【初心者でも】エギングPart91【上級者でも】	  ・【MTGA】Magic The Gathering Arena 初心者スレ 185   ・【DQ10】初心者大使を語るスレッド473 	  ・FX初心者スレ Part130 	  ・【初心者/TH7以下】clash of clans 47戦目   ・【気軽に】献血体験雑談【初心者歓迎】 25 	  ・[SDK]iPhoneアプリ開発初心者質問箱45[touch][iPad]  ・【MTGA】Magic The Gathering Arena 初心者スレ 198   ・Ruby 初心者スレッド Part 65 	  ・映画初心者だが気分が上がるポジティブな映画教えてくれ    ・Ruby 初心者スレッド Part 60 	  ・【青アカ】青いアーカイブ -Blue Archive- 初心者・中級者スレ7   ・【Switch】Splatoon2/スプラトゥーン2 初心者スレ83【質問/雑談】 	  ・【Switch】Splatoon3/スプラトゥーン3 サーモンラン 初心者スレ wave4   ・【トレクル】トレクル初心者の私に優しい人がアドバイスしてくれるスレ【雑談時々モンスト】 	  ・初心者におすすめは??。  ・初心者大使応援スレ365 	  ・超初心者がアフィで1万もらうまで頑張る 2 	  ・銃所持許可&初心者質問スレPart4 	  ・バジリスク絆初心者質問スレpart15   ・ギター始めたい初心者なんだけどさ 	  ・初心者が弱いと勘違いするポケモン 	  ・【DQ10】初心者大使を語るスレッド429 	  ・【WALLPHY】ダンを応援するスレ(初心者)   ・東京藝大に初心者が半年で合格できるのか? 	  ・【MT4/5】Meta Trader初心者専用65【EA素人】   ・【初心者】桃鉄20 初心者対戦スレ 1年目【専用】  ・/ ´,_ゝ`\初心者のための富士山登山入門167m   ・電子タバコ初心者の質問に優しく答えるスレ69本目 	  ・【悲報】レート初心者ワイ、勝てない 	  ・【ごまおつ】ゴシックは魔法乙女 質問スレ★60【初心者歓迎】 	  ・【スズキ】SV650/X【90度V】Part58   ・【8306】三菱UFJ FG Part12   ・【イラスト初心者】どこ直したら良いと思う?   ・自作PC初心者パーツ購入相談事務所【38列目】 	  ・【プロスピ】プロ野球スピリッツA初心者スレ part56   ・【プロスピ】プロ野球スピリッツA初心者スレ part201   ・【プロスピ】プロ野球スピリッツA初心者スレ part187   ・遊戯王初心者です!! 	  ・初心者が紙で安価てきな車安価!   ・なんで初心会って潰れたの?   ・【FF14】初心者の館 Part497   ・糖尿病初心者質問スレ65 	  ・【仮想通貨】GPUを用いた仮想通貨マイニングは「誰も儲からない」とマイナーが続々撤退開始との報道、イーサリアムのマージによる弊害  [Ikh★]  ・FX初心者スレ 195pips 	  ・Hの話【初心者専用】65   ・【初心者から】VPN総合21【上級者まで】   
  
    
  
 
 09:12:02 up 13 days, 34 min,  0 users,  load average: 124.52, 89.42, 73.76
in 0.19600701332092 sec
@[email protected]  on 110423