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

■ このスレッドは過去ログ倉庫に格納されています
2019/03/07(木) 06:35:41.12ID:6L3KEJfe0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

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

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/03/22(金) 12:38:37.72ID:nPC1T1eJM
>>70
一般論として、ユーザーコード内で宣言した単独の変数のメモリ消費量が問題になることは「全く」「無い」
巨大な配列を必要とする場合を除けばintでよい
2019/03/22(金) 12:50:16.68ID:S3zLmlK0M
>>71
わかりました
親切に教えていただきありがとうございました
73デフォルトの名無しさん (ワッチョイ 6b2d-yExI)
垢版 |
2019/03/22(金) 17:45:07.05ID:piAmWzDj0
ちょっと上で英語の話題があったついでに用語について教えてほしいんだけどさあ
Concurrency = Asynchronous processing
って理解であってるん?
2019/03/22(金) 17:48:21.39ID:nPC1T1eJM
>>73
間違ってる
シングルスレッドでも非同期プログラミングは必要
75デフォルトの名無しさん (ワッチョイ 6b2d-yExI)
垢版 |
2019/03/22(金) 17:58:40.45ID:piAmWzDj0
Concurrency ∈ Asynchronous processing
こんな感じ?
2019/03/22(金) 18:04:58.89ID:nPC1T1eJM
>>75
間違ってる
並列処理だからといって非同期プログラミングが必要とは限らない
fork-joinなんて普通に同期処理
77デフォルトの名無しさん (ワッチョイ 6b2d-yExI)
垢版 |
2019/03/22(金) 18:19:57.20ID:piAmWzDj0
確かにそうだわ
ただなんかしっくり頭に入らないんで、良い図かなんかないかな
2019/03/23(土) 05:06:26.15ID:RPbAWfs10
SOAP Webサービス(asmx)のC#からの呼び出しで質問なんだが、UserAgentってどうやって設定すればいいの?
ttps://www.ipentec.com/document/csharp-call-soap-web-service
ちなみにここの手順で実装してる
2019/03/23(土) 12:40:40.84ID:RPbAWfs10
soapのUserAgentの追加だけど自己解決したので書いとく
OperationContextScopeにsoapのInnerChannelを渡してOparationContext.Current.OutgoingMessagePropertiesを設定すればよかったみたい
2019/03/23(土) 14:20:50.44ID:xq0oZv2H0
↓こういうデータを保持するためのクラスってなんていうの?EF使わない場合DTOって言わないね?
class Hoge
{
ID { set; get; }

Name { set; get; }

Age { set; get; }

Biethday { set; get; }
}
2019/03/23(土) 14:37:47.12ID:YFI8vOIVM
>>80
貧血ドメインクラス
2019/03/23(土) 15:46:27.60ID:1EN9Vx8A0
>>80
POCO
2019/03/23(土) 16:59:05.27ID:oDoWSLunM
デザパタ扱ってて比較的に新しい書籍教えて
2019/03/24(日) 01:13:49.97ID:yH9zM0xm0
たすけて!
Parallel.Forから
Staticなプログレスバー呼びまくったのに一度も実行時エラーでなかったの
なんで?正常な流れなの・
2019/03/24(日) 01:15:19.62ID:GJ0JjoCX0
>>84
UIを操作できるのはUIスレッドだけ
2019/03/24(日) 01:16:53.70ID:yH9zM0xm0
>>85
プログレスバーはWin7のころの
タスクバーのプレグレスバーなんだよ
2019/03/24(日) 01:18:41.54ID:yH9zM0xm0
Nugetでこれ入れて出せるようになるやつ
Windows7APICodePack

これな
using Microsoft.WindowsAPICodePack.Taskbar;
2019/03/24(日) 01:19:01.98ID:yH9zM0xm0
中でなんかしてるんだろうか
2019/03/24(日) 16:11:44.19ID:SrH2ZhCU0
>>80
パット見、見た目が、JavaScript の JSON 形式に似てる。
2019/03/24(日) 16:19:26.01ID:C+8PS15Z0
それはおめめかおつむがヤバいな
2019/03/24(日) 17:04:29.99ID:GJ0JjoCX0
>>87
だからUIスレッドから操作しろって
https://www.atmarkit.co.jp/ait/spv/1508/26/news029.html
2019/03/24(日) 17:10:34.23ID:gZMjxNOF0
UIスレッド外からいじったのにエラーにならなかったけどなんで?って質問じゃないのか
2019/03/24(日) 18:55:32.16ID:yH9zM0xm0
>>92
そうそう、そういうこと
Parallelで進捗バー増やしてったのに
順調に増えてって正常終了した

TaskbarクラスはStaticでクラスライブラリ(.dll)
なんか理由わかる人いませんか?
2019/03/24(日) 23:49:11.19ID:z21lQS4L0
ソース見てみたらITaskbarList3::SetProgressValue呼んでるだけだし
アプリ内のウィンドウというよりシェルへのアクセスなら
元々UIスレッドで呼ぶ必要ないんじゃねえの

検証してないけど
95デフォルトの名無しさん (ワッチョイ c6fc-WX4v)
垢版 |
2019/03/25(月) 12:38:16.05ID:M0EtypdC0
ドット絵エディタみたいなのは簡単ですか
2019/03/25(月) 12:38:17.23ID:ZS1E97rBM
>>94
あーシェルの可能性か
なるほど

uiスレッドどころか別プロセスか
盲点だったわ
ありがとう、中身見れたら見てみる
97デフォルトの名無しさん (ワッチョイ 5f7c-PdI2)
垢版 |
2019/03/25(月) 13:14:00.29ID:MuEFgcsw0
>>95
エディタ本体つくるのは簡単
各種画像ファイルフォーマットの読み書きが面倒
2019/03/25(月) 13:55:28.16ID:feShKvG5d
>>97
今はnugetでだいたいのフォーマットのライブラリは取得できるんじゃないかな
2019/03/25(月) 14:00:35.30ID:feShKvG5d
てか、Windowsなら標準のBitmapクラスでメジャーどころは扱えるか
100デフォルトの名無しさん (ワッチョイ c6fc-WX4v)
垢版 |
2019/03/25(月) 16:28:23.69ID:M0EtypdC0
>>97
がんばります
ペイントイベント使うだけですよね
2019/03/25(月) 16:39:58.28ID:CQLZj79N0
DrawImageやBitBlt地獄が待ってるんだろうなw
2019/03/25(月) 22:05:04.34ID:QIzg3qUJ0
>>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プロパティで指定したビットマップに描画」を使う。そうじゃないと保存するときにも苦労する
2019/03/25(月) 22:11:51.58ID:sDjcFKgQa
お絵描きに限らないけど、手順を記録するようにしないとundo実装できなくなるよw
何で偉そうにそういう非常識なことを言うかね
2019/03/25(月) 22:17:28.38ID:QIzg3qUJ0
>>103
何の話しているの?
「図形」じゃなく「ドット」エディタで「手順」記録すると大変なことになるよ
undoは任意の時点のデータを退避したらどうにでもできるよ
2019/03/26(火) 02:29:39.88ID:fe5vrK8S0
自分の経験上、Undo、Redoは、プログラミングが難しいことがある。
2019/03/26(火) 02:46:28.44ID:fe5vrK8S0
参照やポインタの値は、一般にはUndoすると変化するので、Undo、Redoを
任意回数行った場合には「識別子」として役立たないことになる。
だから、Draw系ツール、3Dモデラ、3D-CADなどではポインタ値だけで
直線の接続先などを識別するのは難しい。だからと言って座標値だけで識別
できるかというとそれはそれで無理がある場合が有る。だからID番号を付ける
必要が出てくるかもしれない。
CADで、点が1万個有る場合に全選択してから Move した場合の Undo 情報は、
1万個に上る、と言ったような問題点も耳にした。
2019/03/26(火) 02:51:56.51ID:fe5vrK8S0
ツール上では削除しても、内部的には削除せずにメモリ中にずっと残しておけば、
参照やポインタ値は変化することは無い。これを利用する手もあるかもしれない。
ただし、その場合、プログラミング中、オブジェクトを自由に削除できなくなるので、
未来永劫、そのことに気を使い続ける必要がある。
108デフォルトの名無しさん (オッペケ Sr03-s8oI)
垢版 |
2019/03/26(火) 04:35:48.97ID:6g954Hehr
3Dソフトの操作履歴って入れ替え可能だからな(可能な操作のみだが)
それすらすごい
例えばベンドデフォメーションかけた後にオブジェクト同士をマージ
この操作順を普通に入れ替えられる
操作をフリーズ(固める)しない限りどんな操作でも入れ替え可能

そして上記の履歴操作は機能のうちのほんの一部
2019/03/26(火) 05:21:06.95ID:Wr7XD3bSa
ボタンを押すと、計算してその結果をリッチテキストボックスに表示する、構造的にはシンプルなイベントを作ろうとしています。

private void button_Click(object sender, EventArgs e)
{
リッチテキストボックス.Text=(見出し);
◆計算◆
リッチテキストボックス.AppendText(ここに計算結果を表示);
}

自分としては見出しを表示→◆計算◆(数分かかります)→計算結果表示と、上から順に処理されることを期待しているのだけど
実際は◆計算◆が終了するまで最初のテキスト「見出し」も表示されないのですがどうしてなのでしょうか?
2019/03/26(火) 05:23:41.39ID:BYz/7c7n0
連続した削除は統合したり、塗りつぶしは開始点を覚えたり
色々小技もあるので、一概には言えないと思うけどなぁ

本格的に勉強したいなら、paint.net か pinta のソース読むのお勧め
2019/03/26(火) 06:37:47.03ID:AEstRBha0
>>109
リッチテキストボックス.Text=(見出し);
リッチテキストボックス.Refresh();//これを挿入
◆計算◆
で意図通りになるはず
「どうしてなのか」はよくわからないけど
https://dobon.net/vb/dotnet/control/refreshupdateinvalidate.html
を参考に考えてみるとアプリケーションキューが空になるまで再描画されないからとかでは
2019/03/26(火) 10:18:19.55ID:nfpS3j/TM
ドット絵なんて"■"をフォントサイズと色変えて
200x200でやるとかじゃアカンの?
商用?趣味?
2019/03/26(火) 10:27:40.46ID:FWKgfdvb0
お前の息子みたいな小さい世界の話はしてねえんだよ保育所に引っ込んでろ
入れなかったのか?じゃあ死んでろ
2019/03/26(火) 10:53:32.84ID:RcQOpHon0
>>109
イベントハンドラーの中で計算しているから、UIスレッドを掴んだままになってる。
非同期処理化すれば解決するが、計算中もUIを触れるから別途対策が必要。ウィンドウかボタンを無効化とか。

private async void button_Click(object sender, EventArgs e)
{
this.Enabled=false;
リッチテキストボックス.Text=(見出し);
await Task.Run( () => ◆計算◆ );
リッチテキストボックス.AppendText(ここに計算結果を表示);
this.Enabled=true;
}
2019/03/26(火) 10:55:43.23ID:fe5vrK8S0
>>108
速度的な問題点を無視すれば、
編集ソフトでファイルを読み込んだ直後から人間が操作したコマンドの履歴を
全て記録しておいて、ファイルを読み込んだ直後から、最初から最後の1つ手前
まで、その履歴のコマンドを順に再実行するようにすればUndoは実現できる
事は出来る。

この方法だと、操作の途中に重たい処理が挟まっていた場合が問題となる。重たい
処理が行われた場合は、処理の最初と最後でデータをファイルに保存してしまって、
Undoするときはそれを「起点」にする方法も考えられる。ただし、この場合は、
ファイルへの保存に時間がかかる問題が残る。
2019/03/26(火) 11:34:27.90ID:KoWTp9j7d
簡単ですか?くらいの質問する相手なんだから112が言うような実装で良いと思うけど
高機能にしようと思えばいくらでもできるだろうけど既存のドットエディタ使えば?って気もする
勝手に質問を高機能に寄せてああでもないこうでもない言ってても仕方ないよね
2019/03/26(火) 12:05:28.06ID:NEQZ2SJi0
>>116
ゲームの専門家に聞いたんだけど、実はドットエディタは使ってなくて、
1つのファイルに複数のキャラクタ画像をまとめて、普通のPaintソフトの
拡大鏡機能で作っておいて、ゲームプログラムの方で部分的な四角形領域
を座標で指定して複数のキャラクタとして扱っている、と聞いた。
そして、透明部分は、1つの色を「透明色」として扱ってMaskパターン
を作っていると。WindowsのBitBlt系のAPIなら、透明色をそのまま
指定できるタイプのものも確かあったと思うけど。
118デフォルトの名無しさん (オッペケ Sr03-s8oI)
垢版 |
2019/03/26(火) 12:09:54.76ID:6g954Hehr
>>115
しかし3Dソフトは激重アプリなのにサクサクとundo redoできる
設定では1000回まで戻れるようにしている
しかも全部メモリに管理しているんじゃないだろうか
設計が凄まじいのだろう
2019/03/26(火) 12:10:33.61ID:qm+I18En0
>>118
ファイルに落としてるんだよ
2019/03/26(火) 16:10:23.84ID:ERuMXzNG0
>>117
そういうやり方だってあるしドット絵エディタで全て作ってるのだってあるし普通の絵をドット絵チックに変換するツールを使う場合もある
121デフォルトの名無しさん (アウウィフ FF2f-PdI2)
垢版 |
2019/03/26(火) 16:26:20.46ID:5W15sMAGF
>>120
https://goodbyejapan.net/better-stay-quiet
2019/03/26(火) 16:55:27.87ID:fe5vrK8S0
>>118
多分、普段のUndo、Redoはメモリ内のみで行っている。
そして、>>108のように、操作者が順序を入れ替えた場合のみ、
どこかの時点を起点として操作をリプレイするようなことをやってる。
だから後者の場合のみは時間がかかるんじゃないかと思うが、滅多に
やることはないので問題ないと考えられているのではなかろうか?
123デフォルトの名無しさん (オッペケ Sr03-s8oI)
垢版 |
2019/03/26(火) 17:53:29.15ID:6g954Hehr
>>122
3Dソフトはそもそもディペンデンシーグラフで履歴ノードが自由に繋ぎ直せるし、インプットアウトプットもしまくるから
わざわざファイルに出してることはないはず
そしてそれら膨大な数のノードがリアルタイムで動作したりするからなあ

ほんとどうやったら普通のPCでもそれなりに高速に動くようなあんなシステム作れるんだ

ちなみにスクリプトやAPIでも履歴作れるんだよな
openChank closeChankの間に入れ込んだ操作の履歴を一つにしてくれる
2019/03/26(火) 18:13:18.89ID:fe5vrK8S0
>>123
履歴のコマンドの順序を入れ替える操作を高速にするアルゴリズム、今、分かった。

1. 操作を変更する時点は、現在の状態からは近いことが多いはず。
2. だから、ツールの内部処理で、現在の状態から小数回 Undoを繰り返せば、その地点にいったん
  戻ることが出来る。
3. そこからは、新しい順番でコマンドを「Replay(再生)」すれば、目的の結果が得られる。
2019/03/26(火) 18:18:17.85ID:fe5vrK8S0
>>124
・例えば、現在の状態が、ファイル読み込み時点から、1,000回の操作の後だとする。
・現在の状態になる20回前の操作を変更したいとする。その操作は、最初からは980回目である。
・ここで、(1,000回目の)現在の状態から 20回 Undo をすれば、上記の980回目の状態に戻れる。
・この20回くらいの Undo ならば、大して遅くは無いはず。
・出来あがった980回目の状態から、新しいコマンドの列を20回程度繰り返せば、目的のデータが
 完成する。
2019/03/26(火) 19:03:23.56ID:3EcUlBetM
>>80
プレーンオブジェクトと呼んだりするけどこれと言った決まりはない
2019/03/26(火) 19:19:11.31ID:NbUyZWCMH
誰でも頭が良くなる、プログラムが書けるようになる方法が発見される 58034
https://you-can-program.hatenablog.jp
128デフォルトの名無しさん (オッペケ Sr03-s8oI)
垢版 |
2019/03/26(火) 19:28:00.58ID:6g954Hehr
>>124
ちなみに解説はこことか
https://help.autodesk.com/view/MAYAUL/2017/JPN/?guid=__files_GUID_A9070270_9B5D_4511_8012_BC948149884D_htm
129デフォルトの名無しさん (オッペケ Sr03-s8oI)
垢版 |
2019/03/26(火) 19:31:16.28ID:6g954Hehr
あとキャラ一体でこのノード数は当たり前
これが何体もいる上に背景やらエフェクトやら物理演算、アニメーションブレンディングとかも同時にエディタ内でやってる
さらに裏側で動作させてるスクリプトも何百もあるし、APIとかも膨大に動いてる

https://circecharacterworks.files.wordpress.com/2011/11/hypergraph.png
2019/03/27(水) 03:33:29.80ID:NpUsj5uAa
>>111>>114
ありがとうございます
なんとなくイメージはつかめました
2019/03/27(水) 08:27:38.52ID:bis+Aug70
>>80
昔はバリュークラスと呼ばれてた
C#的にはPOCOだな
あとDTOはEFと関係無い
2019/03/27(水) 08:50:32.86ID:vlf+N3dca
azure durable functionをオンプレで使いたいのだけど類似のオプソフレームワークってあります?
MQ使って再発明はダルいっす
2019/03/27(水) 09:16:12.09ID:M3xZFaB+a
>>132
オンプレなのに態々縛りプレイをしたい理由は?
long-runningなスレッドでいいだろ
2019/03/27(水) 15:52:07.47ID:gKV0tUQi0
質問させてください。
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イベントをラムダ式(?)で記述してます。

説明するのに使う用語すらそこら辺から借りてきたもので大変恐縮ですがご指導の程宜しくお願いします。
2019/03/27(水) 16:01:59.45ID:gKV0tUQi0
最後の方、
「Clickイベントをラムダ式(?)で記述してます。」は
「Clickイベントを無名関数(?)で記述してます。」と言うべきだった気がしてきました。
136デフォルトの名無しさん (ワッチョイ 6b2d-5HBQ)
垢版 |
2019/03/27(水) 16:24:53.59ID:ewJriyXK0
他のクラスを承継してクラスを作る時、承継元のクラスのコンストラクタを呼ばないようにするのってどうすればいいの?
2019/03/27(水) 17:16:29.24ID:/UUA2GqJa
>>134
・本体右クリックメニューの方は、xaml側でMenuItemにx:Nameを付けると.cs側で参照できる
・タスクトレイアイコンの方は、作成したMenuItemをフィールドに保持してあとで参照出来るようにする
として、「switch切替関数」と「Clickイベント」でbool変数をトグルさせた後に
各MenuItemのIsCheckedを設定すればできそう

以下余談
WPFでは内部状態とViewの同期はBindingという仕組みを使えば楽できるんだけど(ただし使いこなせるようになるまでが難しい)
タスクトレイ関係のコントロールが無いからWinForms側を使うしか無くて、結局Viewを直接触ることになるんだな……

>>136
無理
仮にそれが出来たら、継承元のprivate変数が未初期化のままコンストラクタが完了することになって
結局そのインスタンスは使い物にならない
2019/03/27(水) 19:03:27.47ID:tQ4XPcUjM
>>131
POCOは特定のフレームワークへの依存を持たない普通のオブジェクトを指す言葉で、
決して振る舞いを持たないことを意味しているわけではない
139デフォルトの名無しさん (ワッチョイ 6b2d-5HBQ)
垢版 |
2019/03/27(水) 19:54:30.82ID:ewJriyXK0
>>137
だめなのかあ・・・・ありがとう
2019/03/27(水) 20:06:11.69ID:bis+Aug70
うんだから
振る舞い無くてもPOCOでしょ

普段使いで貧血ドメインクラスなんてわざわざ言わないしな
ただのデータクラスって言ったり
わかる相手にはプレーンオブジェクトとか言うでしょ
コンテキストによってはレコード型と言ったりもするし
2019/03/27(水) 21:21:06.39ID:LVKAuWEv0
アーキテクチャとか思想で呼び方は変わりそうね
3レイヤーアーキテクチャでアプリケーション層でのドメインモデルからview やjsonのための振る舞いを持たないクラスを俺はviewmodelかdtoとか呼んでるわ
2019/03/27(水) 21:32:05.17ID:gKV0tUQi0
>>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

さて、次は肝心の中身に取り組まなければ!!
2019/03/27(水) 22:04:09.72ID:/UUA2GqJa
>>142
x:Nameを付けたら this._AmenboModeMenu とフィールドとして扱える
インテリセンスが効くし、そのままの型で使えてキャスト不要になるし
.xaml側でx:Nameを変えて.cs側を変え忘れてもコンパイルエラーで気づけるから
.FindName()を経由するよりもフィールドで扱ったほうが楽
2019/03/27(水) 22:13:13.28ID:gKV0tUQi0
>>143
インテリセンスとかキャスト不要とかコンパイルエラーとか、間違いなくそちらの方が良いですね!
体系的知識皆無のコード切り貼りマンの自分では容易には辿り着けない領域・・・
ありがとうございます!早速書き替えてみます!
145デフォルトの名無しさん (ワッチョイ 4b2d-twBZ)
垢版 |
2019/03/28(木) 01:00:26.73ID:VR7enf9Y0
List<List<T>>型のフィールドを含むオブジェクトのディープコピーを作る方法で、定石みたいなのがあったら教えて!!!
2019/03/28(木) 01:01:08.20ID:BGhBm4PEM
JSON.NETでシリアライズしてデシリアライズ
2019/03/28(木) 01:03:43.26ID:D80vvc+Qd
>>146
俺もこれ多用してる
148デフォルトの名無しさん (ワッチョイ 4b2d-twBZ)
垢版 |
2019/03/28(木) 01:06:25.17ID:VR7enf9Y0
まじか、なんか無駄な作業してるような気もするけどこれは楽ちんだわ
ありがとう!
2019/03/28(木) 01:43:57.78ID:yLTGLAEP0
.NETって、既にMSにレガシー扱いされているらしい。
老害って言葉を使うのが好きな若い人、良い経験だ。
2019/03/28(木) 02:25:09.30ID:BZLOzy32d
>>149
それは初耳
ソースは?
2019/03/28(木) 05:36:01.82ID:eEmtiDxQa
.NET (Framework)はレガシー
2019/03/28(木) 08:08:08.64ID:BGhBm4PEM
レガシー
.NET Framework
WinForms
WPF
ASP.NET Classic
ASP.NET MVC
Entity Framework

Notレガシー
.NET Core
Windows Runtime
ASP.NET Core
Entity Framework Core
2019/03/28(木) 19:13:03.21ID:3LZYwZb10
>>152
win32api はレガシーですか?
2019/03/28(木) 19:56:25.15ID:LUeUt0r60
WindowsOSがレガシーってか
2019/03/28(木) 20:16:09.20ID:zYMv+0+90
>>153
Windows Runtimeじゃないからレガシー
2019/03/28(木) 20:44:58.59ID:WadD1DGKa
昔ブルースウィリスがCMしてたね
2019/03/29(金) 07:46:13.85ID:Z1iKEAdk0
do
{
ch = (char)Console.Read();
} while (ch == '\n' | ch == '\r');
この文章の意味が分からないのですが改行と入力された文字が等しければってどういう意味でしょうか?
独習C#のコードなんですが…考え込まないで次に進んでも差し支えないですかね
2019/03/29(金) 07:47:55.15ID:wTWZ6CmIa
改行も文字
文字コード調べろ
159デフォルトの名無しさん (ワッチョイ fb02-hx9e)
垢版 |
2019/03/29(金) 08:02:33.20ID:Eeymx9+70
>>157
久しぶりなんで自信ないけど、先頭が改行な文字列(そんな文字列は改行だけ入力された場合だけ)が入力される間ループし続ける処理かな。
逆パターン(改行だけなら終了するループ)なら割とよく作る。
2019/03/29(金) 08:19:56.98ID:Z1iKEAdk0
>>159
質問に質問を重ねる形で申し訳ないのですが
先頭が改行な文字列とは何なのでしょうか?
コード全文はこんなhttps://ideone.com/Cf6l23感じなのですが…
2019/03/29(金) 08:50:35.24ID:YK+WjxC90
先頭とかは気にしなくていいが
要は改行も文字の一種だからConsole.Read()で返されうるということ
162デフォルトの名無しさん (ワッチョイ fb02-hx9e)
垢版 |
2019/03/29(金) 08:50:50.31ID:Eeymx9+70
>>160
いあ、ごめん。
ReadLineと勘違いしてた。
Readは1文字入力だ。
例えば

>abc

と入力しても

chには’a’しか入ってこない。

なので

>[Enter]で改行



chに\nが入る。
(OSによっては\rが改行)
2019/03/29(金) 11:38:47.05ID:Vcbtlc+70
参考までに、漏れは、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 か?
2019/03/29(金) 11:45:21.84ID:NWe290lip
>>163
C#初心者スレで誰に対しての参考なんだよw
2019/03/29(金) 11:53:42.53ID:dNWrd6GAM
ここも次スレはタイトルに [Ruby禁止] が必要だな
2019/03/29(金) 14:02:16.54ID:4Qaz8P7sa
>>164
他のスレにもよく出没するruby気違いだよ。
ところ構わずrubyの話を始め、大した知識もないのに話に首を突っ込んで場を荒らす迷惑もの。
いくら叩いても消えないゴキブリのような存在だよ。
2019/03/29(金) 14:57:23.90ID:N6N7D78B0
仮にサンプルコードがrubyじゃなくても大した参考にならないレスだということに驚きを隠せない
2019/03/29(金) 15:21:01.41ID:kIHWJH0H0
厳密にいえば>>157だって
C言語レベルの質問だよな
いくら初心者用のスレとはいえさ。。

ふらっと C#,C♯,C#(初心者用(ただしC言語習得者に限る))
にすべき
2019/03/29(金) 15:26:30.90ID:BZTP93w70
>>168
コンソールの話であってC言語かは関係ない
170デフォルトの名無しさん (ワッチョイ fb02-hx9e)
垢版 |
2019/03/29(金) 15:35:39.49ID:Eeymx9+70
タイトルに書いたところで来るのでNGワードRubyでおk
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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