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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9f0b-Fgt1)
垢版 |
2019/12/11(水) 22:12:11.28ID:d09CciDz0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part145
https://mevius.5ch.net/test/read.cgi/tech/1570446977/
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/
■コードを貼る場合は↓を使いましょう。
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/
・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
2020/01/31(金) 20:12:38.30ID:J9WtEN9Ir
今日も仕事で新型コロナウイルスなんて騒ぎすぎだという老人の独演会を30分聞かされた
対策も必要ない死ぬ人は死ぬでいいじゃないかと言う話

老害しなないかな
677デフォルトの名無しさん (ワッチョイ 3d2d-XhTL)
垢版 |
2020/01/31(金) 20:19:21.81ID:xcV7YFLC0
キューが溜まる派は、button1.Enabled = false;なし、かつ、非同期処理なしにすれば簡単に再現コードができるんだろう
でも現実には再現しないから困ってんだろうな
678デフォルトの名無しさん (ワッチョイ 3d2d-XhTL)
垢版 |
2020/01/31(金) 20:19:22.13ID:xcV7YFLC0
キューが溜まる派は、button1.Enabled = false;なし、かつ、非同期処理なしにすれば簡単に再現コードができるんだろう
でも現実には再現しないから困ってんだろうな
679デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/01/31(金) 20:31:30.36ID:59NEldNla
ちなみに念のためこんなのもやってみたが

//button1をクリックした後button2を連打せよ
private void button1_Click(object sender, EventArgs e)
{
  Thread.Sleep(5000);
}

private void button2_Click(object sender, EventArgs e)
{
  MessageBox.Show("Button Clicked !");
}

Win32に詳しくないので理由を与えることが出来ないけど、
この場合もメッセージボックスは1度しか表示されない
680デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/01/31(金) 20:46:38.12ID:59NEldNla
>>676
完全スレ違いだけどそれはその老害の言ってることの方がただしいw

専門家はたいしたリスクないから騒ぎすぎだと言ってるのに
どっかの怪しいネットde真実クンの被害妄想を真に受ける奴がどうかしてるよ

こういうの認知バイアスって言うんだけどさ
2020/01/31(金) 21:00:47.10ID:J9WtEN9Ir
一流の専門家wとWHOと各国の対応見る限り
誰かの方が認知バイアスかかってると思う

世の中でこういわれてるけど逆の方に○○と言うのを言って俺スゲーしたいのが老害
682デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/01/31(金) 21:06:43.84ID:59NEldNla
>>679
いや待て、ひょっとしてMessageBoxがフォーカスを奪うのが関係しているのかと思って
Console.WriteLine("Button Clicked !");

に変えてみたらなんと複数回表示されるなww
何てこったw

この現象は以下のコードで回避できた
private void button2_Click(object sender, EventArgs e)
{
  if (button2.Enabled)
  {
    button2.Enabled = false;
    Console.WriteLine("Button Clicked !");
  }
  Application.DoEvents();      
  button2.Enabled = true;
}
2020/01/31(金) 21:08:40.75ID:EEAl6aZb0
>>675, >>677
だからテストするなら負荷かけろって話な
>>667の話を理解できてたらわかると思うんだが、>>671みたいな絶望的なアホもいるからなぁw
684デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/01/31(金) 21:09:59.26ID:59NEldNla
>>681
WHOは声明で過剰反応するなと言ってる。
多くの伝染疾患の専門家の意見も同じ

各国政府の対応はよく言えば安全牌、悪く言えば役人や政治家の保身だね
テールリスクとしてはヤバいことになる可能性は確かにゼロではない。
その場合に誰も批判されたくないしね。
費用負担するのは納税者であって役人でも政治家でもないし
2020/01/31(金) 21:15:06.28ID:0h4Mv/T00
でも新型ウイルスで色々と未知だから警戒するに越したことはないと思う
2020/01/31(金) 21:23:40.30ID:r/XM8LG10
メッセージボックスはボタンかキーボードが押されるまで待つ。
ダイアログの一種。
2020/01/31(金) 21:59:54.58ID:XKSM3aqP0
>>670
Postする
2020/01/31(金) 22:34:59.12ID:y3M2GGQ20
>>670
1. Application.DoEvents()
2. PeekMessage()
3. await Task.Delay()

Task.Delay()使ってthrottle/debounceする高階関数を作っておくと毎回書かずにすむ
2020/01/31(金) 23:16:44.01ID:1nDsQqma0
引数でリスト渡すけど要素を変更して欲しくない時って結局どうすりゃいいの?
Immutableは使えない環境の場合

ReadOnlyCollectionは引数の型としては想定してないみたいだけど、キャスト防ごうと思ったらこれしかないよね?
2020/01/31(金) 23:27:33.43ID:mtUYlnXN0
>>682
今時Application.DoEvents()を手動で呼ぶとか…
それはともかく、Application.DoEvents()を呼ぶタイミング遅くない?
2020/01/31(金) 23:43:34.80ID:BFU5CNzNM
>>689
Deep Copy
2020/02/01(土) 00:38:43.88ID:1j1iFXRs0
拡張メソッドにしろクラスをシリアライズするの面倒じゃん
2020/02/01(土) 01:36:17.36ID:XuRc8/EP0
質問お願いいたします。

カスタム日時書式指定文字列を使って、
例えば DateTime.Now.ToString("M月") と書けば、
今なら "2月" という文字列が受け取れます。

しかし、DateTime.Now.ToString("M") と書いても
"2" という文字列ではなく "2月1日" という文字列が返ってきてしまいます。

これは "M" という文字列が(カスタムでなく)標準の日時書式指定文字列と
解釈されてしまっているからのようなのですが、
DateTime.Now.ToString(...) のような書き方で
"2" という文字列を受け取ることは可能でしょうか。

もちろん DateTime.Now.Month.ToString() と書けば
"2" を得ることはできますが、IFormattable インターフェース経由で
文字列を取得したいという事情があり、
Month プロパティを使う方法は避けたいと考えております。

もし何かおわかりのことがあればご教授いただけると幸いです。
どうぞよろしくお願いいたします。
2020/02/01(土) 01:40:32.15ID:BvtANEfa0
あとから月消すのは無し?
2020/02/01(土) 01:54:56.01ID:EnxAFhi/0
>>693
%M

https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings#UsingSingleSpecifiers
2020/02/01(土) 01:55:14.57ID:HxAAP4sW0
control.Enabled=true/falseって即時処理されるのか?
WM_ENABLEメッセージをキューにPostするだけなのでは。
2020/02/01(土) 02:05:13.79ID:XuRc8/EP0
>>695
おお!まさに探していたものです。
'escape' 等をキーワードにして検索を試していたのですが
少し的が外れていたようです。
本当に感謝です。どうもありがとうございます。

>>694
ご提案どうもありがとうございます。
ただ今回は IFormattable.ToString の引数だけを使って
文字列を取得したかったので、
% を使う方法を使わせていただこうと思います。
2020/02/01(土) 02:14:03.96ID:BvtANEfa0
>>697
正規の方法がすぐ解って良かったね
2020/02/01(土) 05:24:11.96ID:156Woc/f0
>>696
否定はできんけど、そんなことになってたらおそロシア
700デフォルトの名無しさん (ワッチョイ a5b0-x1ET)
垢版 |
2020/02/01(土) 08:01:32.31ID:22BQCiJ60
しょーもない質問なんですが
起動時、必要なファイル(iniとか)を探して、無ければ起動しないというプロセスは
Form1_Load()にifでApplication.Exit()書いて強制終了にしてしまえば良いのでしょうか?
Form1_Load()の途中で強制終了はwindows的に無問題でしょうか?
2020/02/01(土) 08:02:52.31ID:iBA7Xa3w0
>>696
そうだよ

>>699
即時処理される方がおそロシヤだよw
ボタンを薄くする処理とかも走るんだが誰がそれをやると思ってるんだよ
2020/02/01(土) 08:15:21.41ID:a0E2Gls+0
>>700
program.cs オススメ
2020/02/01(土) 08:17:35.37ID:dIJ1vCV90
>>696
Reference Source見りゃわかるけど普通にControl.Enableのセッターで::EnableWindow呼んでるわよ
てかWM_ENABLEはただの状態変化後の通知だし
704デフォルトの名無しさん (ワッチョイ a5b0-x1ET)
垢版 |
2020/02/01(土) 10:09:48.17ID:22BQCiJ60
>>702
すんません。よく分かってないのですが、
Main()の中の3行をifでスルーさせれば良いってことですか?
それともRunの手前でExit()ってことですか?
2020/02/01(土) 10:22:15.63ID:a0E2Gls+0
>>704
正常ならform作ってrun、異常ならformを作らない。

テンプレのApplication3行は、最初の2行がGUIの設定、最後がformの作成&実行。

判定条件がファイルの有無なら、GUIの設定待つ理由無いでしょ
2020/02/01(土) 11:05:21.70ID:iBA7Xa3w0
>>703
> Reference Source見りゃわかるけど普通にControl.Enableのセッターで::EnableWindow呼んでるわよ
そりゃそうだろ、だから何?

> てかWM_ENABLEはただの状態変化後の通知だし
違うぞ、ちゃんと読め
https://docs.microsoft.com/ja-jp/windows/win32/winmsg/wm-enable
そもそも変化後の通知ならWM_ENABLEDになってるよ
2020/02/01(土) 11:31:14.25ID:EnxAFhi/0
>control.Enabled=true/falseって即時処理されるのか?

何をもって「即時処理される」と言うのかに違いがあるから話が噛み合わない
2020/02/01(土) 11:42:50.99ID:ik9eUhGlM
>>704
Mainでファイルなかったらreturnしてオシマイでいいよ
Exitは普通は使わない
2020/02/01(土) 11:44:34.08ID:yH+BLTFV0
Exit! y=ー( ゚д゚)・∵. ターン
2020/02/01(土) 11:47:30.77ID:3zclQUgm0
sendmessageでもすりゃすぐわかる話じゃないのこれ
711デフォルトの名無しさん (ラクッペ MM6d-3Mgd)
垢版 |
2020/02/01(土) 12:04:42.89ID:2IjxM/PsM
C#しか書けない奴はこれだから使えない
712デフォルトの名無しさん (ワッチョイ 66b0-x1ET)
垢版 |
2020/02/01(土) 13:11:09.93ID:neZT0y0y0
まあここは初心者スレなんだし勘弁してくれや
使えない部下との仕事のウサばらしは他でやってくれ
こっちは趣味で自分の使うアプリしか作ったことないから
「もしファイルが無かったら」なんて仮想の対策なんてしたこと無かったしww
それにC#というより「コンピュータのプログラムが動く仕組みは」に近い分野だったね

>>705
>>708
色々実験して、なんとなくできた。
Runが実行されなかったらExitは必要無いんだな。
ありがと。
2020/02/01(土) 13:37:26.34ID:F+jbRz18M
>>712
RunしたあともExitは使わない
Closeを使って行儀よく終わらせる
2020/02/01(土) 13:40:52.92ID:1j1iFXRs0
フォームアプリケーションなどしんでしまえ
2020/02/01(土) 13:49:16.30ID:OqODUHFj0
>>706
「EnableWindowが戻る前だがWS_DISABLEDが立った後」だから状態変化後の通知でしょ
MSの動詞の使い方なんぞに一貫性は期待しちゃ駄目よ

もともとが定義の雑な質問なんだから現段階でこっちにイチャモン付けても実りはないと思うで
2020/02/01(土) 14:03:46.68ID:U7UUZgrK0
EnableWindowもメッセージ飛ばすだけだから何らかの方法でメッセージ処理させないとUI更新されない
2020/02/01(土) 15:00:01.57ID:OqODUHFj0
Winformsのコントロール実装だと大体Enabledの中で状態変数を変化させて
ついでにEnableWindowを呼んでネイティブ層での入力を無効化し
ついでにInvalidateを呼んでペイントハンドラをポストして
のちに出キューされたペイントハンドラがコントロールの状態を見ながら描画って流れやね
2020/02/01(土) 15:32:06.42ID:a0E2Gls+0
>>712
時間のかかる大規模な初期化をするなら、
フォーム作ってスプラッシュを立ち上げて
その中でってのはあるけど、
小規模ならフォーム作る前にしちゃうと簡単

good luck!
2020/02/01(土) 15:35:16.92ID:yH+BLTFV0
やっぱりDoEvents最強だな
2020/02/01(土) 17:53:45.50ID:156Woc/f0
>>717
ありがとう、エロい人 m(_ _)m
2020/02/01(土) 20:05:49.65ID:75XTVAQS0
先輩方、設計に関して質問があります
GameManagerというシングルトンにリソースやシステムの参照を固めて、
各々のクラスから静的経由でアクセスする神スタイルって何かデメリットありますか?

最初はResourceManagerみたいに細分化していたんですが、規模が大きくなるにつれてあれはどのクラスが持ってたっけ?と頭がとっ散らかって来たので、
ならいっそpartialでファイル分けた神クラスを用意した方が分かりやすさはあると思ったんです
俺、何か間違えてますかね?
2020/02/01(土) 20:12:40.38ID:hqbU2d/k0
神クラスでググればいっぱい出てくるだろ
つか神クラスって単語知ってるならもう何度も見てると思うけど
自分に都合の悪いところは見ないタイプかな?
2020/02/01(土) 20:21:47.40ID:BvtANEfa0
参照を直接持つ神クラスは巨大なクラスになって破綻しそう
partialはファイルで分けるだけの問題だし

画像リソースやサウンドクラスの参照を返す、サービスロケータパターンなら有り得る

XNAだとgameクラスがこれに相当
unityのGetComponentでは、コンポーネントパターンとの組み合わせで使われてたりはする

サービスロケータにも宗教的な賛否はあるが実用的ではある
2020/02/01(土) 20:33:59.73ID:75XTVAQS0
>>722
いや、単体で完結するクラスはしっかり最小構成で切り分けてるっすよ
ただ互いが互いを参照し合うクモの巣みたいなクラス群は、
参照先を一本にまとめる方が理に適っているのではないかと思って、
デザパタでいうFacadeやMadiatorを突き詰めて行ったら、
全てがGameManagerに集約されて神クラスっぽくなったのでこれはどうなんだと思った次第で
2020/02/01(土) 20:41:23.47ID:JWECbGc70
>>721
どのクラスが持ってるか分からなくなるのはクラス分けが下手だったからだろう。
すべて神クラスに押し込んだら、こんどは逆にあるメンバが元々何のために用意したものか分からなくなったり、別のメンバと取り違えたりして、破綻するだけだと思うぞ。
2020/02/01(土) 20:42:04.40ID:XYPXtNPRM
互いに参照し合うってのがそもそもあまり良くないけどそれは別の問題としておいておくとする
参照しあうとしても必要な相互参照だけ持ってればいい
相互参照してるから神クラスにするって発想は全く繋がらない
無関係な参照を持ってたらコード読んだ人が混乱するだろ
727デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/02/01(土) 21:01:38.43ID:agRHfxgWa
>>724
プログラムと同じ寿命で複数個所からアクセスする必要があるインスタンスを
グローバル変数として提供する静的クラスは是か非か、という意味なら
個人的には支持しますね。
728デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/02/01(土) 21:03:13.43ID:agRHfxgWa
いや、グローバル変数という言い方は変かw
「グローバル変数」と書くべきだった
2020/02/01(土) 21:34:07.42ID:Ar+g0K07a
>>724
実際にコードを書く人間を無視して、設計ありきで開発を統制しようとすると必ず破綻するものだ
モジュール化は基本的に開発の作業単位と一致しているのが理想
その作業単位こそがメソッドになったりクラスになったり、
開発チームや部門などもっと大きな粒度ならドメインやマイクロサービスになるわけだ
君が一人で開発していて、一緒に全部触ることが多いんだったらそれらは一箇所にあるのが自然
2020/02/02(日) 00:24:57.00ID:iIujTevhr
処理を神クラスに全部入れるのは感心しない
クラスAとBで○○をするクラスをたくさん作ってそれを神クラスが使うならまだわかる
2020/02/02(日) 00:27:26.42ID:iIujTevhr
自分ではある処理にAとBしか使わないつもりだったのにいつの間にかCを参照してて
状態によって動いたり動かなかったりするのを避けられる
2020/02/02(日) 02:17:31.38ID:a0o6eu/N0
>>730
宙ぶらりんだとxmlに出せねぇから!
2020/02/02(日) 07:46:40.77ID:x40xU8c9M
>>729
めちゃくちゃなこと言って初心者を惑わすの良くないp
2020/02/02(日) 08:08:49.36ID:ukQ22csD0
staticなクラスにロジックを集中させるのが今風
2020/02/02(日) 17:13:46.82ID:IAcIXRCS0
https://ideone.com/L4OaZ0

ユーザーが自分でカスタム書式指定文字列を入力して、
出力名を決められるコードを書きました。
switch文のところが冗長な気がしますが、
もっとよい実装方法はありますでしょうか。
2020/02/02(日) 17:49:10.92ID:PECaEDf90
オブジェクト指向が全然わかりません。助けてください。

オブジェクト指向では、クラスしか使わないのでしょうか。
そもそも関数とクラスの使い分けがわかりません。
関数、クラスどちらでも良いように思えてしまいます。

クラス内で別のクラスや関数を使うことはあるのでしょうか。
その場合、呼ぶクラスの配置は、外にすればよいのか混乱しています。
2020/02/02(日) 17:49:25.52ID:pxkKXZqI0
https://github.com/dotnet/runtime/blob/master/src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeFormat.cs#L447

DoeNetCoreの実装も似たようなものだから好きにすればいいんじゃないの?
2020/02/02(日) 17:57:12.48ID:2oi7q6200
>>736
オブジェクト指向が理解できなくてもC#は書けるからそれだけならスレ違い
>クラス内で別のクラスや関数を使うことはあるのでしょうか
コントロールもクラスだしむしろクラス内で別のクラス使わずに書くことの方が少ない
関数はC#には無い定義だからどんな意味で書いているかわからない
初心者ならそんなこと気にせずにコード書いておけばそのうち身につく
2020/02/02(日) 19:05:51.36ID:iIujTevhr
>>736
c#の関数は全てクラスの中でしか宣言できません
終わり
2020/02/02(日) 19:34:54.43ID:PECaEDf90
>>737-739
関数は、クラスの中でしか宣言出来ないのですね。
ご指摘の通り、初心者なので気にしないようにします。
ありがとうございました。
2020/02/02(日) 20:19:18.10ID:o79zkFFu0
>>735
if(isEscape){
 switch(f){
 case 'c':
  result += Code;
  break;
 case 'n':
  result += Name;
  break;
 case 'y':
  result += DateTime.Now.ToString("yyyy");
  break;
 case 'm':
  result += DateTime.Now.ToString("MM");
  break;
 case 'd':
  result += DateTime.Now.ToString("dd");
  break;
 default:
  result += f;
  break;
 }
 isEscape = false;
} else if(f == '%'){
 isEscape = true;
} else {
 result += f;
}
742デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/02/02(日) 20:24:30.59ID:p5iYeTFJa
>>735
別の意見の人もいるかもしれんけど、
とりあえず置換箇所を抜き出す部分と置換する部分は
分けた方が後でメンテしやすいコードになると思うよ
2020/02/02(日) 21:33:42.70ID:Ng7YaIlp0
>>737
case '%': の時は次の文字読んで再帰呼び出しか
参考になるわ

>>735だと’%’を文字列に入れられないのかな?
744デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/02/02(日) 21:50:42.59ID:p5iYeTFJa
>>735
書いてみた
俺も暇だな
ただし大人の事情でProductはイミュータブルなクラスに変えさせてもらったw
https://ideone.com/Ck6bNl
2020/02/02(日) 22:59:32.43ID:1z8f9n64M
こういうのは結局if羅列が正解なんだよな
switchだと値の単純比較しかできないからifで柔軟に分岐させるほうがいい
あらかじめ書式を増やせるような工夫は大抵の場合YAGNIでコードを複雑に遅くするだけで終わる
746デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/02/02(日) 23:04:32.56ID:p5iYeTFJa
>>745
なんか2行目と3行目が矛盾してると思うんだけどw
2020/02/02(日) 23:04:47.87ID:IAcIXRCS0
>>737
.NetCoreでもswitchべた書きなんですね
参考になります

>>743
ご指摘の通り%が出力できない仕様でした
>>741さんのがよりスマートで%も出力できますね

>>742
>>744さんのコードのような感じでしょうか
高度すぎて自分には発想にも至らなかったです。すごく勉強になります

みなさんありがとうございます
2020/02/02(日) 23:06:51.13ID:IAcIXRCS0
あ、>>742 = >>744さんでしたね
749デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/02/02(日) 23:07:46.54ID:p5iYeTFJa
それはともかく、くどいようだけど、
どんな方法で実装するにしろ置換箇所の検出と置換は
分けた方がいいと思うよ

>>741とか>>735みたいな両者が混然一体となったカオスなコードはあかんw
2020/02/02(日) 23:21:57.19ID:IAcIXRCS0
>>749
趣味プログラマーということもあり、
あまり人から教えてもらえる機会がないのでとてもありがたいです

ただの直感ですが、リファクタリング大好きなあのMDさんだったりして、
と感じましたw
2020/02/02(日) 23:31:26.88ID:1z8f9n64M
>>746
全く矛盾してないけど?
2020/02/02(日) 23:39:18.65ID:wS50t4rMd
>>745
パターンマッチングやwhenって知ってるかい?
2020/02/02(日) 23:39:49.23ID:Lpo4bRzP0
>>746
確かに矛盾してるw
2020/02/02(日) 23:52:30.43ID:1z8f9n64M
>>752
知ってるけどif分のほうが遥かに柔軟よ

>>753
してないよ
ここで言ってる柔軟姓って拡張性って意味じゃないからね
2020/02/02(日) 23:57:18.28ID:Ng7YaIlp0
>>744
うーん、参考にはなるがpremature abstractionに感じる

置換箇所の検出と置換を分けるかどうかより
Productが直接SymbolTranslatorを参照したり
formatルールがコンストラクタに入り込んできてたり
EvaluatorみたいなProductと関係ないメソッドが生えてるほうがずっと気になる

クラスを分けるならまずProductFormatterに委譲する形にしておいて
他のFormatterを書く時にもう一段階抽象化するかどうかを考えたほうがいい気がする
2020/02/03(月) 01:04:19.06ID:ergCU4VA0
>>754
具体的には?
2020/02/03(月) 01:40:48.87ID:uUg+nbORM
>>756
while Nが文字列長より小さい
if N文字目以後に%を含まない then 終了
if N文字目が% then ネストしてプレースホルダ解析してNを更新
else 次の%直前までまとめて読み取ってNを更新

例えばこういうの
2020/02/03(月) 02:26:49.09ID:qfSpWMgCd
C#のソースは改行コードはCR + LFで書くんですか?
2020/02/03(月) 07:35:26.68ID:0n0692Cx0
Environment.NewLine
2020/02/03(月) 08:12:45.52ID:rL8lKTlkr
ビルドはLF・CRLFどっちでも出来るので
後は好みとeditorconfigの設定次第<ソースの改行

自分の場合最近はLFで統一するようにしてる
2020/02/04(火) 19:06:59.64ID:26FK/H9g0
Genericのtype constraintでTを+=演算子が使える型だって宣言することできる?
2020/02/04(火) 19:16:33.46ID:XAK/YcTOr
演算子そのものが無理
2020/02/04(火) 20:43:01.50ID:gbPgeOt9M
>>761
中二病は早く卒業しよう
その計算、本当に他の型で使う?
自分に聞いてみれば答えは明らかだろう
2020/02/04(火) 23:41:46.07ID:26FK/H9g0
>>762
了解、ありがとう

>>763
処理別 × 型別の比較をするマイクロベンチのコードで+=演算子を使ってて
処理か型を追加するたびに処理数 × 型数のコードを追加するのが
面倒くさいからGenericにしたかったんだよ

C#の場合オーバーヘッドがあるから正確な測定には適さないけど
Genericでも傾向は分かるから
2020/02/05(水) 01:32:24.11ID:6fUVVF1Va
理由になってないじゃん
結局現実的なユースケースは無いってことだな
2020/02/05(水) 22:48:02.31ID:YDjicEKX0
ちょっと教えて下さい。

CADで書いた2次元の平面図を読み取りエクセル等のシートにに貼り付ける事は可能ですか?
可能であれは加えて、アルファベットと数字を取得も出来ますか?
2020/02/05(水) 22:51:43.41ID:YDjicEKX0
もしくは、PDFをコピペして、アルファベットと数字を読み取れますか?
2020/02/05(水) 22:52:57.09ID:hUfo/ofY0
書き込むスレ間違えてない?
2020/02/05(水) 23:17:28.76ID:AmvkifrY0
>>766
スレ的にはlibreDWGとかかのう
CADがwmfとかBMP吐いているなら
スレ違い

DXF読むのは結構大変
770デフォルトの名無しさん (ワッチョイ 9f84-tipF)
垢版 |
2020/02/06(木) 11:15:51.94ID:p3rMUukc0
質問よろしくお願いします
親フォームに作ったlistBoxのItemsプロパティを子フォームから取得したいので
公開用のpublicのプロパティを作って、(Form1)this.Ownerで取得する方法でやろうとしてるのですが
Itemsプロパティの型が分からずできません。objectではできませんでした。
同じことをtextBox.Textでやるとstring型で簡単にできました。
2020/02/06(木) 11:26:06.63ID:gSRAmVRD0
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.listbox.items?view=netframework-4.8#System_Windows_Forms_ListBox_Items
調べればいいじゃん?
772デフォルトの名無しさん (ワッチョイ 9f84-tipF)
垢版 |
2020/02/06(木) 11:32:10.09ID:p3rMUukc0
>>771
そこは見たのですが
どこに型が書かれてるのかわかりません
2020/02/06(木) 11:39:03.53ID:Jb1VrEaQM
型うんぬん以前の話だと思うの
親フォームのうえでなら、Items扱えてるの?
774デフォルトの名無しさん (ワッチョイ 9f84-tipF)
垢版 |
2020/02/06(木) 11:42:39.07ID:p3rMUukc0
>>773
はい。親フォーム上なら取得できます。
2020/02/06(木) 11:59:57.37ID:gSRAmVRD0
>>772
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.textbox.text?view=netframework-4.8
TextBox.Textがstring型だって分かってるなら、そっちの記述と比較すればいいじゃん?
776デフォルトの名無しさん (アウアウウー Sa9b-WggA)
垢版 |
2020/02/06(木) 12:25:01.67ID:3avRIqPoa
>>770
一般的にはそもそもForm上のコントロールを外から参照するのは不適切。

それ、「PCのモニターに写っている同じ映像を別のモニターにも表示したいので
PCのモニターからHDMI出力を出せないか?」って言ってるのと同じでは?
発想が間違ってるよ。
なぜ映像のソース側にその機能を求めないでただの表示機に求める?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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