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

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

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

■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part135
http://mevius.5ch.net/test/read.cgi/tech/1517749348/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2018/03/25(日) 12:15:08.82ID:sIW0PrXb
>>546
多分仕様がウンコ
客と詰めきれてない
コードばっかり見てるとバカになるやつの典型
外の空気でも吸ってきたらよい
2018/03/25(日) 12:16:49.43ID:vPJlyNvz
>>546
えっ? w

まあパブリックにしても外部から書き換えられないなら大抵は問題ない
>>537とかはパブリックと言うだけで思考停止してる老害なんだろうな
2018/03/25(日) 12:20:32.55ID:/CvrewET
>>548
えじゃねーよ
考えてなかっただろ
2018/03/25(日) 12:22:41.04ID:yM5ntbb+
>>545
フレームワーク側でstaticをガンガン使ってるけどそれには文句言わないの?
551デフォルトの名無しさん
垢版 |
2018/03/25(日) 12:26:42.83ID:eoB6ZVmc
そうか、>>521で書いちゃったのが実現できるようにすると、いつまでもインスタンスへの到達可能性が残ってGCが機能しなくなるのか
全然わからなかったわ
2018/03/25(日) 12:27:48.76ID:/CvrewET
>>551
そういうこと
目的を絞った特殊な状況でしか使えない

一般的に使うのはNG
553デフォルトの名無しさん
垢版 |
2018/03/25(日) 12:29:14.40ID:hyW7/lyL
>>551
ならんわw
2018/03/25(日) 12:42:56.52ID:PVODPgu2
いつもそうだけど、本質を少しも突かない頭の悪いやり取りしかないねw

論点は>>521,>>529的な仕組みが必要になるケースがあるかどうか。
俺はないことはないと思う。

ただ、揚げ足取りかもしれんが、>>529はList<T>をそのまま公開してるのはまずい
2018/03/25(日) 13:09:44.61ID:5WPMat6H
>>554
実際やるときはさすがにprivateにしてstatic ForEachを実装するし、
ライブラリ化するならセーフティとしてリストをWeakReference<T>にしてデストラクタで自動削除するよ
ただ掲示板でそこまで長々と書く気はないだけで
556デフォルトの名無しさん
垢版 |
2018/03/25(日) 13:13:01.00ID:Tb46nDVy
指定の時刻を過ぎたらbackgroundworkerを止める仕組みを作りたいのですが
なにかおすすめの方法はありますでしょうか?
2018/03/25(日) 13:27:59.98ID:lVxRvEma
>>555
クラスの扱いの話がクラス自身を変更しちゃってる実装に違和感
2018/03/25(日) 13:51:57.79ID:JPEij3S4
>>556
それだけだとどこで時間を確認するべきかすらわからん
仕様きちんと決めてから質問して
2018/03/25(日) 13:55:31.94ID:5MzIJnBg
>>549
はあ?
そう言うイテレーター作るだけだろ w
2018/03/25(日) 14:09:46.22ID:5MzIJnBg
>>551
デストラクタでリストから外せばいいだけ
もしくはIDisposableにしてdispose( )で外すとかでもいい
2018/03/25(日) 14:39:30.42ID:HUiARVtR
>>560
参照が残った状態でデストラクタが働くの?
2018/03/25(日) 14:41:03.20ID:5WPMat6H
>>561
世の中には弱参照というものがあってな
2018/03/25(日) 15:22:13.04ID:Ol/c1EKt
そういやここ初心者スレだったか
>>548みたいなのも居るか
2018/03/25(日) 15:29:41.34ID:Zk7ZAw6P
また元の質問者蚊帳の外に置いて盛り上がっている
オレオレ仕様で議論されても誰の役にも立たないんだよ
2018/03/25(日) 15:39:34.96ID:vPJlyNvz
>>563
グローバルガーって知ったかして恥ずかしいからって粘着するなよ w
2018/03/25(日) 15:40:34.61ID:Ol/c1EKt
>>565
は?
2018/03/25(日) 15:48:44.21ID:XJO2spvZ
初心者スレでマウントするイキリオタクにはなりたくないね
2018/03/25(日) 16:05:42.72ID:vPJlyNvz
グローバルガーでマウント取ろうとして失敗したID:Ol/c1EKtをそこまでバカにしてやるなよ w
2018/03/25(日) 16:28:46.20ID:n/bZLhLz
インスタンス生成と生成されたインスタンスをコレクションに追加するのは別のクラスの役割

>>521はコレクションの要素を型でフィルタリングできたらいいわけだから素直に実装したほうがいい
2018/03/25(日) 16:28:46.85ID:rmzLSBrs
よう分かりませんけど、このスレをプリントアウトして明日朝一番で精神科にかかることをお勧めします
このIDが僕です!って正直に言うんだよ
2018/03/25(日) 16:46:03.35ID:TrFdb9nA
>>569
わざわざクラスを増やす必然性はないだろ
2018/03/25(日) 16:50:54.77ID:5WPMat6H
>>569
クラス単体で閉じてる機構をわざわざ外部に別けて何がしたいんだよ
メンテナンス性が下がるだけじゃん
2018/03/25(日) 16:55:50.35ID:sIW0PrXb
>>572
いや、この仕組みが入っているがために使えない状況が出てきちゃうんじゃね?
2018/03/25(日) 16:57:56.62ID:sIW0PrXb
本来クラスAがクラスA足る為に必要な処理じゃないんだよ
リストに追加なんてのは
2018/03/25(日) 17:00:09.33ID:n/bZLhLz
>>571
>>572

きみたちマジか!!
オブジェクト指向設計原則の基礎だぞ
それを破るだけのメリットがあるユースケースなのかな?
2018/03/25(日) 17:11:36.39ID:5WPMat6H
>>573-575
そこまで言うなら実際に書いて見せてみろ?
2018/03/25(日) 17:19:41.51ID:sIW0PrXb
>>576
普通にlist外に出せよ
2018/03/25(日) 17:27:26.70ID:+wly4/Cl
>>577
グローバルがだいしゅきなの?
2018/03/25(日) 17:35:09.99ID:vPJlyNvz
>>577
へっ?
外出ししてグローバルにしろとでも言うのか? w
2018/03/25(日) 17:37:41.15ID:+wly4/Cl
>>575
型として絶対使わない機能を分離してどうするの?
オブジェクト指向の目的もしかして理解してない?
2018/03/25(日) 17:38:38.10ID:sIW0PrXb
>>579
誰もグローバルなんて言ってないけど
どっから出てきたん?
2018/03/25(日) 17:44:59.40ID:+wly4/Cl
>>581
どこの誰がどんなスコープでList持つ想定でいるの?
2018/03/25(日) 17:45:57.80ID:sIW0PrXb
>>582
まあ、それ次第だよな
2018/03/25(日) 17:49:26.15ID:+wly4/Cl
>>583
A.ForEachでアクセスする変数をA以外に持たせたら漏れなくグローバルになるけど、何を思ってAの外に出せと言ったの?
2018/03/25(日) 17:50:30.14ID:sIW0PrXb
>>584
ならねーよ
死ねよ
2018/03/25(日) 17:50:49.15ID:vPJlyNvz
>>581
なら
> 普通にlist外に出せよ
のlistをどこに置くのか言ってみろよ
2018/03/25(日) 17:52:11.71ID:sIW0PrXb
>>586
使うやつが勝手に作ればいいじゃん
クラスAにはなんの関係もないことだ
2018/03/25(日) 17:52:42.22ID:vPJlyNvz
はい、逃げた w
2018/03/25(日) 17:53:06.16ID:sIW0PrXb
>>588
は?どこが?
2018/03/25(日) 18:04:31.71ID:5WPMat6H
>>587
自身の生成したインスタンス一覧を保持するのはclass Aの基本要件だが、
何でお前はそれを無視してclass Aの仕様そのものを変えたがるんだよ
2018/03/25(日) 18:11:58.07ID:sIW0PrXb
>>590
え?要件定義でそんなの出てくるの?
頭おかしいからだろ?
2018/03/25(日) 18:12:36.02ID:Vv01uOP7
初心者がマウントのために吠えあうスレになってんなw
>>521は作成したインスタンスをコレクションで持っていれば終わる話なのに
2018/03/25(日) 18:13:47.46ID:+wly4/Cl
>>591
あたまわっるー
2018/03/25(日) 18:16:24.49ID:a4i6A50g
>>591
要件定義クソワロタwww
2018/03/25(日) 18:17:30.34ID:sIW0PrXb
>>592
だよね
2018/03/25(日) 18:17:53.31ID:h+QwjUa5
たった数行のコードなりUMLなり書けば伝わる話なのに、
何十行も日本語書き連ねて言い訳してる時点で初心者以下だと思うのね

俺の考えた設計が最高と思うならC#で書けよ
書けないなら黙れ、素人
2018/03/25(日) 18:18:45.66ID:sIW0PrXb
>>596
でもお前単発じゃん
ご自慢の主張したいコードが付いてないけど?
2018/03/25(日) 18:19:20.14ID:xrxDySNz
しょうもな
一般論を言えば>>587が正しいが、これでは質問者の要件は満たせない。

>587は必要があってシングルトンにしてるクラスについて、
そんなことしなくても使う側が一つのインスタンスだ作ればいいじゃないか、って言ってるのと同じ
2018/03/25(日) 18:23:46.34ID:sIW0PrXb
>しょうもな
>一般論を言えば>>587が正しい
ここで止めろよ
初心者の質問なんだからよ
正しいこと覆して話進める価値あるの?
2018/03/25(日) 19:06:07.44ID:vPJlyNvz
>>592
> >>521は作成したインスタンスをコレクションで持っていれば終わる話なのに
いや、そんなことはみんなわかっててそのコレクションをどこに置くんだって話
老害レベルの知ったかがグローバルとか口走ってごまかすのに必死になってるだけ w
2018/03/25(日) 19:43:00.47ID:Ol/c1EKt
グローバル変数を使うど素人はさっさと転職したほうがいいぞ
2018/03/25(日) 19:50:31.57ID:XLrMHO3h
え?まさかプロがこんな所覗いて浅い知識ひけらかしてる訳じゃないよな?
2018/03/25(日) 20:11:31.70ID:sIW0PrXb
>>602
時代はグローバル
2018/03/25(日) 20:13:55.09ID:XLrMHO3h
>>603
山田くん、座布団一枚!w
2018/03/25(日) 21:08:37.79ID:ntckGCHi
Nugetでdll等をインストールする時にApp.configも一緒に差し替える事って可能なのでしょうか?
無理ならApp.configを書き換える手段を知りたいです

EntityFrameworkをインストールするとプロジェクトのApp.configも一緒に書き換えられてると思います
これと同じことがやりたいです
2018/03/25(日) 21:18:29.22ID:o6f1Dm/5
>>520
しらなんだー
使ってみます!


仕事でプログラム組んでた時にはいろいろと新技術を追いかけて勉強してたんだけど、
仕事じゃなくなるととりあえず、やりたい事を達成する為に
必要な機能をおいかける様になりますな。
2018/03/25(日) 23:07:48.90ID:30He22WI
引数ありで起動した場合はフォームを表示させずに処理させたいんだけど……?(°_ 。)?(。_ °)?
2018/03/25(日) 23:12:48.41ID:B8f0LaKL
出来るよ
2018/03/25(日) 23:48:35.48ID:n/bZLhLz
>>576
>>580

あおりじゃなく君たちがマジだったってのはわかったよ
質問者が明示的に指定した要望を満たす事だけを考えてるから話が噛み合わなかったのね

指定されたwhatが正しい前提でhowを考えるか
正しくない可能性も考慮してwhyを含めて考えるか
視点の違い
2018/03/25(日) 23:59:44.77ID:fmRuNsvM
「○○なことがしたいんだけど…」

「その要望は正しくないから考えを改めるべきだ!」

正しくないからやらない
プログラマとは思えない凄い斬新な発想だな
2018/03/26(月) 00:09:13.21ID:v9FPJIaO
素直に「ぼくにはできましぇん(泣)」って言えばいいのにね
2018/03/26(月) 00:11:47.31ID:YTVmG1TL
質問でも回答でもないレスは他でやれ
>>607
わかりやすい方法の一つ
Visual StudioでWindowsFormで作るとProgram.csが作られるから書き換える
static class Program
{
[STAThread]
static void Main(string[] args)
{
if (0 == args.Length)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
return;
}
//ここから下に引数があった時の処理
}
}
2018/03/26(月) 00:13:56.74ID:m3Kkye2j
とりあえず初心者用スレで語るの辞めてもらえませんか
2018/03/26(月) 00:16:17.47ID:QH+aPMzj
ヨーダ記法はやめてくれ…
2018/03/26(月) 00:24:06.83ID:cY1aRMKv
>>610
設計しない下請けプログラマー的発想だな
2018/03/26(月) 00:31:10.42ID:XKiwACKR
元請けだと実際>>610は普通にあるね
ほとんど全ての案件において、客の妄想のとおりに作るなんて不可能だし、できたとしても結果的に客の利益にならない
2018/03/26(月) 00:36:48.08ID:PvcYNBhB
>>615-616
よく知恵袋にいる質問者にSEKKYOしてる奴みたいなことしてんのか
お前らさては無職だな?
2018/03/26(月) 00:42:45.85ID:vpzWQp7E
またボケ老人同士のの繰り言合戦が始まった

繰り返すが、論点は>>521,>>529的な仕組みが必要になるケースがあるかどうか。
恐らくないことはない。

一般論としては要件の合理性に疑問を持つことは悪くないが、
上記の通りこの件に関してはただの言い掛かり
2018/03/26(月) 00:50:14.64ID:Dv2PEULu
より素晴らしい設計が本当に頭に浮かんでるならそれを見せればいいのにね
何も開示しない、ただ頭ごなしに否定するだけなら、言っちゃなんだけど何も作れない素人の戯言だよね
620デフォルトの名無しさん
垢版 |
2018/03/26(月) 02:26:07.62ID:wzFW36Lw
こういうコントロールの構造なんですが、Buttonがクリックされた時にTextBoxの文字を変更したいんですが、どうするのがベストでしょうか?
今は、Buttonから、ParentでFormまで辿って、そこからTextBoxまで辿り着いてるんですが、凄い非効率な気がします・・・

これと同じ構造のインスタンスが最大70個くらい出来ます。

Form - Panel1 - Panel2 - TextBox
    - Panel3 - Panel4 - TabControl - TabPage - Panel - Button
2018/03/26(月) 02:43:07.18ID:cavhWqCs
直接インスタンスを指定できないの?
private void Button_Click ( ... )
{
  this.HogeTextBox.Text = "hoge";
}
2018/03/26(月) 04:07:03.39ID:AffV6ek/
イベントメソッドの共通化や、自作のボタンクラスの話だったりといった特殊なことをしたいのかな?
普通は上にある通りクリックイベントでテキストボックスの値を変えるだけ70個ボタンがあるなら70個書けばいいだけなんだけど
2018/03/26(月) 07:56:24.40ID:M54ZFy+S
スタートボタンを押すとbackgroundworkerのwhileループを実行し、キャンセルボタンを押すと停止するプログラムを作りました

これを9時になると自動でスタートし、17時になると停止するプログラムにしたいのですがどうすればいいでしょうか?
自動停止時にはキャンセルボタンを押した時と違いそれ専用の処理を行いたいです。
2018/03/26(月) 08:10:40.35ID:DzDpiGFR
コントロールの種類・処理が異なるなら、
各コントロール毎に、イベントハンドラーを付ける

逆に、コントロールの種類・処理が同じなら、
各コントロールの親に、イベントハンドラーを付けて、親で処理する

同じような関数を、たくさん作るのは良くないから
2018/03/26(月) 08:15:42.61ID:DzDpiGFR
>>623
「windows タスクスケジューラ」で検索!
2018/03/26(月) 12:37:28.74ID:KMiayiKp
どういった方法を使えばいいかすらわかりません
タスクスケジューラーはなしでやりたいです。
627デフォルトの名無しさん
垢版 |
2018/03/26(月) 12:43:13.71ID:ErqiV+UW
自分で自分を起動するメタプログラムやね
2018/03/26(月) 12:49:56.47ID:ZELYO3P5
>>626
なんで?
それだともうサービスアプリみたいな方法しかないけど
苦労の割にタスクスケジューラと変わんないよ
2018/03/26(月) 12:54:28.04ID:4B0nX6es
>>623
タスクスケジューラなんて関係ないから騙されちゃダメwww

要は今はUIのボタンを押して人が手動で開始/停止してるのを
開始時刻/停止時刻で自動でやりたいってだけでしょ?

そんなのタイマでも使って時計をポーリングするだけ。
何が難しいのよ逆に
2018/03/26(月) 12:59:57.75ID:ZELYO3P5
アプリは起動してる前提でいいの?
終了してると動かないけど
2018/03/26(月) 13:02:31.43ID:oo+qoL1t
何が難しいかと言えば、ボタンが有るだけに「閉じるボタン」押されてアプリが落ちる件
2018/03/26(月) 13:06:38.61ID:PvcYNBhB
また常駐アプリの概念すら知らない初心者が知ったかでアドバイスしてる
2018/03/26(月) 13:13:11.57ID:4B0nX6es
これ前も書いたけど、常駐なんて概念は20年以上前のシングルタスクのDOSの概念
今時何の意味ももたない

何が知ったかだよアホかほんと
2018/03/26(月) 13:17:42.44ID:xJxqYO19
マルチタスクで常駐が意味無いなんて初めて聞いたがどこ情報だよ
ソース出してみ?
2018/03/26(月) 13:18:39.78ID:4UQMW5SP
windowsで○○時にアプリを起動したいという目的に一番かなっているのはタスクスケジューラー
linuxでもcron使う局面

ずっと起動しっぱなしのアプリやサービスでポーリングやタイマー使うこともできるけど無駄
2018/03/26(月) 13:21:52.38ID:PvcYNBhB
>>635
『アプリを起動』なんて言葉は>>623のどこにも書いてないけどな
2018/03/26(月) 13:28:09.86ID:xpW3ZJwT
単に起動するだけならタスクスケジューラーでよいと思うのですが
時間が過ぎたら、それ専用の動きをして停止したいのです
なのでタスクスケジューラーでは難しいかなと
timerで検索したり、同じような悩みの質問を探してみると必ず「タスクスケジューラー!」という回答者がいるのですが、求めているのはそれではないんです!
2018/03/26(月) 13:29:55.97ID:4UQMW5SP
時間が過ぎたらってただ単にDatetime.Nowが指定した時間を経過したかどうか調べるだけだけど
2018/03/26(月) 13:31:09.52ID:xpW3ZJwT
>>629
タイマーを使って時計をポーリング?
という方法で調べてみます
ありがとうございます
2018/03/26(月) 13:32:01.24ID:4UQMW5SP
backgroundworkerのwhileループで指定された時間を超えてるか調べる
もし超えてたら何かをして終了
2018/03/26(月) 13:32:30.43ID:xpW3ZJwT
>>638
その方法を調べてみます
2018/03/26(月) 14:27:09.74ID:oo+qoL1t
>>632
ボタンが有るGUIのあるソフトなんだから、普通にユーザーがウインドウを閉じることを想定すべきだよ
対策は閉じるを無効にするとか、GUIと本体を分離するとか、ユーザー教育でなんとかするとか、パソコン自体をソレ専用にするとか
何処らへんで妥協するか考えないとな
2018/03/26(月) 14:47:34.51ID:PvcYNBhB
「大変!右上の×押したらプログラムが終了しちゃう!」

だから常駐化しろよって話だろ?
2018/03/26(月) 14:51:53.23ID:b4TsAUH3
それでいつ開始すんだ?
朝7:00に起動するとして
前日18:00に閉じて
朝8:00に開いたので起動
でおk?
2018/03/26(月) 14:55:32.88ID:EeYp3eGw
聞かれとこと答えずに必要のないこと聞き返したり聞かれていないこと回答する人たち
oo+qoL1t
b4TsAUH3
2018/03/26(月) 15:04:02.11ID:b4TsAUH3
>>645
いいじゃん
後は質問者が抜けを塞げばいいよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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