- 1 名前:名無C mailto:sage [2019/03/07(木) 06:35:41.12 ID:6L3KEJfe0.net]
- !extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為) 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980を踏んだ人は新スレを建てて下さい。 >>980が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■関連スレ C#, C♯, C#相談室 Part93 mevius.5ch.net/test/read.cgi/tech/1492818720/ ■前スレ ふらっと C#,C♯,C#(初心者用) Part141 mevius.5ch.net/test/read.cgi/tech/1544839627/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■情報源 https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index https://docs.microsoft.com/en-us/dotnet/standard/class-libraries referencesource.microsoft.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
- 85 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 01:15:19.62 ID:GJ0JjoCX0.net]
- >>84
UIを操作できるのはUIスレッドだけ
- 86 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 01:16:53.70 ID:yH9zM0xm0.net]
- >>85
プログレスバーはWin7のころの タスクバーのプレグレスバーなんだよ
- 87 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 01:18:41.54 ID:yH9zM0xm0.net]
- Nugetでこれ入れて出せるようになるやつ
Windows7APICodePack これな using Microsoft.WindowsAPICodePack.Taskbar;
- 88 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 01:19:01.98 ID:yH9zM0xm0.net]
- 中でなんかしてるんだろうか
- 89 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 16:11:44.19 ID:SrH2ZhCU0.net]
- >>80
パット見、見た目が、JavaScript の JSON 形式に似てる。
- 90 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 16:19:26.01 ID:C+8PS15Z0.net]
- それはおめめかおつむがヤバいな
- 91 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 17:04:29.99 ID:GJ0JjoCX0.net]
- >>87
だからUIスレッドから操作しろって https://www.atmarkit.co.jp/ait/spv/1508/26/news029.html
- 92 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 17:10:34.23 ID:gZMjxNOF0.net]
- UIスレッド外からいじったのにエラーにならなかったけどなんで?って質問じゃないのか
- 93 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 18:55:32.16 ID:yH9zM0xm0.net]
- >>92
そうそう、そういうこと Parallelで進捗バー増やしてったのに 順調に増えてって正常終了した TaskbarクラスはStaticでクラスライブラリ(.dll) なんか理由わかる人いませんか?
- 94 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 23:49:11.19 ID:z21lQS4L0.net]
- ソース見てみたらITaskbarList3::SetProgressValue呼んでるだけだし
アプリ内のウィンドウというよりシェルへのアクセスなら 元々UIスレッドで呼ぶ必要ないんじゃねえの 検証してないけど
- 95 名前:デフォルトの名無しさん [2019/03/25(月) 12:38:16.05 ID:M0EtypdC0.net]
- ドット絵エディタみたいなのは簡単ですか
- 96 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 12:38:17.23 ID:ZS1E97rBM.net]
- >>94
あーシェルの可能性か なるほど uiスレッドどころか別プロセスか 盲点だったわ ありがとう、中身見れたら見てみる
- 97 名前:デフォルトの名無しさん [2019/03/25(月) 13:14:00.29 ID:MuEFgcsw0.net]
- >>95
エディタ本体つくるのは簡単 各種画像ファイルフォーマットの読み書きが面倒
- 98 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 13:55:28.16 ID:feShKvG5d.net]
- >>97
今はnugetでだいたいのフォーマットのライブラリは取得できるんじゃないかな
- 99 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 14:00:35.30 ID:feShKvG5d.net]
- てか、Windowsなら標準のBitmapクラスでメジャーどころは扱えるか
- 100 名前:デフォルトの名無しさん [2019/03/25(月) 16:28:23.69 ID:M0EtypdC0.net]
- >>97
がんばります ペイントイベント使うだけですよね
- 101 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 16:39:58.28 ID:CQLZj79N0.net]
- DrawImageやBitBlt地獄が待ってるんだろうなw
- 102 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 22:05:04.34 ID:QIzg3qUJ0.net]
- >>99
そうだな https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/advanced/using-image-encoders-and-decoders-in-managed-gdi >>100 PictureBox使った「絵エディタ」で「ペイントイベント」なんか普通使わない https://www.atmarkit.co.jp/fdotnet/dotnettips/458picboxdraw/picboxdraw.html >グラフィックの描画に必要なデータ(例えばラインならその始点と終点の座標など)をすべて保持しておき、 >Paintイベント・ハンドラですべてのグラフィックを再描画できるように常に準備しておく必要があることを意味する。 普通は後半に書かれている「Imageプロパティで指定したビットマップに描画」を使う。そうじゃないと保存するときにも苦労する
- 103 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 22:11:51.58 ID:sDjcFKgQa.net]
- お絵描きに限らないけど、手順を記録するようにしないとundo実装できなくなるよw
何で偉そうにそういう非常識なことを言うかね
- 104 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 22:17:28.38 ID:QIzg3qUJ0.net]
- >>103
何の話しているの? 「図形」じゃなく「ドット」エディタで「手順」記録すると大変なことになるよ undoは任意の時点のデータを退避したらどうにでもできるよ
- 105 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 02:29:39.88 ID:fe5vrK8S0.net]
- 自分の経験上、Undo、Redoは、プログラミングが難しいことがある。
- 106 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 02:46:28.44 ID:fe5vrK8S0.net]
- 参照やポインタの
- 107 名前:lは、一般にはUndoすると変化するので、Undo、Redoを
任意回数行った場合には「識別子」として役立たないことになる。 だから、Draw系ツール、3Dモデラ、3D-CADなどではポインタ値だけで 直線の接続先などを識別するのは難しい。だからと言って座標値だけで識別 できるかというとそれはそれで無理がある場合が有る。だからID番号を付ける 必要が出てくるかもしれない。 CADで、点が1万個有る場合に全選択してから Move した場合の Undo 情報は、 1万個に上る、と言ったような問題点も耳にした。 [] - [ここ壊れてます]
- 108 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 02:51:56.51 ID:fe5vrK8S0.net]
- ツール上では削除しても、内部的には削除せずにメモリ中にずっと残しておけば、
参照やポインタ値は変化することは無い。これを利用する手もあるかもしれない。 ただし、その場合、プログラミング中、オブジェクトを自由に削除できなくなるので、 未来永劫、そのことに気を使い続ける必要がある。
- 109 名前:デフォルトの名無しさん [2019/03/26(火) 04:35:48.97 ID:6g954Hehr.net]
- 3Dソフトの操作履歴って入れ替え可能だからな(可能な操作のみだが)
それすらすごい 例えばベンドデフォメーションかけた後にオブジェクト同士をマージ この操作順を普通に入れ替えられる 操作をフリーズ(固める)しない限りどんな操作でも入れ替え可能 そして上記の履歴操作は機能のうちのほんの一部
- 110 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 05:21:06.95 ID:Wr7XD3bSa.net]
- ボタンを押すと、計算してその結果をリッチテキストボックスに表示する、構造的にはシンプルなイベントを作ろうとしています。
private void button_Click(object sender, EventArgs e) { リッチテキストボックス.Text=(見出し); ◆計算◆ リッチテキストボックス.AppendText(ここに計算結果を表示); } 自分としては見出しを表示→◆計算◆(数分かかります)→計算結果表示と、上から順に処理されることを期待しているのだけど 実際は◆計算◆が終了するまで最初のテキスト「見出し」も表示されないのですがどうしてなのでしょうか?
- 111 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 05:23:41.39 ID:BYz/7c7n0.net]
- 連続した削除は統合したり、塗りつぶしは開始点を覚えたり
色々小技もあるので、一概には言えないと思うけどなぁ 本格的に勉強したいなら、paint.net か pinta のソース読むのお勧め
- 112 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 06:37:47.03 ID:AEstRBha0.net]
- >>109
リッチテキストボックス.Text=(見出し); リッチテキストボックス.Refresh();//これを挿入 ◆計算◆ で意図通りになるはず 「どうしてなのか」はよくわからないけど https://dobon.net/vb/dotnet/control/refreshupdateinvalidate.html を参考に考えてみるとアプリケーションキューが空になるまで再描画されないからとかでは
- 113 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 10:18:19.55 ID:nfpS3j/TM.net]
- ドット絵なんて"■"をフォントサイズと色変えて
200x200でやるとかじゃアカンの? 商用?趣味?
- 114 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 10:27:40.46 ID:FWKgfdvb0.net]
- お前の息子みたいな小さい世界の話はしてねえんだよ保育所に引っ込んでろ
入れなかったのか?じゃあ死んでろ
- 115 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 10:53:32.84 ID:RcQOpHon0.net]
- >>109
イベントハンドラーの中で計算しているから、UIスレッドを掴んだままになってる。 非同期処理化すれば解決するが、計算中もUIを触れるから別途対策が必要。ウィンドウかボタンを無効化とか。 private async void button_Click(object sender, EventArgs e) { this.Enabled=false; リッチテキストボックス.Text=(見出し); await Task.Run( () => ◆計算◆ ); リッチテキストボックス.AppendText(ここに計算結果を表示); this.Enabled=true; }
- 116 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 10:55:43.23 ID:fe5vrK8S0.net]
- >>108
速度的な問題点を無視すれば、 編集ソフトでファイルを読み込んだ直後から人間が操作したコマンドの履歴を 全て記録しておいて、ファイルを読み込んだ直後から、最初から最後の1つ手前 まで、その履歴のコマンドを順に再実行するようにすればUndoは実現できる 事は出来る。 この方法だと、操作の途中に重たい処理が挟まっていた場合が問題となる。重たい 処理が行われた場合は、処理の最初と最後でデータをファイルに保存してしまって、 Undoするときはそれを「起点」にする方法も考えられる。ただし、この場合は、 ファイルへの保存に時間がかかる問題が残る。
- 117 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 11:34:27.90 ID:KoWTp9j7d.net]
- 簡単ですか?くらいの質問する相手なんだから112が言うような実装で良いと思うけど
高機能にしようと思えばいくらでもできるだろうけど既存のドットエディタ使えば?って気もする 勝手に質問を高機能に寄せてああでもないこうでもない言ってても仕方ないよね
- 118 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 12:05:28.06 ID:NEQZ2SJi0.net]
- >>116
ゲームの専門家に聞いたんだけど、実はドットエディタは使ってなくて、 1つのファイルに複数のキャラクタ画像をまとめて、普通のPaintソフトの 拡大鏡機能で作っておいて、ゲームプログラムの方で部分的な四角形領域 を座標で指定して複数のキャラクタとして扱っている、と聞いた。 そして、透明部分は、1つの色を「透明色」として扱ってMaskパターン を作っていると。WindowsのBitBlt系のAPIなら、透明色をそのまま 指定できるタイプのものも確かあったと思うけど。
- 119 名前:デフォルトの名無しさん [2019/03/26(火) 12:09:54.76 ID:6g954Hehr.net]
- >>115
しかし3Dソフトは激重アプリなのにサクサクとundo redoできる 設定では1000回まで戻れるようにしている しかも全部メモリに管理しているんじゃないだろうか 設計が凄まじいのだろう
- 120 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 12:10:33.61 ID:qm+I18En0.net]
- >>118
ファイルに落としてるんだよ
- 121 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 16:10:23.84 ID:ERuMXzNG0.net]
- >>117
そういうやり方だってあるしドット絵エディタで全て作ってるのだってあるし普通の絵をドット絵チックに変換するツールを使う場合もある
- 122 名前:デフォルトの名無しさん [2019/03/26(火) 16:26:20.46 ID:5W15sMAGF.net]
- >>120
https://goodbyejapan.net/better-stay-quiet
- 123 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 16:55:27.87 ID:fe5vrK8S0.net]
- >>118
多分、普段のUndo、Redoはメモリ内のみで行っている。 そして、>>108のように、操作者が順序を入れ替えた場合のみ、 どこかの時点を起点として操作をリプレイするようなことをやってる。 だから後者の場合のみは時間がかかるんじゃないかと思うが、滅多に やることはないので問題ないと考えられているのではなかろうか?
- 124 名前:デフォルトの名無しさん [2019/03/26(火) 17:53:29.15 ID:6g954Hehr.net]
- >>122
3Dソフトはそもそもディペンデンシーグラフで履歴ノードが自由に繋ぎ直せるし、インプットアウトプットもしまくるから わざわざファイルに出してることはないはず そしてそれら膨大な数のノードがリアルタイムで動作したりするからなあ ほん
- 125 名前:ニどうやったら普通のPCでもそれなりに高速に動くようなあんなシステム作れるんだ
ちなみにスクリプトやAPIでも履歴作れるんだよな openChank closeChankの間に入れ込んだ操作の履歴を一つにしてくれる [] - [ここ壊れてます]
- 126 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 18:13:18.89 ID:fe5vrK8S0.net]
- >>123
履歴のコマンドの順序を入れ替える操作を高速にするアルゴリズム、今、分かった。 1. 操作を変更する時点は、現在の状態からは近いことが多いはず。 2. だから、ツールの内部処理で、現在の状態から小数回 Undoを繰り返せば、その地点にいったん 戻ることが出来る。 3. そこからは、新しい順番でコマンドを「Replay(再生)」すれば、目的の結果が得られる。
- 127 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 18:18:17.85 ID:fe5vrK8S0.net]
- >>124
・例えば、現在の状態が、ファイル読み込み時点から、1,000回の操作の後だとする。 ・現在の状態になる20回前の操作を変更したいとする。その操作は、最初からは980回目である。 ・ここで、(1,000回目の)現在の状態から 20回 Undo をすれば、上記の980回目の状態に戻れる。 ・この20回くらいの Undo ならば、大して遅くは無いはず。 ・出来あがった980回目の状態から、新しいコマンドの列を20回程度繰り返せば、目的のデータが 完成する。
- 128 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 19:03:23.56 ID:3EcUlBetM.net]
- >>80
プレーンオブジェクトと呼んだりするけどこれと言った決まりはない
- 129 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 19:19:11.31 ID:NbUyZWCMH.net]
- 誰でも頭が良くなる、プログラムが書けるようになる方法が発見される 58034
https://you-can-program.hatenablog.jp
- 130 名前:デフォルトの名無しさん [2019/03/26(火) 19:28:00.58 ID:6g954Hehr.net]
- >>124
ちなみに解説はこことか https://help.autodesk.com/view/MAYAUL/2017/JPN/?guid=__files_GUID_A9070270_9B5D_4511_8012_BC948149884D_htm
- 131 名前:デフォルトの名無しさん [2019/03/26(火) 19:31:16.28 ID:6g954Hehr.net]
- あとキャラ一体でこのノード数は当たり前
これが何体もいる上に背景やらエフェクトやら物理演算、アニメーションブレンディングとかも同時にエディタ内でやってる さらに裏側で動作させてるスクリプトも何百もあるし、APIとかも膨大に動いてる https://circecharacterworks.files.wordpress.com/2011/11/hypergraph.png
- 132 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 03:33:29.80 ID:NpUsj5uAa.net]
- >>111>>114
ありがとうございます なんとなくイメージはつかめました
- 133 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 08:27:38.52 ID:bis+Aug70.net]
- >>80
昔はバリュークラスと呼ばれてた C#的にはPOCOだな あとDTOはEFと関係無い
- 134 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 08:50:32.86 ID:vlf+N3dca.net]
- azure durable functionをオンプレで使いたいのだけど類似のオプソフレームワークってあります?
MQ使って再発明はダルいっす
- 135 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 09:16:12.09 ID:M3xZFaB+a.net]
- >>132
オンプレなのに態々縛りプレイをしたい理由は? long-runningなスレッドでいいだろ
- 136 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 15:52:07.47 ID:gKV0tUQi0.net]
- 質問させてください。
win10でVisualStudioCommunity2017のC#WPFアプリでデスクトップ常駐ソフトウェアを趣味作成してます。 プログラミングスキルは、あちこちのサンプルソースやQ&Aのコードを参考になんとか期待通りの動作を作り上げてる程度の初心者です。 悩んでいる点は、本体右クリックメニューのチェックボックス付きMenuItemを選択した時にMainWindowクラスにprivate宣言してあるbool変数をトグル動作させているのだけれど、 タスクトレイアイコンの右クリックメニューに用意したチェックボックス付きMenuItemからも同じ事がしたいけど両MenuItemのチェック状態を同期させるにはどの様に作るのが良いのでしょうか? 本体右クリックメニューはMainWindow.xamlの<Window.ContextMenu>で作成、Sourceにproperties:Settings.DefaultをバインドしてClickにswitch切替関数を呼び出す様に設定してます。 タスクトレイアイコン右クリックメニューはMainWindow.csの_Loaded内でSystem.Windows.Forms.ContextMenu/System.Windows.Forms.MenuItemで作成してClickイベントをラムダ式(?)で記述してます。 説明するのに使う用語すらそこら辺から借りてきたもので大変恐縮ですがご指導の程宜しくお願いします。
- 137 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 16:01:59.45 ID:gKV0tUQi0.net]
- 最後の方、
「Clickイベントをラムダ式(?)で記述してます。」は 「Clickイベントを無名関数(?)で記述してます。」と言うべきだった気がしてきました。
- 138 名前:デフォルトの名無しさん [2019/03/27(水) 16:24:53.59 ID:ewJriyXK0.net]
- 他のクラスを承継してクラスを作る時、承継元のクラスのコンストラクタを呼ばないようにするのってどうすればいいの?
- 139 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 17:16:29.24 ID:/UUA2GqJa.net]
- >>134
・本体右クリックメニューの方は、xaml側でMenuItemにx:Nameを付けると.cs側で参照できる ・タスクトレイアイコンの方は、作成したMenuItemをフィールドに保持してあとで参照出来るようにする として、「switch切替関数」と「Clickイベント」でbool変数をトグルさせた後に 各MenuItemのIsCheckedを設定すればできそう 以下余談 WPFでは内部状態とViewの同期はBindingという仕組みを使えば楽できるんだけど(ただし使いこなせるようになるまでが難しい) タスクトレイ関係のコントロールが無いからWinForms側を使うしか無くて、結局Viewを直接触ることになるんだな…… >>136 無理 仮にそれが出来たら、継承元のprivate変数が未初期化のままコンストラクタが完了することになって 結局そのインスタンスは使い物にならない
- 140 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 19:03:27.47 ID:tQ4XPcUjM.net]
- >>131
POCOは特定のフレームワークへの依存を持たない普通のオブジェクトを指す言葉で、 決して振る舞いを持たないことを意味しているわけではない
- 141 名前:デフォルトの名無しさん [2019/03/27(水) 19:54:30.82 ID:ewJriyXK0.net]
- >>137
だめなのかあ・・・・ありがとう
- 142 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 20:06:11.69 ID:bis+Aug70.net]
- うんだから
振る舞い無くてもPOCOでしょ 普段使いで貧血ドメインクラスなんてわざわざ言わないしな ただのデータクラスって言ったり わかる相手にはプレーンオブジェクトとか言うでしょ コンテキストによってはレコード型と言ったりもするし
- 143 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 21:21:06.39 ID:LVKAuWEv0.net]
- アーキテクチャとか思想で呼び方は変わりそうね
3レイヤーアーキテクチャでアプリケーション層でのドメインモデルからview やjsonのための振る舞いを持たないクラスを俺はviewmodelかdtoとか呼んでるわ
- 144 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 21:32:05.17 ID:gKV0tUQi0.net]
- >>137
取り敢えずフラグの切替、想定通りになりました〜(^^ x:Nameを付けた<MenuItem>を「MenuItem other = this.FindName("_AmenboModeMenu") as MenuItem;」で取得しました! ググってる際中x:Keyなるものも見かけたので追加で調べておこうと思いました。 タスクトレイアイコン側のMenuItemは、元はMainWindow_Loadedイベント内で宣言していたものを「class MainWindow : Window」のフィールド(private)にしました。 これも取り敢えずWindow_Closingイベント内で.Dispose()する様にしたけど既にobject構造体上より上位のNotifyIconを「notify_icon.Dispose();」していたので不要なのかな? .Dispose()、も少しちゃんと調べようと思います。 余談、ありがとうございました! 何やら理由があってタスクトレイアイコンにはWinFormsのメニューを使うのだと漠然と覚えていた所に 「WPFにタスクトレイ関係のコントロールが無いから」と明快な回答が得られてスッキリしました。 解説サイトの教科書的で読みづらい文章に比べて口語体で語って頂けたことですんなり入ってきました(^^v さて、次は肝心の中身に取り組まなければ!!
- 145 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 22:04:09.72 ID:/UUA2GqJa.net]
- >>142
x:Nameを付けたら this._AmenboModeMenu とフィールドとして扱える インテリセンスが効くし、そのままの型で使えてキャスト不要になるし .xaml側でx:Nameを変えて.cs側を変え忘れてもコンパイルエラーで気づけるから .FindName()を経由するよりもフィールドで扱ったほうが楽
- 146 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 22:13:13.28 ID:gKV0tUQi0.net]
- >>143
インテリセンスとかキャスト不要とかコンパイルエラーとか、間違いなくそちらの方が良いですね! 体系的知識皆無のコード切り貼りマンの自分では容易には辿り着けない領域・・・ ありがとうございます!早速書き替えてみます!
- 147 名前:デフォルトの名無しさん [2019/03/28(木) 01:00:26.73 ID:VR7enf9Y0.net]
- List<List<T>>型のフィールドを含むオブジェクトのディープコピーを作る方法で、定石みたいなのがあったら教えて!!!
- 148 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 01:01:08.20 ID:BGhBm4PEM.net]
- JSON.NETでシリアライズしてデシリアライズ
- 149 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 01:03:43.26 ID:D80vvc+Qd.net]
- >>146
俺もこれ多用してる
- 150 名前:デフォルトの名無しさん [2019/03/28(木) 01:06:25.17 ID:VR7enf9Y0.net]
- まじか、なんか無駄な作業してるような気もするけどこれは楽ちんだわ
ありがとう!
- 151 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 01:43:57.78 ID:yLTGLAEP0.net]
- .NETって、既にMSにレガシー扱いされているらしい。
老害って言葉を使うのが好きな若い人、良い経験だ。
- 152 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 02:25:09.30 ID:BZLOzy32d.net]
- >>149
それは初耳 ソースは?
- 153 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 05:36:01.82 ID:eEmtiDxQa.net]
- .NET (Framework)はレガシー
- 154 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 08:08:08.64 ID:BGhBm4PEM.net]
- レガシー
.NET Framework WinForms WPF ASP.NET Classic ASP.NET MVC Entity Framework Notレガシー .NET Core Windows Runtime ASP.NET Core Entity Framework Core
- 155 名前: mailto:sage [2019/03/28(木) 19:13:03.21 ID:3LZYwZb10.net]
- >>152
win32api はレガシーですか?
- 156 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 19:56:25.15 ID:LUeUt0r60.net]
- WindowsOSがレガシーってか
- 157 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 20:16:09.20 ID:zYMv+0+90.net]
- >>153
Windows Runtimeじゃないからレガシー
- 158 名前:デフォルトの名無しさん mailto:sage [2019/03/28(木) 20:44:58.59 ID:WadD1DGKa.net]
- 昔ブルースウィリスがCMしてたね
- 159 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 07:46:13.85 ID:Z1iKEAdk0.net]
- do
{ ch = (char)Console.Read(); } while (ch == '\n' | ch == '\r'); この文章の意味が分からないのですが改行と入力された文字が等しければってどういう意味でしょうか? 独習C#のコードなんですが…考え込まないで次に進んでも差し支えないですかね
- 160 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 07:47:55.15 ID:wTWZ6CmIa.net]
- 改行も文字
文字コード調べろ
- 161 名前:デフォルトの名無しさん [2019/03/29(金) 08:02:33.20 ID:Eeymx9+70.net]
- >>157
久しぶりなんで自信ないけど、先頭が改行な文字列(そんな文字列は改行だけ入力された場合だけ)が入力される間ループし続ける処理かな。 逆パターン(改行だけなら終了するループ)なら割とよく作る。
- 162 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 08:19:56.98 ID:Z1iKEAdk0.net]
- >>159
質問に質問を重ねる形で申し訳ないのですが 先頭が改行な文字列とは何なのでしょうか? コード全文はこんなhttps://ideone.com/Cf6l23感じなのですが…
- 163 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 08:50:35.24 ID:YK+WjxC90.net]
- 先頭とかは気にしなくていいが
要は改行も文字の一種だからConsole.Read()で返されうるということ
- 164 名前:デフォルトの名無しさん [2019/03/29(金) 08:50:50.31 ID:Eeymx9+70.net]
- >>160
いあ、ごめん。 ReadLineと勘違いしてた。 Readは1文字入力だ。 例えば >abc と入力しても chには’a’しか入ってこない。 なので >[Enter]で改行 で chに\nが入る。 (OSによっては\rが改行)
- 165 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 11:38:47.05 ID:Vcbtlc+70.net]
- 参考までに、漏れは、Ruby で、
ファイルの最後の1バイトが、改行コードかどうか? という処理を作った CR(復帰、0x0D)、LF(改行、0x0A) Windows は、CRLF, \r\n Linux は、LF, \n 古いMac は、CR, \r last_line = nil File.foreach( "abc.txt" ){ |line| last_line = line } p last_line.end_with?( "\n" ) # 末尾が、\n か?
- 166 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 11:45:21.84 ID:NWe290lip.net]
- >>163
C#初心者スレで誰に対しての参考なんだよw
- 167 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 11:53:42.53 ID:dNWrd6GAM.net]
- ここも次スレはタイトルに [Ruby禁止] が必要だな
- 168 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 14:02:16.54 ID:4Qaz8P7sa.net]
- >>164
他のスレにもよく出没するruby気違いだよ。 ところ構わずrubyの話を始め、大した知識もないのに話に首を突っ込んで場を荒らす迷惑もの。 いくら叩いても消えないゴキブリのような存在だよ。
- 169 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 14:57:23.90 ID:N6N7D78B0.net]
- 仮にサンプルコードがrubyじゃなくても大した参考にならないレスだということに驚きを隠せない
- 170 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 15:21:01.41 ID:kIHWJH0H0.net]
- 厳密にいえば>>157だって
C言語レベルの質問だよな いくら初心者用のスレとはいえさ。。 ふらっと C#,C♯,C#(初心者用(ただしC言語習得者に限る)) にすべき
- 171 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 15:26:30.90 ID:BZTP93w70.net]
- >>168
コンソールの話であってC言語かは関係ない
- 172 名前:デフォルトの名無しさん [2019/03/29(金) 15:35:39.49 ID:Eeymx9+70.net]
- タイトルに書いたところで来るのでNGワードRubyでおk
- 173 名前:デフォルトの名無しさん mailto:sage [2019/03/29(金) 15:42:52.32 ID:dPR72N5Kd.net]
- >>168
それは難癖すぎる
- 174 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 01:56:39.15 ID:nXZ9oX+k0.net]
- c#でデストラクタってスコープ外れたときじゃなくてGCが動くときに呼ばれるんだよね?
だとしたらみんなどういう処理に使ってるの?
- 175 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 02:56:07.21 ID:L65N8b2w0.net]
- スコープ外れたとき呼ばれようがGCの時呼ばれようがデストラクタはデストラクタだ。後処理が必要な時使えばいい。
例えば、メモリ動的確保したら後処理として解放する処理が必要だが.NETはGCで勝手にやってくれるし。 他にネイティブのハンドルとかオープンしたらクローズとか。 いつ呼ばれようがただのデストラクタだ
- 176 名前:デフォルトの名無しさん [2019/03/30(土) 03:04:53.19 ID:1YGxKDqg0.net]
- IDisporsableに書く処理を2重に書いておいて
using使わずにそのクラスを使われてしまった時の保険とか?
- 177 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 07:16:33.58 ID:kQToIs4ma.net]
- >>172
積極的リソース解放をし忘れた時の保険 つまりDispose呼びだしとロギング それ以外の使い道は見たことないな
- 178 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 08:26:04.36 ID:nXZ9oX+k0.net]
- c++だとコンストラクタで割り込み禁止してデストラクタで割り込み禁止解除することで割り込み禁止解除の忘れを防ぐとか色々便利なんだけどね
呼ばれるタイミングがわからんとなるとクリティカルな処理はできないよね
- 179 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 09:14:36.79 ID:kQToIs4ma.net]
- そういうのはusingとDisposeでやればいい
- 180 名前:デフォルトの名無しさん [2019/03/30(土) 09:17:58.21 ID:MDhvoYYM0.net]
- >>176
C#ならIDisposableを実装してusingステートメントで使う
- 181 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 13:28:45.76 ID:wWTOiR4+0.net]
- >>176
C#やで?
- 182 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 13:59:44.65 ID:rIDHHvWNd.net]
- ちなみにrubyだとどう実装するんですか?
- 183 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 14:18:07.24 ID:pD47374c0.net]
- >>180
スレチ
- 184 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 14:52:39.92 ID:xBHe+wwVa.net]
- >>180
変なのを呼び寄せる餌を撒くなよ
- 185 名前:デフォルトの名無しさん [2019/03/31(日) 14:31:51.70 ID:+4KlqcXq0.net]
- 変数の保存先なのですが、ローカル変数 = スタック、インスタンス実体 = ヒープらしいのですが、
以下のように、クラスに直接登録された変数/インスタンスはどこに保存されるのでしょうか? class A { int a = 0; static string b = "テスト"; CLS cls = new CLS(); }
|

|