- 1 名前:デフォルトの名無しさん [2022/09/18(日) 14:39:29.51 ID:VjUDO6tf0.net]
- 次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください >>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part155 https://mevius.5ch.net/test/read.cgi/tech/1655422932/ ■関連スレ C#, C♯, C#相談室 Part96 https://mevius.5ch.net/test/read.cgi/tech/1639965805/ ■コードを貼る場合は↓を使いましょう。 https://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/ https://docs.microsoft.com/en-us/dotnet/standard/class-libraries/ https://referencesource.microsoft.com/ https://source.dot.net/ ・Insider.NET > .NET TIPS - @IT https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html ・DOBON.NET .NET Tips https://dobon.net/vb/dotnet/index.html - VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
- 2 名前:デフォルトの名無しさん [2022/09/18(日) 14:39:44.87 ID:VjUDO6tf0.net]
- 新しく立てましたがあってますかね?
- 3 名前:デフォルトの名無しさん [2022/09/18(日) 15:29:46.75 ID:wEL99hbX0.net]
- ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!
ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ! ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ! ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ! ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!ちんぽ!
- 4 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 15:57:15.60 ID:lQR3ujpZ0.net]
- いちおつ
大体あってるけど冒頭のおまじないが消えてるね… !extend:checked:vvvvv:1000:512
- 5 名前:デフォルトの名無しさん [2022/09/18(日) 16:33:33.24 ID:VjUDO6tf0.net]
- >>4
ほんとだ 書き込むときはあったのにな…
- 6 名前:デフォルトの名無しさん [2022/09/18(日) 16:35:43.35 ID:VjUDO6tf0.net]
- 立て直したほうがいいのかな?
- 7 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 16:35:49.19 ID:6iWR4o+g0.net]
- スレ立てるときは1~2行ぐらい追加して立てた方が良いかなって話だよね
- 8 名前:デフォルトの名無しさん [2022/09/18(日) 16:39:46.64 ID:VjUDO6tf0.net]
- つまり次立てる人が気をつけてくれればいいってことか…
- 9 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 16:42:23.27 ID:lQR3ujpZ0.net]
- 書いてる通り1行ぶんは消えるからね 毎回増やさないといけない
立て直しはしなくていい、大丈夫 次スレ立てるときに気を付けないといけないなーと
- 10 名前:デフォルトの名無しさん [2022/09/18(日) 16:43:34.75 ID:VjUDO6tf0.net]
- なるほどサンクス
- 11 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 16:44:45.13 ID:aznVlwJJa.net]
- >>5
立てる時に消費されるから増やさなきゃいけないんだよ 5chは仕様の古さが目立つな 今時シフトJISだったり1000レスまでだったりメアド欄があったりそこにsageを書いたり
- 12 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 17:39:41.49 ID:eBtB+6XZ0.net]
- >>3
ちんぽ!まで読んだ
- 13 名前:デフォルトの名無しさん [2022/09/18(日) 17:43:02.64 ID:a87PubfG0.net]
- 読んだんだ(笑
- 14 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 17:44:39.84 ID:eAqQvdrB0.net]
- ReDosにもならない
- 15 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 12:44:07.38 ID:bKWC7nbK0.net]
- «許可»をクリックして、ロボットではないことを確認してください!
- 16 名前:デフォルトの名無しさん mailto:sage [2022/09/19(月) 15:30:11.92 ID:t+9kOvGj0.net]
- ポチッとな
- 17 名前:デフォルトの名無しさん mailto:sage [2022/09/20(火) 12:34:37.10 ID:sadn543UM.net]
- ::::::::::::::::::::::::...... ........::::::::::::::::::::::::::: ;;;;;;;:::::::::::::::
γ ⌒ ⌒ `ヘ イ "" ⌒ ヾ ヾ / ( ⌒ ヽ )ヽ ( 、 , ヾ ) ................... .......ゞ (. . ノ. .ノ .ノ........... ........ :::::::::::::::::::::::::::::::::ゝ、、ゝ.....| |..., , ノソ::::::::::::::.......:::: _ _i=n_ ._ [l_ .._....,,. .-ー;''! i;;;~-ヽ_ii_i=n_ [l h__ /==H=ロロ-.γ ,~ー'''l ! |'''ーヾ ヾ 「!=FH=ロロ ¶:::-幵-冂::( ( |l | ) )=HロΠ=_Π Π=_Π「Ⅱヾ、 ⌒~"""''''''⌒~'"´ ノ;;'':::日lTΠl:::.... Д日lTl,,..:''''" ""'''ー-┬ーr--~''"" :::Д日lT:::: FH=n.:::::' | | :::FL日l」::::: ロΠ=:::::.:. ノ 从 ゝ .::田:/==Д:: 口=Π田:::. .::::Γ| ‡∩::: Γ| ‡∩Π::.... ...:::Eヨ::日lTlロ:::: Д日lTlロ_Π::::....... ...::::::::田:凵Π_=H:: =Hロ凵Π=_Πロ=HロΠ:::.................:::::::::::口ロロH「l.F
- 18 名前:デフォルトの名無しさん [2022/09/21(水) 21:35:43.28 ID:sPGT0eCrM.net]
- hosyu
- 19 名前:デフォルトの名無しさん [2022/09/23(金) 08:57:53.80 ID:0O/Obm8IM.net]
- hosyu
- 20 名前:デフォルトの名無しさん mailto:sage [2022/09/23(金) 14:31:23.00 ID:2Q5DEdnDM.net]
- 皆様に人脈の加護がありますように❤
- 21 名前:デフォルトの名無しさん [2022/09/25(日) 00:31:29.09 ID:DIWRYevd0.net]
- 質問です!
Windowsでwavとかmp3とかじゃなく配列で作った正弦波を鳴らすための標準ライブラリってありますか? シンセサイザーアプリのために低レイテンシーだとありがたいです
- 22 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 00:59:16.75 ID:Y7mttA55M.net]
- XAudio2
- 23 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 01:45:39.85 ID:6wI0gbs/0.net]
- そもそもwavファイル自体が波形データそのままに近いのでは?
Win32APIを直接叩くとやりたいことは出来るとは思うけどね waveOutOpen()とかこの辺 大昔にやった事あるけどその時はVCだったし全然覚えてないわw
- 24 名前:デフォルトの名無しさん [2022/09/25(日) 02:01:54.70 ID:DIWRYevd0.net]
- >>23
waveファイルはヘッダー情報があるのでそれ作らないといけないのがめんどくさい わざわざファイルを作らないといけないのもスマートじゃないし やっぱりWin32API使わないとなのか… このへん破ったことないからわからん
- 25 名前:デフォルトの名無しさん [2022/09/25(日) 02:02:08.15 ID:DIWRYevd0.net]
- >>22
調べてみます
- 26 名前:デフォルトの名無しさん [2022/09/25(日) 02:02:54.21 ID:DIWRYevd0.net]
- >>24
この辺使ったことないの間違いです どんな誤変換したんだ…
- 27 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 02:10:21.67 ID:33uw2yCZH.net]
- この質問者、前スレで就職相談してた27歳の人じゃね?
なんとなく「mauiで」とか条件後出しされそうな悪寒
- 28 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 02:29:37.09 ID:BeOzTuvS0.net]
- 邪推はやめてくれよブラザー
- 29 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 04:18:13.47 ID:kQGcz7Hc0.net]
- dllをプロジェクトの参照に入れずに、実行時に動的に読み出して内部のメソッド実行やインスタンスの生成をしたいのですが可能でしょうか?
- 30 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 05:05:25.63 ID:QuKarKAJ0.net]
- >>29
可能です
- 31 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 07:24:05.34 ID:PDKGWlWe0.net]
- そりゃ元々 Dynamic = 動的 だからできないわけない
てか C# dll 動的ロード とかでググろうと思わないのか? https://qiita.com/rita0222/items/609583c31cb7f0132086
- 32 名前:デフォルトの名無しさん [2022/09/25(日) 07:35:25.02 ID:DIWRYevd0.net]
- 21ですが色々調べた結果標準ライブラリでは難しいようですね、、、
win32APIをDLLインポートするのも大変そうなので(Xaudio2をC#で使う記事を見ましたが理解ができませんでした) 素直に拡張ライブラリのNAudioを使うようにします。
- 33 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 07:46:43.94 ID:ZSqiS99C0.net]
- dll実装が先に存在してるなら、参照で先に作っておいて、
実行時にこけたらAssembly.LoadFileとかするのが普通かな。 dll実装が不定ならAssembly.LoadFileで読んで、dynamicで動かすことになるが 結構不安要素でかい。 Reflection使ってメソッドの実装のありようの確からしさは実行中に確認する必要がある。 interfaceなりでちゃんとdll側を縛ってあるのがいちばんいいけどね。
- 34 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 18:52:10.05 ID:YHbagUeLa.net]
- どこの普通なんだか
- 35 名前:デフォルトの名無しさん (アウアウウー Sa43-mISd) mailto:sage [[ここ壊れてます] .net]
- dllの動的ロードしたいならMEF使え
https://learn.microsoft.com/ja-jp/dotnet/framework/mef/
- 36 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 06:17:01.60 ID:4jeN/07Z0.net]
- プラグインシステムならまだしも、dllの動的ロードでMEFなんか使わんが...
- 37 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 12:27:47.38 ID:6iA7KcBP0.net]
- そういうのをプラグインと言うんだぞw
プラグインじゃなきゃ普通に参照すればいい
- 38 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 12:35:43.49 ID:6iA7KcBP0.net]
- あ、そうか、もしかして参照したdllはアプリ起動と同時に読み込まれると思ってるやついるのか
だから参照しないようにしてんの?w
- 39 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 15:03:37.01 ID:4jeN/07Z0.net]
- 開発時は参照では組むが、実際の実行環境では
実行の基点となるexeとは別の場所にdllが配置されてるとかもあるからなぁ。 まあ質問者が何やりたいかは明確にしていないからなんとも。 dllを遅延ロードしたいだけなら、上にあるように 普通に参照で組んで、実行時にdll無いと必要になるステップに 到達したらエラーになるから、それに備えて AssemblyResolverに無かったらこの場所のこのdll読めと指示しとけばいいだけ。 これも上に書いた通り。
- 40 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 15:46:38.31 ID:T6INyDl80.net]
- MAUI君とマウントじじいはID変わってもすぐ分かるな
- 41 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 17:18:58.59 ID:6iA7KcBP0.net]
- いつも論破されて悔しそうなやついて草
- 42 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 17:21:26.07 ID:6iA7KcBP0.net]
- >>39
さすがに必須dllを別管理するのは筋が悪い dll hellを招くアンチパターンだぞ 20年前にはみんなやめてるからそろそろ知識をアップデートしよう
- 43 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 20:11:02.71 ID:4GKr4tPoM.net]
- プラグインスタイルにする場合は開発スタート時点から外部に公開する用のinterfaceを
別プロジェクトにする必要があるからお勧めしない アプリプロジェクト 公開用コモンプロジェクト プラグインプロジェクト こういうのを含んだ感じになる c++はこういうのが柔軟でやりやすい C#はあまりプラグイン開発に向いていない
- 44 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 20:15:47.43 ID:w7MQedDGM.net]
- んなことはない
C#であまりプラグイン的な機構が使用されないのは、C++に比べて広く一般的に使用されるアプリケーションが少ないのと、 ビルドが簡単高速なために全部リビルドしたほうが早いからだよ
- 45 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 20:16:31.39 ID:6iA7KcBP0.net]
- あら捜しの結果、たかだか一つ数分で作れるプロジェクト分割することを欠点と言い始めたかー
- 46 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 20:17:49.62 ID:4GKr4tPoM.net]
- 全くclassなどを受け渡ししない場合を除いて通常は
アプリプロジェクト 公開用コモンプロジェクト というソリューションで開発してプラグインは 公開用コモンプロジェクト プラグイン個別プロジェクト で開発 公開用コモンプロジェクトが分厚くならないようにinterface中心にする
- 47 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 20:19:44.63 ID:4GKr4tPoM.net]
- 粗さがし?
普通に作ると分かることだが… c,c++はゴミみたいな存在だがプラグイン作る時は.hやhpp配るだけでやりやすいことが多い
- 48 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 20:21:25.82 ID:4GKr4tPoM.net]
- 重量級アプリ作っててプラグインの仕組みを導入したくなった場合
かなり面倒 dynamicにするのは無し
- 49 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 20:57:57.39 ID:vjnVDv0A0.net]
- classの受け渡しなんて言ってる時点でもう...
- 50 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 21:43:04.31 ID:4GKr4tPoM.net]
- じゃあ現実的なラインで話せよ
俺が書いた以外で実践的なプラグインを合理的に作る方法をさ レベル低いのにしゃしゃって来るんじゃない
- 51 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 21:58:39.65 ID:6iA7KcBP0.net]
- 20年前の知識でイキるのは恥ずかしいぞw
- 52 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 22:09:28.79 ID:4GKr4tPoM.net]
- >>51
話が見えてないんだな お前がここで一番の馬鹿だ これは間違いない 対案も出せない しかもお前はジジイだな 筋が悪いと言うワードセンス 20年前のDLLの話をしてるし
- 53 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 22:43:33.82 ID:n/I9g/yq0.net]
- >>42
必須じゃないdllでやるんだろ。 ハードウェアなどの環境に依存するdllとかな。
- 54 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 23:44:58.22 ID:6iA7KcBP0.net]
- >>53
そういうのは参照できないから(あるいは不要なものまで全部参照する必要があるから)インターフェースがいる プラグインがベストプラクティス
- 55 名前:デフォルトの名無しさん [2022/09/27(火) 08:07:21.08 ID:/UUTRmF20.net]
- プラグインはプラグインのインターフェースに合わせて実装するんであって
既にあるdllを単に動的バインディングするのとは別物だな。
- 56 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 08:55:03.98 ID:SwtBqNyR0.net]
- powershell上でC#の連携で、再帰するような処理や重い所をC#で書いて使ってるんですが、
powershellの機能が必要な時はC#側からpowershellのスクリプトブロックをFunc<>やAction<>でコールッバックとして呼び出す形にしています。 このときに、Func<>やAction<>の引数にrefを指定して、bool値とかをpowershell側から設定して返してもらうようしたかったのですが、 Func<>やAction<>の引数にrefは指定できないようでした。 代替として、PSObjectにNotePropertyを作って値を入れて貰ってまますが、他に良い手段があったら教えてください。
- 57 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 09:32:49.82 ID:LsBo1VKG0.net]
- >>55
参照しろよw
- 58 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 09:34:23.58 ID:LsBo1VKG0.net]
- >>56
自分でデリゲート型を作ればいんじゃね 知らんけど
- 59 名前:デフォルトの名無しさん [2022/09/27(火) 10:31:21.25 ID:rJ/evy9A0.net]
- WPFとかにおけるPrismってそんなにいいの?
- 60 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 10:48:09.96 ID:SwtBqNyR0.net]
- >>58
Func<>やAction<>がだめってことはデリゲートの引数指定でrefがだめってことかと思い込んでましたが違うんですかね。 試してみます。ありがとうございました。
- 61 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 12:21:27.17 ID:LsBo1VKG0.net]
- >>60
できるぞ https://ufcpp.net/blog/2022/2/ref-generic-arguments/ Funcとかは自動生成とは言え引数の数だけ実際に宣言してる ここにrefやoutを入れるとその組み合わせは膨大な数になるから(例えば引数2つだけでもFunc<T1,T2>, Func<ref T1,T2>, Func<ref T1,ref T2>, Func<T1,ref T2>,Func<out T1,T2>, Func<T1,out T2>, Func<out T1,out T2>, Func<ref T1,out T2>, Func<out T1,ref T2>)もっといい方法が無いか探してるところだろうな
- 62 名前:デフォルトの名無しさん (ワッチョイ 7f79-nd6Q) mailto:sage [[ここ壊れてます] .net]
- できました。
>>61そういう泥臭い実装だったのか・・・ありがとうございます。 最初からdelegateで書けばよかった。
- 63 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 15:54:24.92 ID:SwtBqNyR0.net]
- どうやらstructを含む値型を参照渡ししても呼び出され側のpowershellでは書き換えられないらしい。
下記のPSParamのclassをstructに変更するとpowershell側ではうまく書き換わってるように見えても、呼び出し側のC#に戻るとbState1はTrueのままとなる。 バグなのかなあ。 Add-Type @" using System; public class Helper { public class PSParam { public bool bState1; public bool bState2; }; public delegate void refAction1(ref PSParam p); public static void CallbackTest(refAction1 proc) { var p = new PSParam(); p.bState1 = true; p.bState2 = true; Console.WriteLine("bState1:{0}", p.bState1); proc(ref p); Console.WriteLine("bState1:{0}", p.bState1); } } "@ [Helper]::CallbackTest2({param([ref]$p); $p.Value.bState1 | Out-Host; $p.Value.bState1 = $false; $p.Value.bState1 |Out-Host; })
- 64 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 15:56:16.12 ID:SwtBqNyR0.net]
- 上のCallbackTest2はCallbackTestの間違いです
- 65 名前:デフォルトの名無しさん (ワッチョイ c707-mISd) mailto:sage [[ここ壊れてます] .net]
- バグって言うかスクリプトブロックを渡してるからだろうな
- 66 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 16:20:55.11 ID:LsBo1VKG0.net]
- ていうか参照渡しじゃなくHashSetを使ってやりとりするんじゃいかんの?
- 67 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 16:23:37.50 ID:LsBo1VKG0.net]
- HashSetじゃなかった
Hashtableだ
- 68 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 16:32:12.76 ID:cIZHSBt80.net]
- structにこだわる意味はなさそうだしそれならrefも必要ないし
そもそもFuncの返値にすればいいんじゃないの的な
- 69 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 16:37:17.49 ID:LsBo1VKG0.net]
- Hashtableを使う場合
Add-Type @" using System; using System.Collections; public class Helper { public static void CallbackTest(Action<Hashtable> proc) { var p = new Hashtable(); p["bState1"] = true; p["bState2"] = true; Console.WriteLine($"bState1:{p["bState1"]}, bState2:{p["bState2"]}"); proc(p); Console.WriteLine($"bState1:{p["bState1"]}, bState2:{p["bState2"]}"); } } "@ [Helper]::CallbackTest({param($p);$p.bState1 | Out-Host; $p.bState1 = $false; $p.bState1 | Out-Host })
- 70 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 16:41:08.41 ID:J8MleXan0.net]
- >>63
普通に bState1: True True False bState1: False ってなるけど? $PSVersionTable.PSVersion: 5.1.19041.1682
- 71 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 16:45:59.80 ID:LsBo1VKG0.net]
- >>59
Prismは大袈裟すぎるがMVVMを使うなら何か一つフレームワークは必須 CommunityToolkit.Mvvmいいぞ 必要な機能は揃ってるのにシンプルで学習コストが低く軽い これで慣れてからPrismに移ってもいいし仕事じゃなきゃ移らなくても何も問題ない
- 72 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 16:51:36.15 ID:cIZHSBt80.net]
- >>70
class PSParamをstruct PSParamに変えても?
- 73 名前:デフォルトの名無しさん [2022/09/27(火) 16:53:51.16 ID:rJ/evy9A0.net]
- >>71
ふむふむなるほど…
- 74 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 16:58:10.34 ID:SwtBqNyR0.net]
- >>69
わざわざC#でやるからには少しでもパフォーマンスを上げたいので、 C#側でハッシュとかPSObjectで文字列のプロパティを作って渡すとかは極力避けたいのです。 >>70 >>72の仰る通りclassで渡してるので正常に動くやつです。structに変えて試してください。
- 75 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 17:03:06.67 ID:SwtBqNyR0.net]
- ちなみにテスト結果は
値の参照渡し× >>63-64 参照の値渡し○ 参照の参照渡し○ でしたので、コンテナを渡す限りではrefは必要ないですね。
- 76 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 17:04:20.64 ID:LsBo1VKG0.net]
- >>74
そんなんでパフォーマンス上がらんぞ PowerShell使ってる時点で無意味だし計測しても誤差が大きすぎて差は出ない スクリプトブロックをデリゲートに入れるための代理関数とか中で作られてるからな
- 77 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 18:47:57.59 ID:SwtBqNyR0.net]
- >>76
計測してみました。 以下のclassでパラメーター渡すのよりもHashtableのが2割程速い結果になりました・・・これはHashtable採用ですね。 Add-Type @" using System; using System.Collections; public class Helper { public class PSParam { public bool bState1; public bool bState2; }; public static void CallbackTest1(Action<PSParam> proc) { var p = new PSParam(); p.bState1 = true; p.bState2 = true; proc(p); } public static void CallbackTest2(Action<Hashtable> proc) { var p = new Hashtable(); p["bState1"] = true; p["bState2"] = true; proc(p); } } "@ (Measure-Command { 1..10000 | %{ [Helper]::CallbackTest1({param($p);$p.bState1 = $false; }) } }).TotalMilliseconds (Measure-Command { 1..10000 | %{ [Helper]::CallbackTest2({param($p);$p.bState1 = $false; }) } }).TotalMilliseconds
- 78 名前:デフォルトの名無しさん (ワッチョイ 1201-ut7I) mailto:sage [[ここ壊れてます] .net]
- >>72
ああ、すまんちゃんと読んでなかったわ まあ、仕様だろうね 変更可能な値型は避けろって書いてある ❌ 変更可能な値型を定義しないでください。 (... 中略 ...) また、一部の言語 (特に動的言語) では、ローカル変数であっても逆参照されるときにコピーが作成されるため、変更可能な値型の使用で問題が発生します。 https://learn.microsoft.com/ja-jp/dotnet/standard/design-guidelines/struct 普通にクラスで作ればいいだけ、てかPowerShell使ってる時点でclass/structで細かいパフォーマンスチューニングしても無駄だと思うぞ
- 79 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 20:39:58.78 ID:wQgw+D+40.net]
- VS2019で.NET 4.5 + NugetでValueTuple入れて作ったプロジェクトを
VS2012で読もうとしたらValueTuple扱えなかった・・ VS2012も.NET 4.5は大丈夫だけど、ValueTupleだとC#のバージョンが問題になるのかな?
- 80 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 21:45:06.74 ID:LsBo1VKG0.net]
- https://qiita.com/shimamura_io/items/5a1c754914b864540bac
この手のめんどくさいトラブル抱える可能性残すくらいなら4.8使うかValueTuppleあきらめろよ
- 81 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 08:17:08.29 ID:if0kFZkG0.net]
- VS2012じゃC#コンパイラが全然タプルに対応できないからね
普通の構造体として扱うことはできるかもしれないが
- 82 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 08:31:43.95 ID:qrxLeK0JF.net]
- 読んでビルドするだけならVSCode使うほうがよさそうかな
- 83 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 08:37:42.78 ID:ZrAf2Mbg0.net]
- 学習オプションをGUIでも確認しやすいという意味でも
VSの方がはるかに向いてるが。 VSCodeが候補にあがるのはAzure使っててC#だけでなく 色々混じってる時くらいでしょ。
- 84 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 08:38:04.69 ID:ZrAf2Mbg0.net]
- 学習→GUI
- 85 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 09:06:32.72 ID:FDPwu/KN0.net]
- そこでQtですよ(嘘)
- 86 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 10:26:54.48 ID:Jk2txA1W0.net]
- QtやTcl/Tkとか名前は聞くけど誰も使っている人居ないんだよね
WinFormsより簡単なの出さないと日本では流行る気がしないw
- 87 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 12:46:58.02 ID:GXLv430Ua.net]
- >>86
かつてのDelphiやVB6の役割が今のWinforms これ以上簡単なモノは出ないだろ
- 88 名前:デフォルトの名無しさん [2022/09/29(木) 10:40:58.78 ID:yzYmCLI10.net]
- オブジェクト指向で
クラス=ニュークラス 変数A=クラス.メソッド(引数) で他のクラスでメソッドで作った変数Bを変数Aに代入したいとき returnで返すのが一般的なんかな? 俺他のクラスでプロパティ作ってメソッド内で作った変数Bをプロパティに入れて クラス=ニュークラス クラス.メソッド(引数) 変数A=クラス.プロパティ にしてるんだけど異端か? なんか遅くなるとかの弊害ある?
- 89 名前:デフォルトの名無しさん mailto:sage [2022/09/29(木) 10:56:44.30 ID:ZDD9PwVa0.net]
- >>88
#nullable enableにすると、そのプロパティーを hoge? にしないとワーニングが出てくるね
- 90 名前:デフォルトの名無しさん mailto:sage [2022/09/29(木) 11:05:58.40 ID:c05GXPup0.net]
- そのclassの設計次第だとは思うけど…
単純な計算結果を必要としているのならstatic methodにして直接メソッドの結果を取得する方が分かりやすいだろうし インスタンスの何かがその処理に必要であるのならプロパティ経由で取得する方が良いだろうし
- 91 名前:デフォルトの名無しさん [2022/09/29(木) 11:27:28.88 ID:yzYmCLI10.net]
- ふむふむケースバイケースなのかな?
- 92 名前:デフォルトの名無しさん mailto:sage [2022/09/29(木) 11:48:18.47 ID:nA4Nikqb0.net]
- メソッドの仕様とプロパティの仕様の二つを読まなきゃならなくなるから一般的に可読性と保守性は落ちる
あと副作用前提なので参照透過でなく多用するとスパゲッティになりやすくなる メソッドがthisを返すならMauiAppBuilderみたいにメソッドチェーンで使えるようになるしプロパティパターンでパターンマッチングできるから場合によっては便利になる
- 93 名前:デフォルトの名無しさん [2022/09/29(木) 17:05:48.88 ID:yzYmCLI10.net]
- >>92
なるほどありがとうございます
- 94 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 08:39:35.64 ID:EDStmk6M0.net]
- ブラウザの「名前をつけてページを保存」をWebview2でやりたいのですが、無理ですかね?
stream で読み込むくらいしか方法はないですか?
- 95 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 08:48:17.73 ID:2B0IsOOc0.net]
- >>94
それはブラウザの役目であってHTMLをレンダリングして表示するWebViewの役目じゃない スマホのブラウザにはそんな機能ないだろ
- 96 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 09:34:14.17 ID:EDStmk6M0.net]
- >>95
そうですよね WebBrowserにはWebBrowser.ShowSaveAsDialog メソッドがあったのですが・・・
- 97 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 09:40:46.42 ID:Vj0oK+Fa0.net]
- Chromeとかのダイアログも結局はWindowsならshell32のSHBrowseForFolder利用したりとOSの機能使ってるだけなんじゃないの?
- 98 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 10:43:04.40 ID:EDStmk6M0.net]
- >>315
予想で来ていたなら大儲けしたんだろ ついでにそのスクショもうぷ
- 99 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 10:47:28.56 ID:HrxhgRpA0.net]
- >>98
おまえの予想のほうがスゲェ!w
- 100 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 10:52:54.13 ID:EDStmk6M0.net]
- 誤爆w
webvew2コントロール上で右クリックすると「名前を付けて保存」が出るようなので そこを自動でやるだけなですがいい方法ないですかね?
|
![](http://yomi.mobi/qr.gif)
|