C#, C♯, C#相談室 Part96

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7633-kUv4)
垢版 |
2021/12/20(月) 11:03:25.88ID:sdn/+VfW0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
583デフォルトの名無しさん (ワッチョイ a37c-B69F)
垢版 |
2022/11/14(月) 20:54:18.33ID:XE8fOT6n0
>>582
ありがとうございます。
外部アプリには途中終了コマンドが無いのですが、windowsには何かありますか?ググっても分かりませんでした。外部アプリはウィンドウの無いコンソールアプリです
2022/11/14(月) 22:24:42.02ID:+czhCa5R0
>>583
kernel32のGenerateConsoleCtrlEventを使う。
アプリが対応していれば、穏便な終了処理をしてくれる。
2022/11/14(月) 22:53:47.70ID:Uzyce3Xf0
Process.CloseMainWindowで大体は閉じれるんじゃね
2022/11/14(月) 22:59:16.88ID:Uzyce3Xf0
https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.process.closemainwindow?view=net-7.0

日本語のドキュメントの翻訳おかしいんで、英語版のリンク
ここのRemarksを読むべき
英語苦手ならGoogle翻訳使ってくれ
587デフォルトの名無しさん (ワッチョイ a37c-B69F)
垢版 |
2022/11/15(火) 14:26:47.37ID:Lk8Tc52e0
ありがとうございます。CloseMainWindowは表面的にはHasExitedがtrueになって処理が中止されたように見えるのです、タスクマネジャーで確認すると、閉じたはずのjavaアプリのプロセスが動き続けてCPU・メモリを占拠し続けてしまっていました。

GenerateConsoleCtrlEventはググってもC#、WPFでどう使うのか分からず、途方に暮れています、、、
2022/11/15(火) 14:44:49.76ID:6OfP8eGXa
WindowsでGUIアプリを操作するなら今はUI Automation一択
2022/11/15(火) 14:51:48.92ID:wrDdZ3ZbM
Javaのアプリってのがどういうのか分からんからコメントしようがないな
外部プロセスと通信する、または入力を受け取る仕組み用意してないならKillしかないんじゃね
2022/11/15(火) 14:54:17.14ID:6OfP8eGXa
>>589
何で書かれてようがwindowがあればUI Automationで操作できる
2022/11/15(火) 16:56:39.43ID:f/52+NWlM
>>590
そういう話ではなく、終了させる方法がそもそも用意されてるのかって事
2022/11/15(火) 17:05:43.39ID:Ptkq34Vna
>>591
右上の✕印を押すとたいてい終了できるぞ
2022/11/15(火) 17:13:56.04ID:s+bzFdbT0
>外部アプリには途中終了コマンドが無い
>外部アプリはウィンドウの無いコンソールアプリ
この外部アプリを途中終了できるように改修させる方が楽なんじゃね?
2022/11/15(火) 17:30:09.04ID:tj+bY8hN0
もしかしたらSIGTERM受け付けてるかも
2022/11/15(火) 17:34:59.92ID:y5E/LJbRr
>>587
GenerateConsoleCtrlEventのC#での使い方はStackOverflowの813086とか見るといいよ
596デフォルトの名無しさん (スプッッ Sd43-B69F)
垢版 |
2022/11/16(水) 14:51:33.26ID:Nr772sxzd
ありがとうございます。再度調べてみます
2022/11/16(水) 16:31:41.33ID:L7AEwAjo0
LibraryImport来たついでに逆アセしてみたけどWin32の戻り値BOOLをC#側でboolでDllImportしちゃうだけで大量のゴミコード生成される事になってたんだな
CのBOOLの実体はintでC#やC++のboolの実体はbyteだけど単に切り捨てられるだけかと思ってた
逆に引数と戻り値を完全に型サイズ合わせればLibraryImportだろうがDllImportだろうがインライン展開されて直接Win32呼ばれるってことか
2022/11/16(水) 17:25:44.01ID:L7AEwAjo0
>>597
訂正
型サイズ合わせるじゃなくてBlittable型オンリーなら直接呼ばれるだった
型が合ってるかどうかはコンパイラ側からしたら知った事ではない話だった
2022/11/18(金) 22:33:38.46ID:eJgoDgWR0
>>570
今更だけどSystem.Timers.TimerどころかSystem.Windows.Forms.Timer使ってコントロールの表示変えながらMessageBox.Showしても表示の変更止まらんな
Marquee動く時点でもしかしてと思って試したらそんな結果。DoEventもいらない
むしろ止まってしまうグルグルをどうやって動かしているのか不思議
2022/11/18(金) 23:42:26.02ID:nTmfkfcZM
うーん
2022/11/19(土) 07:24:15.03ID:W2gsPZLCM
Windows 11の標準アーカイバーも不便だし他に良いのもないから自分で作ろうと思って久々にプライベートで開発すっかなと思ったわけですよ
そんでMSのDoc読みながらふむふむPackage.appxmanifestにwindows.fileTypeAssociationなんかで記述すればWin11のNew Context Menuにコマンド追加できるわけね
おー確かにサンプルのApp1で開くが追加されたし.zipで右クリックしたら出た、じゃああとは汎用フォルダ・ファイルの右クリックではどうやるのかな?
はい、汎用フォルダ・ファイルへのコマンド追加はExplorerのShell拡張が必要です、そしてまーた.NETあるあるのVC++でCOM作ってくださいですよ
十何年前とまったく同じことを.NET 7になっても繰り返してんだねこれじゃMS StoreもデスクトップアプリもオワコンになってWindowsでアプリなんて増えるわけないよね
そりゃWSAとAmazon App StoreでAndroidアプリエミュレートするしかなくなるわな
なんでこんなデスクトップアプリを開発する場合に誰もがやりたがることがこんなに難解で面倒なんだよ.NETでAPI用意しろよアホすぎるわMS
2022/11/19(土) 07:34:18.33ID:Mciuu6qvM
それはあなたの感想ですよね
2022/11/19(土) 10:44:26.12ID:Cy1G0XeKM
フォルダを対象にしたアプリってアホみたいに作れる
フォルダ指定してこれを○○で開くが無限に作れる
安易に出来たらアプリ100個入れたら100個縦に○○で開くが並ぶ
これ以上増えてもらっても困る


と言う感想
2022/11/19(土) 11:16:05.26ID:eQTLGh6L0
>>601みたいな奴が簡単にそういうOSに関連したコードを書けるほうが何が起こるか分からないし
OSの互換性が重要だし、その辺理解出来なくて発狂しているだけなら相当頭が悪い
で、シェルエクステンションの実装が出来ない低レベルは諦めたらいいだけw
2022/11/19(土) 11:19:32.03ID:Cy1G0XeKM
そんな酷い言い方はないと思うが…

なんだったらwin11は右クリックをカスタマイズできるツールは沢山あるからそれを使えばいいかとも思う
どうしても作りたいならOSSのツールもあるからそこからコピペするのもありかも
2022/11/19(土) 11:32:29.78ID:muFnCKvaa
>>601
C#でCOM作れるのにどうしてそういう感想になるんだw
2022/11/20(日) 01:27:17.90ID:7pjHG/e/0
クライアントでのマスターデータの管理って皆さんどうやってますか?

・使用するたびにサーバーに取りに行く
・初めて使用したときにサーバーに取りに行きクライアントのメモリに保持しておく
・クライアント起動時に全部のマスターをサーバーに取りに行きクライアントのメモリに保持しておく
2022/11/20(日) 01:29:23.84ID:f6/NLLueM
サイズとか更新頻度と相談
正解はないが鯖でやった方がメンテしやすくていいんじゃないか
2022/11/20(日) 09:35:44.93ID:AGRlHlXF0
>>607
レイヤーを下げて特定のAPIをクライアント側でキャッシュ
2022/11/20(日) 09:39:38.89ID:lRymRVs40
割と頻繁に更新され、即時性が要求されるなら都度読みにいくしかないし
通信環境が良くなくて通信回数減らすためになるべくキャッシュしたりする事もある
結局要件次第としか
2022/11/20(日) 11:29:27.36ID:7pjHG/e/0
まあ要件次第なのはそうなので、要件を絞って

サイズが大きい
更新頻度が少ない
使用頻度が少ない

この場合はキャッシュするとして、その場合のキャッシュ方法って何がおすすめですかね?
マスターを使うときの実装としてはこんな感じを考えてる

更新されたかの確認
更新された場合、クライアントにダウンロードし、ついでにファイルに保存。
更新されてない場合、クライアントにファイルがあればそれをメモリに展開。
ファイルがなければ、更新された時と同様
2022/11/20(日) 12:04:09.80ID:fuSoz9vj0
>>611
なぜキャッシュしたいの?
マスター更新後に古くなったキャッシュが利用されても問題ない?

想定してる通信環境は?
サイズが大きいとは具体的に何MB程度?
想定してる用途はモバイルゲーム?業務アプリ?
2022/11/20(日) 12:04:54.58ID:lRymRVs40
サイズが大きいってのもざっくりすぎてなぁ
富豪的にメモリ使えるなら全部メモリぶち込んでもいいし
一旦ローカルに置きたいなら、SQLiteでも使えば
2022/11/20(日) 12:27:19.46ID:7pjHG/e/0
>>612
サイズは10MBくらい
業務アプリ想定
古いマスターが使われないように使う前に更新されたか確認するつもり
なんでキャッシュしたいかは使うたびに毎回通信してたら時間の無駄かなと
2022/11/20(日) 12:42:58.25ID:lRymRVs40
頻繁に更新チェックするくらいなら、都度取っても大差ない
2022/11/20(日) 12:52:11.40ID:AxU0uBeT0
何を聞きたいのかさっぱりわからん
マスター ⇒ クライアントのファイル ⇒ メモリー の2階層キャッシュなら

マスターの更新日時を取得
if(キャッシュファイル無し && キャッシュファイル更新日時 < マスターの更新日時){
マスターダウンロードしてキャッシュファイル更新(キャッシュファイルの更新日時を更新)
}
if(展開済みメモリー無し && メモリー更新日時 < キャッシュファイルの更新日時){
キャッシュファイルをメモリーに展開
メモリーの更新日時を更新
}

ってやるだけだろ
2022/11/20(日) 13:04:27.34ID:lRymRVs40
つーか、>>611 まで考えてるなら実際に試してパフォーマンス計測してみりゃいいじゃない
それで想定通りのパフォーマンスになってるならそれでいいし
結局要件満たせてりゃいいのよ
2022/11/20(日) 13:13:14.12ID:P+FEWrnJM
>>611
それだとオンラインで普通に処理して結果だけ貰うのが正解
ローカルに置くのは速度が最優先される場合
で速度が求められるのは使用頻度が高い機能
仕様頻度が低い機能にそんな変なことせんでいい
2022/11/20(日) 13:23:28.05ID:ehdgoKhb0
>>618
せやな
2022/11/20(日) 13:38:37.27ID:Um2LrDwiM
そもそもローカルに置かなくていいように設計すべき
都度SQL投げるかサーバーサイドにAPI実装すりゃいいだろ
2022/11/20(日) 13:55:02.81ID:fuSoz9vj0
>>614
マスターの全データじゃなく都度必要なデータだけサーバーから返すようにすれば通信時間とかは誤差の範囲だと思うよ
特に古いマスターのデータを絶対に使っちゃだめなユースケースの業務アプリならクライアント側にキャッシュするメリットはほぼない

どうしてもキャッシュするならサーバーから取得した部分的なデータだけキャッシュして基本はローカルチェックのみ
クライアント側でマスターデータを使って何かデータを作成/更新するときはマスターのバージョンを条件に入れておいて古い場合はエラーではじく(これは状況によってはキャッシュしてなくても必要な処理)
2022/11/20(日) 14:17:52.00ID:BrRFAkQBM
まあPOSみたいに一時的な通信途絶が避けられないがマスターデータを使用する処理は続けなきゃいけない状況でローカルに持ちたいことはあるだろうな
そもそもそんなものを初心者に設計させるなという話だが
2022/11/20(日) 14:36:26.56ID:AxU0uBeT0
要件もよくわからんのにオレオレ設計語り出す奴がワラワラ湧いてきてて草
2022/11/20(日) 14:59:32.42ID:lRymRVs40
キャッシュが必要なケースなんて限定されてるから、
本当にキャッシュしなきゃいけないのかよく考えた方がいい
多少通信回数が増えようが、LANなら普通は問題にならん
2022/11/20(日) 16:46:06.08ID:7pjHG/e/0
>>616
実装方法としてはそんな感じ

>>617
他の人がどんな感じで実装してるか気になったんだよね
会社の中で開発する人が少ないと周りの意見とか全然入ってこなくて…

>>618
ローカルに保持するデータの使い道は主にコンボボックスの候補とかオートコンプリート用

>>621
そのマスターが10個とかあったら数秒待たされたときがあって気になったんだよね
2022/11/20(日) 16:55:45.58ID:8obJ8Imf0
>>625
候補として出すだけなら画面表示するときに必要なものだけ取ればいいだろ
それで10MBはさすがになんか間違ってるように感じる
2022/11/20(日) 17:40:21.93ID:P+FEWrnJM
コンボ、オートコンプリートは最大件数を決めて切り捨て
そんでサーバー側で処理
ガチで全件検索したいなら別途、検索画面を作成

何がなんでもローカルに置きたいならイベントソースにして差分管理
2022/11/20(日) 18:53:00.44ID:e51QlejL0
>>625
やりたいこと、方針は間違ってない。
間違ってるのはここで質問してること。質問者の一切を否定しようとする奴ばかりだからね。
2022/11/20(日) 18:58:42.94ID:lRymRVs40
>>628
提案は出てるやん、あとどうするかは仕様と本人次第
2022/11/20(日) 21:36:57.93ID:79zBHkdo0
VBA+Seleniumで自動ログイン機能を実装しています。
ログインすると
「パスワードを保存しますか?」というダイアログが表示されてしまって困っています。
ネットで調べて以下の様なコードを記述していますが、出ます。

Dim Driver As New Selenium.WebDriver
Driver.AddArgument "credentials_enable_service=False"
Driver.AddArgument "profile.password_manager_enabled=False"



記述が間違っているのでしょうか?
2022/11/20(日) 21:44:23.00ID:ehdgoKhb0
スレチ
2022/11/20(日) 21:45:12.07ID:8obJ8Imf0
間違っているのはプログラミング言語です
2022/11/22(火) 13:10:05.30ID:HM6aNMRH0
RegexGenerator作ったんならQuerySelectorGeneratorも作ろうよ、MSさん
2022/11/24(木) 11:03:24.57ID:HgKbNXE30
デバッグで大事なのは最小構成でやることでしょうか?
余分な部分を排除して、小さなプログラムを作ってみることすか
2022/11/24(木) 11:20:19.87ID:Au08Yyq20
>>634
目的による、としか言いようがない気がするが
それだけだとアレなんで、多分メソッド単位でのテストとかを想定してそうなので
そういった単体テスト(ユニットテスト)はxUnitやMSTestなんかを利用して行うのが吉
2022/11/24(木) 11:40:33.70ID:P67WlZAQM
>>634
大事なのはバグを確実に再現する手順を見つけること
2022/11/24(木) 11:41:54.97ID:P67WlZAQM
んで
確実に再現するには余計な状態が少ないほど簡単だね
2022/11/24(木) 12:08:52.06ID:HgKbNXE30
>>635
636

ありがとうございます
構成を小さくするのはユニットテストというんですね
2022/11/24(木) 12:13:42.94ID:HgKbNXE30
別のプロジェクトを作って単体テストしてましたが、xunitというのを調べてみます
640デフォルトの名無しさん (ワッチョイ 62b1-jFJt)
垢版 |
2022/11/24(木) 17:02:44.47ID:F4Bj4Vii0
C#を独学中の50過ぎのIT業界未経験のオッサンなんだが、

Pyhton3で、

f"{0b1000 >> 1:b}"

に相当するのって、もしかしてC#には無い?

$"{0b1000 >> 1:b}"

だとエラーになる。;xや:Xならいいみたいだけど。
2022/11/24(木) 17:10:10.48ID:/drRm28l0
数値書式指定文字列に2進数のはないねえ あっていいと思うんだけどね
Convert.ToString()で基数指定して2進数化と、あと必要に応じてPadLeft()でゼロ埋め
642デフォルトの名無しさん (ワッチョイ 62b1-jFJt)
垢版 |
2022/11/24(木) 17:20:53.46ID:F4Bj4Vii0
>>641
Convert.ToString(num, 2) で出来ました。有難う御座います。
でも、C#って未だ何か中途半端ですね。折角 0b 表記が有るのに :b で書式指定出来ないなんて。
2022/11/24(木) 17:28:46.81ID:/drRm28l0
実は0bが書けるようになったのも割と最近だったりする
2022/11/24(木) 17:49:00.43ID:HgKbNXE30
単体テストッテ別プロジェクトつくってやればいいだけじゃないんですか?
なんかしらのツールがいるんですかね
2022/11/24(木) 18:08:09.96ID:ggwtZAtna
同じプロジェクトでもいいですけどね
2022/11/24(木) 18:45:59.37ID:EbMeVnega
2進数を表示しようなんて思ったことないな
16進数で書いたほうが読みやすいだろ
647デフォルトの名無しさん (スップ Sd22-P3Qh)
垢版 |
2022/11/24(木) 19:22:57.45ID:EZ6nEehrd
>50過ぎのIT業界未経験のオッサン

これで察しろ
2022/11/24(木) 19:33:42.52ID:JYVIn9dZa
ああ課題か
そういうのは自分で2進数に直して進数の理解を深める練習だから楽したら意味ないぞ
そうでなくても残り時間が短いんだから最大限の効果が上がるようにしなきゃ
649デフォルトの名無しさん (ワッチョイ 62b1-jFJt)
垢版 |
2022/11/24(木) 20:47:07.44ID:F4Bj4Vii0
>>647-648
別に課題でやってる訳ではないけど、Python3と同じ様に対応しているかと思ったらそうではなかったから気になったというだけ。
一応、自分で書いてみたよ。
もっとスマートな、君達プロが書いたコード例も見てみたいです。


static string IToB(int a) // Convert given integer value to bit pattern string and retern it
{
string lsb = ""; // for caching current LSB in string type
string b = ""; // for caching bit pattern in progress in string type
while (a != 0) {
lsb = (a & 01).ToString();
b = lsb + b;
a >>= 1;
}
return b; // Return converted result
}
2022/11/24(木) 20:55:41.52ID:fAvS7doIa
違う言語でも同じことができると思ってるやつ一定数いるよな
2022/11/24(木) 21:43:39.40ID:i+bWLU0n0
>>644
目的が達成できるのなら、どんなやり方しようが別にかまわないだろうが、xUnit等のテストフレームワークを
使った方がいろいろ便利で捗ると思うよ
2022/11/24(木) 23:25:55.64ID:qQzvjeJeM
>>649
それ普通に-1与えたら無限ループしない?
2022/11/24(木) 23:48:05.21ID:qQzvjeJeM
長いことプログラムやるともうプログラム脳になる

引数にint 使ってあればマイナスや0のことを考慮してるのかどうか気になる
ビット演算 >> 見ればちゃんとマイナスを考慮してあるのか気になる
割り算があれば0除算しないか気になる

これが基本
654649 (ワッチョイ 62b1-jFJt)
垢版 |
2022/11/25(金) 01:16:40.25ID:GQeKBwEb0
>>652
本当だ。符号付きは、符号無しにタイプキャスティングしないと駄目みたいですね。
訂正バージョン


static string IToB(uint a) // Convert given unsigned integer value to bit pattern string and retern it
{
string lsb = ""; // for storing current LSB in string type
string b = ""; // for storing bit pattern in progress in string type
while (a != 0) {
lsb = (a & 01).ToString();
b = lsb + b;
a >>= 1;
}
return b; // Return converted result
}
655デフォルトの名無しさん (ワッチョイ ef8e-P3Qh)
垢版 |
2022/11/25(金) 01:26:19.97ID:8Qv7d+j40
コメント見ただけで素人だとわかる
656649 (ワッチョイ 62b1-jFJt)
垢版 |
2022/11/25(金) 02:11:15.03ID:GQeKBwEb0
>>655
じゃあ、君ならどう書くの?
お手本を見せてください。
657デフォルトの名無しさん (ワッチョイ 62ad-eHBA)
垢版 |
2022/11/25(金) 07:15:13.23ID:IZhBm03q0
玄人のコメント見たいな
2022/11/25(金) 07:48:58.45ID:HZEumDr50
そもそも 0 与えたら空文字列返されても困るし
659649 (ワッチョイ 62b1-jFJt)
垢版 |
2022/11/25(金) 08:39:48.60ID:GQeKBwEb0
>>658
本当だ。御指摘有難う御座います。

if (a == 0)
return "0";
else {



return b;
}

にしないと駄目ですね。
660デフォルトの名無しさん (スプッッ Sd02-sOVt)
垢版 |
2022/11/25(金) 08:44:52.37ID:fVhe3/QRd
変数名を変えるだけでもだいぶ読みやすくなるし、コメントがそもそも要らなくなる箇所だってある

// "{b}" 相当の2進数表記に変換する
static string FormatBinary(uint a)
{
string ret = "";
while (a != 0) {
string adder = (a & 01).ToString();
ret = adder + ret;
a >>= 1;
}
return ret;
}
661デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 18:05:18.46ID:PxjWwIqd0
>>656
長い行コメントなのとやたら短い変数名は、学生までだからな。
662デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 18:07:50.86ID:PxjWwIqd0
>>659
例外処理を知らない人のアドバイスなんて無視していいよ。
663デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 18:10:25.03ID:PxjWwIqd0
ゼロという文字列が返されるなら、最低限、仕様のコメントくらい書いておいてほしい。

ただ、間違って呼び出し側がゼロを渡した場合にゼロが戻るというのも曲者だけどな。
664デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 18:12:50.87ID:PxjWwIqd0
>>649
IToBが何の略なのかまったくわからない
665デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 18:25:17.54ID:PxjWwIqd0
>>654
コメントは上に書いた方がいいよ
しかも英語で書いている理由はなんなの?
666デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 18:26:24.48ID:PxjWwIqd0
「to」がもしかして英語の「to」じゃないというとんでも命名なのか?
2022/11/26(土) 18:50:28.82ID:kAGdhFVE0
itoaも知らんのか
2022/11/26(土) 18:53:36.29ID:8KuukqTtd
C#でI+大文字で始まるメソッド名は嫌だな
インターフェイスと紛らわしい
669649 (ワッチョイ 9fb1-2SHd)
垢版 |
2022/11/26(土) 19:07:49.92ID:bgvkuxQR0
>>665
今度から、上に書く様に癖付ける。
「40過ぎたら年齢差別の無い外資系以外は諦めろ!」 と言われたから、英語の勉強も兼ねて、出来るだけ英語を使うようにしている。
>>660 の 「// "{b}" 相当の2進数表記に変換する」
を英語で書くとしたら、

// Convert to binary expression format equivalent to f"{:b}" in Python3

とでもなるのかな。


>>664
>>667 の指摘の通り、itoa、atoiを真似た。C言語から入ったからね。
2022/11/26(土) 19:08:19.73ID:39+gXbIT0
メソッドは常にレシーバを記述することが推奨されているからそれに従えば混同することはないでしょ
671デフォルトの名無しさん (ワッチョイ d78e-8UFK)
垢版 |
2022/11/26(土) 19:17:06.58ID:3/lM1ho60
>>669
これから英語やプログラムを学ぶ50過ぎの爺をどこの外資が雇うんだ?その発想からしてもう終わってるだろ
2022/11/26(土) 19:20:13.23ID:3yMZT+wQ0
普通にConvert.ToStringを使えばいい
自作しなくちゃいけないならこう

public static string ToBinaryString(this uint source)
{
var length = sizeof(uint) * 8;
var result = new char[length].AsSpan();
for (int i = 1; i <= length; i++, source >>= 1)
{
result[^i] = (char)('0' + (source & 1));
}
return new string(result);
}
673デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 19:20:35.37ID:PxjWwIqd0
>>669
他の言語の文化を持ち込むのはすげー嫌われるよ。
674デフォルトの名無しさん (ワッチョイ 9f7c-zuBb)
垢版 |
2022/11/26(土) 20:12:21.31ID:a42sf4+p0
class A{
public int X {get;set;}
public void Modify() {if (X < 0) {X = 0;} return;}
public bool Check() {return (X > 10);}
}

class B{
var c = new A();
c.X = ・・・;
if(c.Modify().Check()){・・・}
}

このようにインスタンスメソッドを数珠つなぎみたいにしたいのですが、voidに「.」は使えないエラーが出ます。どのように直したらよいでしょうか。
c.Modify();
if(c.Check()){・・・}
というように分けて記述すればエラーは出ませんが、数珠つなぎにしたいです。
よろしくお願いします。
2022/11/26(土) 20:34:56.69ID:1ldKsJnPM
二進表記のstringに変換してるので不正確なんじゃない?
2022/11/26(土) 20:36:09.23ID:VMbAKT9za
return this;
2022/11/26(土) 20:37:15.05ID:1ldKsJnPM
>>674
3つ以上数珠繋ぎは基本的によくない
意味のある数珠繋ぎじゃないならそこで終わり
2022/11/26(土) 20:40:33.70ID:1ldKsJnPM
仮だとしても非常にクソコードだなw
679デフォルトの名無しさん (ワッチョイ 9f7c-zuBb)
垢版 |
2022/11/26(土) 20:41:36.40ID:a42sf4+p0
>>676
public A Modify() {if (X < 0) {X = 0;} return this;}
でできました。ありがとうございます。

>>677
ありがとうございます。数珠つなぎが良くないのが分かりました。
2022/11/26(土) 20:42:27.38ID:ztvOMJ01M
まあ、一度は通る道だ
2022/11/26(土) 20:43:37.07ID:1ldKsJnPM
絶対笑わせに来てるだろw
2022/11/26(土) 20:52:52.66ID:3yMZT+wQ0
>>675
もしかして二進数に変換すると数値になると思ってる?w
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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