1 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 17:40:19.48 ID:oKXVP34zM.net] 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■関連スレ C#, C♯, C#相談室 Part95 mevius.5ch.net/test/read.cgi/tech/1508180530/ C#, C♯, C#相談室 Part93 https://mevius.5ch.net/test/read.cgi/tech/1492818720/ ■前スレ ふらっと C#,C♯,C#(初心者用) Part136 mevius.5ch.net/test/read.cgi/tech/1520057345/ ■コードを貼る場合は↓を使いましょう。 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 referencesource.microsoft.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
623 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 00:17:32.79 ID:gDWY5JTja.net] 川俣さんのことを馬鹿にする人が2chには多いけど、この記事の趣旨は正しいと思う www.atmarkit.co.jp/fdotnet/extremecs/extremecs_18/extremecs_18_02.html 特定の技術への信仰と「俺スゲー」っていう間抜けな自己陶酔が結びついてる奴ってよくいるし、 このスレにも時々そんなのが出るけど、そういう奴のいうことは真に受けない方がいいですw
624 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 00:18:47.47 ID:Wjyh58JD0.net] >>608 まあ普通はjson使うがな
625 名前:デフォルトの名無しさん [2018/05/14(月) 07:03:43.68 ID:oC/RgBRx0.net] つか業務で使うなら余程のことがない限り枯れた技術の方が安定する
626 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 07:06:02.02 ID:Wjyh58JD0.net] >>612 COBOLとか?
627 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 07:55:56.39 ID:zbYXMED5M.net] COBOLは実際優れてるんだよなあ 低品質なPGでもほぼ完璧に見積工数通りに仕上がるし、バグもほとんど出ない 金持ちな客からきっちり工数見合いで金取れるならSIerにとってこれほど好都合な言語はない
628 名前:デフォルトの名無しさん [2018/05/14(月) 08:01:56.16 ID:wRU00x5/r.net] バグでないのはアカンやろw
629 名前:デフォルトの名無しさん [2018/05/14(月) 08:12:24.86 ID:I+nT90nna.net] それはバグが摘出できていないだけでは
630 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 08:30:53.44 ID:6WkSgDmyr.net] 工数が低減できるかどうかよりも見積が精確にできることの方が管理者にとっては重要ってわけだね
631 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 09:03:36.07 ID:coszmN5L0.net] バグが出ないに総ツッコミでワロタ
632 名前:デフォルトの名無しさん mailto:sage釣 [2018/05/14(月) 09:45:10.45 ID:tQHKR4rj0.net] 大体この時間にABENDしますって 異常停止をルーチンワーク化して運用している所があったな
633 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 10:05:11.99 ID:TQ68xzma0.net] 現場運用だと稀によくある 開発側がそれを織り込んじゃダメだけど
634 名前:デフォルトの名無しさん [2018/05/14(月) 19:19:28.87 ID:M+KhV3wka.net] >>598 だけど 蒸し返した話にレスくれてありがとう 自分の用途にはxmlでも問題なさそうでとりあえず安心した
635 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 20:12:46.13 ID:CBd8Qc4H0.net] SVGやMathMLのような外部の名前区間が出てくるとか、Xamlのようにかっちりしたものを書きたい場合はXMLが有利 文字列や数値しか出てこないような簡単な構造ならJSONの方が便利なことも多い。 Trueなのかtrueなのかとか考えなくても良くて、エディタがサポートしてくれるし、エスケープの仕様とかがシンプルで、ファイルも小さい。逆に言うとその程度なのでわざわざ切り替えるほどでもないとは思う
636 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 20:37:51.15 ID:5czuzhWO0.net] >>597 VCわけないんですか。 うーん・・・。 いろいろな設計方法があるということですね。 インスタンスの生成順として A→B A→C とAからCにBのインスタンスを渡す方法は分かるのですが、 C→A A→B とインスタンスを生成した時、CにBのインスタンスを返すことって可能なのでしょうか?
637 名前:デフォルトの名無しさん [2018/05/14(月) 20:54:23.97 ID:g5WxNsfna.net] デリゲート
638 名前:デフォルトの名無しさん [2018/05/14(月) 20:59:59.56 ID:IVWzojCa0.net] 【マンモグラフィー】おっぱい挟んで癌検査…必要? egg.5ch.net/test/read.cgi/bio/1517115639/l50 【ペットフード】告発したら3人組に棍棒で襲われた egg.5ch.net/test/read.cgi/hosp/1517110484/l50 【アマルガム】水銀を歯に? 厚労省『暴動が怖い』 mao.5ch.net/test/read.cgi/doctor/1517058870/l50
639 名前:デフォルトの名無しさん [2018/05/14(月) 21:00:16.16 ID:qPzo5Sk00.net] >>623 「返す」ことにこだわりがあるのなら結構難しい そこにこだわらず、単にCからbを扱えれば良いのならa.bでアクセス可能だろう
640 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 21:35:43.16 ID:1pddwh+ma.net] >>623 何でわざわざ話を複雑にするの? class C { A a; B b; public C() { a = new A(this); b = new B(a); } } 例えばこれじゃダメなの?
641 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 21:38:33.33 ID:Ju2ea7rBa.net] DIコンテナとか諸々のイディオムを知らない初心者だからまぁしゃあない MVCでもMVVMでもいいからチュートリアル的なものをひとつやっとくとだいぶ違うとは思う
642 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 21:40:59.32 ID:orCVIDzn0.net] >>626 まず「返す」の意味が分からないんだよな >>623 何のためにその実装が必要なのか、まずはそっちから 普通は複数の派生インスタンス扱いたいのならどこかでまとめて管理する方が楽 横に伸ばしていくんじゃなく中心から引っ張っていく形
643 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 23:18:38.41 ID:coszmN5L0.net] 馬鹿なこと考えないでジャンケンゲームでも作ってろって
644 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 23:19:52.93 ID:6thsxJoDM.net] >>623 今時のマルチレイヤな設計ってのは、「汚い場所」をどこかに決めて、そこが依存関係の解決を一手に引き受けるようにするんだよ で、他の部分は「汚い場所」に直接依存しないようにするの >>627 の例でいうと、Cを「汚い場所」とするならAがCを直接参照するのは良くなくて、 AからCのメソッドをコールバックしたいんだったらインターフェイスを介して呼ぶようにしたりする 汚い場所をどこにするかだけど、フォームアプリならフォームだったり、Webアプリならコントローラだったり 処理の起点となり、かつ、どのみち単体テストが困難な場所を選ぶのが一般的だ
645 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 23:24:11.06 ID:LQsoSslkM.net] なんだか要領を得ないからわからないけど Bを操作するメソッドをAに用意してCがA経由でBを操作するのはだめなのか?
646 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 23:36:29.55 ID:0rMMZwm+0.net] MVC をわかってないような奴に、何も教えられない まず、無料のRails チュートリアルで、MVC webアプリの設計から学べ
647 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 00:01:41.20 ID:NfuIoln0a.net] Railsってモデルがフォームの構造に依存するからなあ あんなのAccessのフォームなんかと同レベルだよ 変な癖がつくから初心者には適さない
648 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 00:21:50.03 ID:joJAW/ym0.net] >>633 スレチ
649 名前:デフォルトの名無しさん [2018/05/15(火) 06:26:55.76 ID:bIQIvbQJ0.net] MVVMを理解するには何からはじめたらいいの?
650 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 07:15:54.13 ID:OnclRViVM.net] >>636 何から始めても理解できない 分離するどころかやればやるほど結合が強くなる現実に打ちのめされるだけ
651 名前:デフォルトの名無しさん [2018/05/15(火) 07:32:22.06 ID:bIQIvbQJ0.net] やってみたけど難し過ぎて手に負えなかったってことだね。
652 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 07:36:31.19 ID:IL2LN/1vM.net] >>636 Vue.jsあたりかな XAMLはテンプレートやコマンドバインディングが複雑すぎて本質を掴みづらい WebのMVVM系フレームワークのほうがずっと見通しが良くてMVVMの本質を素直に実装してる
653 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 07:43:57.19 ID:dqMabmxz0.net] まずはUNDOなりマクロを実装するのに何が必要か 考えると、「C」の動きが見えて来るかと思うけどね GOFの最初の章にも説明はあるよ
654 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 07:48:40.53 ID:WESx87C+0.net] >>627 アクセシビリティに一貫性がありませんってエラーが… internalでインスタンス生成するとOKなんですが、フォームクラスはpublicで宣言してるんですけど。
655 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 07:52:16.57 ID:WESx87C+0.net] >>629 ご指摘を受けてメインのフォーム上でインスタンス管理しようとしているのですが、 アクセシビリティの一貫性というエラーが出てきています。 public partial class ExaminationForm : Form { public InitialSettingForm initialSettingForm; public InitialValues initialValues; で最後の行にアクセシビリティ一貫性のエラーが・・・。 3行目のpublicをinternalにするとエラー消えるのですがなんでだろう。
656 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 07:56:03.82 ID:jP3S3vDhM.net] そのビューの入出力項目と隠し項目とユースケースを抽出するだけだよ ログイン画面だったら 入出力項目として ・ユーザーid ・パスワード 隠し項目は無し ユースケースは ・ログインする なので class LoginViewModel { public string UserId { get; set; } public string Password { get; set; } public void Login() { // login impl } } こうなる あとはViewがVMを監視するために変更通知イベントなどを実装しましょう それだけ
657 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 07:59:07.77 ID:5QugQ9oMM.net] >>636 へのレスな↑
658 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 07:59:13.31 ID:4jNLOtgZa.net] >>642 InitialValuesクラスがinternalなんだろ publicに変えれば意図通りになる 言っちゃ悪いけど正しい設計とか気にするレベルじゃないと思うよ まずは汚くてもいいから一本何か形にできるようになってから考えればいい
659 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 08:38:53.30 ID:WESx87C+0.net] >>645 ああああああああ! そこなのかあああ! classってデフォルトでinternalになるんですね。 というかinternalって省略されるから気づきませんでした。 ここで半日費やしてたのでものすごく助かりました。 ありがとうございます。m(__)m
660 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 08:42:40.68 ID:WESx87C+0.net] >>645 一本ゲーム作ったんですが、form1(初期値)、form2(ゲーム)にほとんどぶっこんだオブジェクト指向ほぼ無視プログラムになってしまったので、 ゲーム内のデータ管理とform2だけでも分離しようとして悪戦苦闘しています。 はるか昔にBasicやったぐらいなので、インスタンスの参照渡しとかその辺がうまく実装できなくて・・・。 勉強用に買った本にもインスタンスの参照渡しなんて全く書いてないし・・・。(´・ω・`)
661 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 08:47:43.78 ID:WESx87C+0.net] あれでも //インスタンス生成 InitialValues initialValues = new InitialValues(); //インスタンスの参照渡し initialSettingForm.InitialValuesPointer = initialValues; としているのに フィールド”InitialValues"は割り当てらせません。常に規定値nullを返します。 となります。 実際にnull値が入ってるようで、initialSettingFormにインスタンスの参照は渡せていない模様・・・。 newしてるのになんで割り当てられませんと出るのでしょう??
662 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 08:55:56.96 ID:WESx87C+0.net] //インスタンス生成 ×InitialValues initialValues = new InitialValues(); ↓ this.initialValues = new InitialValues(); でした。すいません。
663 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 09:03:30.06 ID:WESx87C+0.net] >>648 すいません。ゴチャゴチャしてた変数名整理したらエラー消えました。。。 お騒がせしてもうしわけありません。
664 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 09:34:05.49 ID:IdD83PdN0.net] >>647 C++ 以外のすべての言語で、インスタンスの参照渡しだろ
665 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 10:42:46.03 ID:WESx87C+0.net] >>651 初代MSX-Basicでゲーム作ってた頃以来のプログラミングなので(;^_^A
666 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 10:47:12.03 ID:WESx87C+0.net] アホな質問ですが、 Class InitialValue に初期値を全部詰め込み、必要であればコントローラから参照しているのですが、 インスタンスの参照をinitialValueとすると initialValue.StartPointX+hoge などインスタンスの参照がくどくて読みづらい。 いっそiVとかしたいのですが、自分にしかわからない省略は良くないと聞いたもので・・・。 initialValue.StartPointX initValue.StartPointX iV.StartPointX どれが読みやすいコードでしょうか?
667 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 12:29:44.99 ID:2i/hB9LUM.net] >>653 どれもダメ initialValueをそのまま使わずに設定値を使うクラスにコピーして
668 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 13:05:19.58 ID:WESx87C+0.net] >>654 えええ! データはデータクラスで一元管理じゃないんですか? そうしないとフォームなどからデータクラスを変更した時に、 コントロールクラス側で
669 名前:その通知を受け取って もう一度データクラスからコントロールクラスにコピーする仕組みが必要になってきますよね。 [] [ここ壊れてます]
670 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 14:10:34.54 ID:l7Fk1Hkl0.net] 自分がアホだと分かってる割には自分の判断を信じてるのな アホ草
671 名前:デフォルトの名無しさん [2018/05/15(火) 14:32:03.09 ID:bP9crr2Q0.net] 勉強のためにプロが書いた大きなプログラムを見たんだが 変数が全部4桁英数字でランダムに発生させてるような文字列だった 僕ら初心者には「これ何の変数だっけ?」と分かりにくいだけなんだけど 大きなプログラムだと万が一、変数がダブったりするのを避けるためにそうするんですかね? 変数一覧表かなにか作るんですか?
672 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 14:38:53.82 ID:WESx87C+0.net] >>656 いや、最初はコピーする仕様だったんですが、 データクラスで一元管理をするアドバイスを受けて変えたところです。 コピーするんなら元の仕様のままでよかったのかということに。
673 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 14:54:54.48 ID:oubZzl5I0.net] >>657 変な変数名は難読化されてるだけ
674 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 15:26:01.82 ID:UPWhPqGh0.net] >>657 当然だよ。変数使うには課長級の決済が必要。変数管理台帳ファイルに全部記録されている。
675 名前:デフォルトの名無しさん [2018/05/15(火) 17:20:29.21 ID:nA4SMkbe0.net] >>659 そうか、公開用にリファクターしたのかな いちいち一覧表見ないと何処につながってるか見えないなんて不便だもんね
676 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 18:44:33.69 ID:Fj6Vms3Xa.net] >>658 変数名が妥当かどうか聞いてるんじゃなかったの?w そのInitialValueとやらのクラスを使う実装方法が妥当かどうかは実現すべき仕様を誰も知らないので 誰にも分からないと思うよw ローカル変数の命名に関しては、型名InitialValueをそのまま変数名にしても 何をやってるのか理解できるような文脈なら変数名をivにしても同じことでしょう。 だったら短い方がいい。 ただしローカル変数でも説明的な名前の方が適切な場合もあるので馬鹿の一つ覚えはダメ。 情況に応じて柔軟に
677 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 19:35:30.36 ID:9ix52upSr.net] >>660 初心者が真に受けるからやめれ
678 名前:デフォルトの名無しさん mailto:sage [2018/05/16(水) 10:08:34.12 ID:5p+fPd0U0.net] int[] intData = new int[10]; int intThread = -3; // 閾値 int intCount = 0; for (int i = 0; i < intData.Length; i++) { if (intThread >= 0) { if (intData[i] > intThread) { // 処理 intCount++; } } else if (intThread < 0) { if (intData[i] < intThread) { // 処理 intCount++; } } } 閾値がプラスとマイナスで条件式を変えたいんだけど、 中の処理が一回で済む書き方ってあります?
679 名前:デフォルトの名無しさん mailto:sage [2018/05/16(水) 10:48:11.15 ID:6eYS9/+hd.net] =を含まない条件式。 そして閾値というキーワード。 まとめない方がいいよ。
680 名前:デフォルトの名無しさん mailto:sage [2018/05/16(水) 11:18:13.11 ID:XvxRw+U50.net] >>664 せめてCountメソッドにしとけと思うぐらい。
681 名前:デフォルトの名無しさん mailto:sage [2018/05/16(水) 11:47:06.88 ID:B7aMvtuba.net] >>664 単に同じ処理を2回書く無駄をなくしたいだけなら&&と||を使って 条件式をまとめるだけ if((threshold >= 0 && x > threshold) || (threshold < 0 && x < threshold)) { .... } 値が不変のはずのthresholdの符号をループで毎回評価する無駄が許せないなら Func<int, bool> predicate = x => x > threshold; if (threshold < 0) predicate = x => x < thredhold; .... if (predicate(x)) { .... }
682 名前:デフォルトの名無しさん [2018/05/16(水) 12:22:33.98 ID:CHLBL3ILa.net] async/awaitって呼び出しのネストが深くなると、大元の
683 名前:呼び出しで波線が立ってすごくもどかしいんですが、気にしなくていいでしょうか?それとも呼び出しのやり方を見直したほうがいいのでしょうか [] [ここ壊れてます]
684 名前:デフォルトの名無しさん mailto:sage [2018/05/16(水) 12:29:36.06 ID:+dukoeHCd.net] >>668 ネスト関係なくね?
685 名前:デフォルトの名無しさん [2018/05/16(水) 13:23:25.14 ID:v6bC0eDAM.net] >>664 カウントをCountメソッドにして引数に突っ込むラムダ式を閾値によって切り替える
686 名前:662,666 mailto:sage [2018/05/16(水) 14:23:23.94 ID:mC1mbnpn0.net] ごめん。Count以外の処理もあるんだね。おらの回答は無視してくれ。
687 名前:デフォルトの名無しさん mailto:sage [2018/05/16(水) 14:55:11.81 ID:c5ZU3C2K0.net] dataGridViewのデータソースをBindingListにしています。 この時にデータの絞込を実装する方法はあるのでしょうか。
688 名前:デフォルトの名無しさん mailto:sage [2018/05/16(水) 19:51:48.39 ID:oU1pyBE30.net] >>668 波線が立つのは単にasyncなメソッドをawai付けずに投げっぱなし呼び出しの警告出ているだけじゃないのか >>669 の言う通りネスト関係ない
689 名前:デフォルトの名無しさん [2018/05/17(木) 00:16:57.84 ID:OeNqnCBl0.net] すいません。ちょっと教えてください。 //Form1にて Form2 f = new Form2(); f.show(); this.visible=false; としてForm2を開いて、Form1を非表示にします。 //Form2にて Form1 f = new Form1(); f.visible=true; this.visible=false; としてForm1に戻った場合、先程form1で入力した内容が消えてしまいます。 form1の内容を消さずにform2からform1に戻る方法を教えてください。
690 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 00:28:09.71 ID:yjgdFlmp0.net] >>674 Form1 f = 「new」 Form1(); 新しいForm1を作ったんだから前のはVisible=false;のままで表示されていない 例えばこうする //Form1にて Form2 f = new Form2(this);//Form2のコンストラクタの引数にForm1の参照を渡す f.show(); this.visible=false; //Form2にて private Form1 form1; //コンストラクタ public Form2(Form1 f) { InitializeComponent(); form1=f; } //戻る処理 form1.Visible=true; this.Visible=false;
691 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 00:35:36.78 ID:hTaKG8n8a.net] >>674 目の前の問題を解決するよりまずインスタンスとは何かちゃんと理解した方がいいねw
692 名前:デフォルトの名無しさん [2018/05/17(木) 00:41:03.31 ID:OeNqnCBl0.net] ありがとうございました。 大変助かりました。
693 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 00:45:08.18 ID:hTaKG8n8a.net] もっと簡単にこれでもできるよw var f2 = new Form2(); f2.Shown += (s, ev) => Hide(); f2.ShowDialog(this); Show();
694 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 16:26:49.89 ID:GnA4tN+Fi] アプリ全体の設定について、設定変更画面を作ろうとして、まずは設定そのものを1つのクラスにまとめることを考えた そんで各設定項目を public get, private set にしようと思ったら 設定画面クラスからは各設定項目プロパティの値を書き換えられなくって困ったんだが これってどうしたらいいのかな コンストラクタに引数渡して各設定項目を設定することも考えたけど、 設定項目が20こほどあるからそれはやりたくない プロジェクト分けて設定画面を別アセンブリにしてpublic get, internal setにしないといけないんかな
695 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 21:40:59.40 ID:Kw1Q24F60.net] class Program { TargetOpe targetOpe = new TargetOpe(); static void Main(string[] args) { Target [] target= targetOpe.InitializeTarget(); Console.WriteLine(target[1].x); } } Target [] target= targetOpe.InitializeTarget();の行のtargeOpeで 静的でないフィールド、メソッド、またはプロパティ 'Program.targetOpe' で、オブジェクト参照が必要です のエラーがでます。 newしてるのになんででしょう?
696 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 21:46:08.12 ID:xJtGZ4kt0.net] >>680 静的メソッドだから
697 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 23:37:38.13 ID:03oIkg7y0.net] C#初心者です。 ある変数のその時々の値によって呼ぶメソッドを変えたいため初歩的にifやswitchで分岐させていたのですが、毎回分岐させるのもどうかと思い変数が変わるタイミングでデリゲートに代入して呼び出す方法を試してみました。 しかしながらパフォーマンステストを行ったところ、10程度の条件分岐であればifでメソッド呼び出し >>> デリゲートで呼び出しという結果でした。 速度を重視しつつ動的に呼び出すメソッドを変えるという場合はデリゲートではなく毎回条件分岐を行ったほうが良いということなのでしょうか?
698 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 23:45:29.87 ID:xJtGZ4kt0.net] >>682 どんな用途で?
699 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 23:47:12.44 ID:fnhXcK68M.net] >>682 どうでもいい そんなミクロなレベルの速度が問題になることはない IO一つで跡形も無く吹き飛ぶ
700 名前:デフォルトの名無しさん mailto:sage [2018/05/17(木) 23:49:51.73 ID:8WFSeAEB0.net] くだらねーパフォーマンスとくだらねー暗号化の話題が大好きだよな
701 名前:デフォルトの名無しさん [2018/05/18(金) 01:57:49.78 ID:3OrmdyFD0.net] パフォーマンスは重要だよ だけど、そんなのを語る以前に、コンピュータの仕組みについての素養を極端に欠く人が多すぎるんだよ 最近のC#入門書はよく出来ていて、大抵の本が最低限の仕組みが知識が身につくようページを割いて解説してるわけだけど・・・・分かっていない人ほど読み飛ばすんだな その結果、コンピュータの仕組みからしたらとてもありえないことを言い出す高卒様が出来上がるんだ
702 名前:デフォルトの名無しさん [2018/05/18(金) 02:22:20.29 ID:tl8rJsN/0.net] >その結果、コンピュータの仕組みからしたらとてもありえないことを言い出す高卒様が出来上がるんだ ありえないことなんてないだろ。頭硬すぎじゃねーの。「コンピュータはこうあるべきだ」とかに縛られてると新しい発想のソフトが生まれない。
703 名前:デフォルトの名無しさん [2018/05/18(金) 02:48:57.75 ID:3OrmdyFD0.net] 新しいものができたってのならいいけど、言うこと為すこと高卒様じゃあ・・・・
704 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 03:11:25.94 ID:eSpLSQVO0.net] >>682 条件次第なのでなんとも言えない インライン展開とかCPUのキャッシュとかまで関わってくる可能性がある 気にしなければいけないほどパフォーマンスを気遣うなら、JITの結果を比較したほうがいいけど、多くはそこまでするほどではない
705 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 04:39:51.09 ID:rO+HsCUo0.net] デリゲート使ってる時点で初心者じゃないだろw
706 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 07:16:45.92 ID:tpc+hoQ/0.net] >>690 いや、初心者がググった知識で背伸びしてるんだろ
707 名前:デフォルトの名無しさん [2018/05/18(金) 07:25:31.73 ID:40IvU0mB0.net] デリゲートとラムダ式ってちゃうの?
708 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 07:56:30.88 ID:mGKF1mXv0.net] >>681 ありがとうございます。 私アホでした。
709 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 08:01:25.12 ID:mGKF1mXv0.net] public class TargetOperation { Target[] target = new Target[Constants.MaximumNumberOfTarget]; public Target[] InitializeTarget() { for (int i = 0; i < Constants.MaximumNumberOfTarget; i++) { target[i] = new Target(); target[i].x = 100; } } return target; }
710 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 08:05:21.79 ID:mGKF1mXv0.net] 最後の行で クラス、構造体、またはインターフェイス メンバーの宣言でトークン 'return' が無効です。 です。 またアホなことをしてそうな気がしますが、昨夜からわからず・・・。
711 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 08:09:16.96 ID:WjwLG2oV0.net] >>694 } } return target; } じゃなくて } return target; } } じゃね
712 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 08:15:13.01 ID:SuBLVM61M.net] >>682 サンプルコードと結果貼れよ
713 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 08:34:05.30 ID:Yy5wJYpea.net] デリゲート使うくらいならストラテジパターン使うけど
714 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 09:57:58.57 ID:crDPuGzZM.net] >>688 こんにちは猿の学校卒様
715 名前:デフォルトの名無しさん [2018/05/18(金) 22:42:24.82 ID:6iumh9Vb0.net] DataGridViewのセルのValueを取得すると、既定の型がObject型なんですが、既定の型をstringに変更する方法はありますか? 今はConvert.ToStringで変換してるんですが、記述数が多くなりすぎて参ってます。
716 名前:デフォルトの名無しさん mailto:sage [2018/05/18(金) 22:48:37.44 ID:/dMxgLqhM.net] As string
717 名前:デフォルトの名無しさん [2018/05/19(土) 01:23:31.00 ID:5ZvwKnWja.net] C#初心者でフォームアプリを作っているんですが 例えばあるクラスAが非同期で外部機器を延々ポーリングしていて、トリガーが発生したらクラスBの処理を行いたいといった場合 ・クラスAにクラスBのインスタンスを渡して、クラスBのメソッドを呼び出す ・クラスAに宣言したデリゲート(evemt?)にクラスBのメソッドをコールバック関数として登録し、クラスAはデリゲートを実行する どちらが一般的なコーディングなんでしょうか 後者だと複数実行したい処理があるとかなり冗長な気がするんですが、他にセオリーあれば教えて頂きたいです よろしくお願いします
718 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 01:32:36.76 ID:VIvIbG0Fa.net] 女?
719 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 01:53:30.54 ID:ZECHChrda.net] >>702 前者 デリゲートは現段階で呼び出し先が定まってなくて後でアドホックに処理を差し込みたいときに使うも 最初から呼ぶ相手が決まってるならそんなまどろっこしいことをしないで直接メソッドを呼べばよい
720 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 02:13:21.77 ID:FwiHY2dca.net] >>702 騙されちゃダメwww そういうのはイベントで実装する。 何故か? 前者で作っちゃったら、その外部デバイスをポーリングしてるクラス(普通はそのデバイスの名前を付けると思うけど)、 前者で作っちゃったら他に流用できないよ
721 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 02:22:01.39 ID:6pEEqPiCM.net] >>705 YAGNI もしそれが必要になったらそのとき変更すればいい そして、ほとんどの場合において結局必要にならない 職業プログラマじゃないとアプリのコードを目にする機会って少ないから、 .NET Framework自体のクラスのような不特定多数向けの設計を真似してしまいがち 一般に、アプリケーションプログラミングにおいては無駄な拡張性は極力組み込まずに必要最小限のコードでコンパクトに実装するのが正解 そのほうが結果的に変更時のコストも小さくなるよ
722 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 02:27:56.45 ID:FwiHY2dca.net] >>706 YAGNIなんか関係ない アホか 必要もない仕様変更を想定して寛容に複雑にするのは愚かだが、 抽象度の高い(つまり汎用性も高い)方のクラスにより具体的(つまりそのプログラムでしか利用できない)クラスの 参照を持たせて依存させるなんてもっと愚かだ
723 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 02:32:39.74 ID:6pEEqPiCM.net] >>707 自己矛盾してるね 依存させるのが何故愚かだと思う? 理由は、「必要もない(質問者のレスにない)仕様変更を想定しているから」に他ならないだろ