ふらっと C#,C♯,C#(初心者用) Part144
■ このスレッドは過去ログ倉庫に格納されています
!extend:checked:vvvvv:1000:512 次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為) 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■関連スレ C#, C♯, C#相談室 Part95 https://mevius.5ch.net/test/read.cgi/tech/1508168482/ ■コードを貼る場合は↓を使いましょう。 http://ideone.com/ https://dotnetfiddle.net/ ■前スレ ふらっと C#,C♯,C#(初心者用) Part143 https://mevius.5ch.net/test/read.cgi/tech/1558002486/ ■情報源 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/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured あと、そもそもメソッドのデザインとして 例外を投げる代わりにout引数か戻り値でnull(あるいは例外オブジェクト) を返すって選択肢もあるから、そこで迷うってケースもないことはないけどね。 呼び出し側でいちいちtryブロックを書く必要があるのは鬱陶しい、 って需要もあるから キモいRuby厨はスレ追い出されてC#スレに引っ越した >>289 たぶん環境が緩いというか品質が知れるわ 昔はout使う構文が嫌いだったけど、7.0でインライン宣言出来るようになってからそうでもなくなった ValueTupleにエラーコード入れて返すじゃ駄目なの? >>294 TryParse的な物を想定して書いたけど>>291 じゃ端折り過ぎて意味不明だね申し訳ない 戻り値nullは(メソッドじゃないけど)as的な物を想定 例外オブジェクトをout変数で返すのはたぶんやってる人はほどんどいないけど、 tryブロックが嫌いなら場合によっては便利かも >>272 JavaとJavaScriptは別ものだ あほ Slenium以前の問題 例外はログ拾う時に絶望したくないから適切に投げるなぁ。 どうでも良いという論調は作るだけで保守しない人の発想みたいで少し嫌かもしれん。 アプリケーションのロジックをバッチでも使いたい、みたいな時に、毎度戻り値を検証するんじゃなくてバッチの一連のトランザクション自体落としちゃいたい時に二度手間な気がするんだが、その辺どう作ってるんだろう? >>301 二度手間と思うのは一人で全部コード書いてるから。 >>299 え?なぜjsを指定してると思うの? 元々javaのつもりで書いてるんだけど。 沸いてるの?? >>303 javaの拡張子は【.java】だよ 【.js】は、思いっきりJavaScriptの拡張子 少しググって勉強してね プログラム板住人は煽られるとすぐムキになるから、転載アフィブロガーの種まきに最適な場所になっちまってんだろう Seleniumって便利だな もっとユーザが増えてほしい >>304 え?全然噛み合わない。 なにこのアスペ Ruby on Rails では、作者のDHH が、2014年に「TDD(テスト駆動開発) is dead」と発言して、 ユニットテストから、Selenium を使った、E2E(end to end)テストへ移行した! それで、Rails 6 では、 DHH のいるBasecamp 社から、GitHub へ移籍した、Eileen Uchitelle によって、 テストを複数CPU コアで、並列実行する機能が実装された! >>303 なんでJavaのつもりで書く必要があったの? >>307 あんたの272の近辺にはJavaの話は全く出てきていないが、もしかするとRubyがJavaだと思った? エスパーすると、ASP.NETがあるがデスクトップアプリがメインだったC#よりまだJavaスレの方がまだselenium詳しそうなやつ多そうだから、せめてjavaスレ行けって事だろ。 ほんとこれぐらいもエスパーできなきゃアホやろ それなら「Rubyスレに行け」が流れ的に当然であるのに何故か「Java」 彼にとってサーバーサイドの言語は全部Java ほぼ「ゲーム機を全部ファミコンと呼ぶおかん」状態と考えるのが妥当と思われる seleniumがjavaで書かれてるからじゃないの >>236 ->>238 のC++云々からの流れかと思ったけど KeyValuePair c=func1(); cをnull判定できないんですがどうしたらいいですか? Myclass c=func2(); の場合、null判定できます。 クラスは出来て、KeyValuePairは出来ないのは何故ですか? KeyValuePairにnullなんて入らないからな >>316 流石に頭が悪すぎるのでこれ以上会話するのは不可能 >>319 func1をTryParseみたいにbool func1(out KeyValuePair c)にして値入れたくないときはfalseを返すようにしたら? 構造体にnullは入れられないし、どうせそのあとnullで分岐するでしょ >>316 先走った場違いな発言を認めたくなくて必死過ぎ、こーゆう使えない部下は直ぐに切るからこいつは低収入確定 >>319 KeyValuePair? を返すようにしたらいい そりゃ、C#・Java は、静的言語で同じだから、 静的言語になれているなら、Selenium の話は、Java で聞くのがよい 動的言語なら、Ruby, Python で聞けばよい Seleniumデザインパターン&ベストプラクティス、2015、オライリー これは、Rubyでテストを書いた本 ウェブ系・HTML は基本、Ruby。 まあ、Java のSelenium の本も出てるけど Java は、Spring Boot か? 動的言語のGroovy じゃないのか? javaの話が出てきても勘所がないから検討違いな粘着になるんだよな Seleniumについて知識があれば文献的に充実してるのはjavaだろうに c#からc#をインタプリタで実行できるライブラリってありますか? WinForms で質問です。 標準の Form から継承した MyForm を abstract で作りました。 この MyForm は abstract なのでデザインで開けません。 (ここまでOK) MyForm をもとに SubForm なるものを継承して作りました。 これには abstract は付けていないのですが、これもまたデザイナで開けません。 あまりに残念すぎる挙動だと思うのですが、これは仕様でしょうか。 Visual Studio .NET (2002) から続く仕様だよ .NETではフォームの継承は推奨されていません 共通化したい場合はユーザーコントロールを使用してください なお、WinFormsは既に開発が終了しており、今後改善される可能性はありません やっぱりですか。 デザイナが使えないと不便なので、MyForm 側にabstract 付けないで、virtual 定義しているのですが 継承先で「いじり必須」なものを忘れてしまうため、本当は abstract したいのですが・・ WinForms の開発が終わったって、世の中、VS で弄られてるソースの9割は WinForms だと思うんですけどねぇ うちは自社開発企業だがFormsはとっくの昔に淘汰された Formsで作ってたアプリは全部WPFで作り直した visualstudioを利用しているのですが最近デバッグ時にフォームアプリを動かすと System.InvalidOperationException: '有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'hoge' がアクセスされました。' の様なエラーが出て止まる様になりました しかし出来たプログラムをふつうに動かす分には異常ありません 今まで作ってきた問題のなかったすべてのバージョンでこの様な現象が起こっています これは何が原因でしょうか? >>335 騙されたらあかんw 継承後のフォームもちゃんとデザイナで開けるし コントロールを追加したりいろいろ出来るよw フォームの継承なんて10年以上やってなかったが 今実際試して確認したから間違いない >>337 先日MSがWindowsUpdateでやらかしたのが原因で、結構話題になっているから検索すると見つかる 「windowsupdate vb」 で >>338 「abstract な継承元から継承すると、継承先フォームがデザイナで開けない」 という意味でしたけど、こちらだと VS2019 でも叱られてしまいます。。 継承元が abstract じゃない単純なファームの継承だったら、まったく問題ありません。 >>340 なるほど。 abstractにこだわる必要が本当にあるのかなとも思うけど、 何ならコンストラクタをprotectedにすりゃ機能的にはほぼ同じだね。 (abstractメンバーはもちろん書けないけど) これならそういう不具合は起こらないっぽい 蕎麦とラーメン間違えるとかもう簡単ケータイにしたほうがいいんじゃね。 たぶんVPNとか使わわんだろうし。 俺もIntelだからもう日産もゴーヤチャンプルーも同じ味付けで食える。 Keyvaluepairの.Keyをnull判定したら nullできました。 構造体だけどnull判定できましたが?? keyvalueopair本体はできないけど KeyまたはValueはnull判定できました。 何故???まぁ良かったんですけど それはKeyプロパティが返した値をnull判定しているのであり、KeyValuePairが構造体であることは全く関係ない 直行する問題の分離ができない人はプログラミング向いてないよ 構造体はnullにできないからKeyValuePair?使えって言ってんのに >>346 ようはList<KeyValuePair<string,double>> "レタス" 100 "キャベツ"120 "トマト" 120 こういうリストで、ピーマンって探すと Keyがnullになってくれたので、良かったです。 KeyValuepairがnullじゃないのが不思議ですが null判定できてよかった 構造体はnullにできないと何度も言われてるのになんで不思議に思うんだろう ピーマンを探すときのList.FirstOrDefault()の戻り値は KeyValuePairをデフォルトコンストラクタで初期化したものだよ >>349 keyvaluepairは構造体 構造体にはnullが存在しない 構造体にnullが存在しないことと構造体の中身がどうなっているか関係ないので、中身がクラスであるならnullにもなりうる 君がやったことは構造体ではなくその中身がnullかどうかのチェックしただけ 構造体とクラスの違いが理解できないなら今後も躓くのでkeyvaluepair含め他の構造体の使用も封印したほうがマシ まぁintだって構造体だから全部避けるなんてことは無理だけど listに入れるならdictionaryでいいんじゃないか…?とか話を一切聞いてなかったりとかkeyvalue君のレス見てるといらつくし 説明してあげる>>351 は優しいだろ >>349 null返ってきたのはkeyの型(string型)の初期値がnullだからなんでねか? >>349 ピーマン探してnullが帰ってくるのはおかしいだろ。 ピーマン探したら見つからないのが正しくないか? Form1以外のクラスでlistboxに入力したいのですが 他クラスで入力する方法って望ましくないのですか? 他に方法はあるのでしょうか? MVVMなら他クラスで用意するのが普通。 INotifyPropertyChangedとObservableCollectionでばっちりよ >>356 松茸採りに行っても見つからなかったらバスケットは空で帰って来るしか無いだろ? でもバスケットはあるから、バスケットの中の松茸の数がゼロになるんだよね? バスケットが空なのと、バスケットにnullが入ってるのは違うんじゃねえかな? 参照型は瓶と水みたいな感じで、瓶だけ持って帰ってこれても、 値型みたいな、それ単体が実体のものは言うとおり松茸みたいなもんで、取りにいってなかったら何も持って帰って来れないと思うが。 無理矢理何か持たせるのがFirstOrDefaultで、坊主だった親父がとりあえず当たり障りのないものを魚屋で買って帰るようなもんでは? FirstOrDefaultは無かったときにnullを返すためにあるんじゃないんだから。 ちゃんとチェックしてから取ったほうがいいと思うよ。 ちゃんとチェックしてからとるならFirst()でよくね? >>358 なんですが誰かお願いします 別クラスでテキストボックスとかいじるのって普通のやり方ではないんでしょうか? 別クラスでいじるって、 class Hoge { public void SetText(TextBox textBox, string text) { textBox.Text = text; } } みたいな? コントロールを外部に渡すというのはまあ一般的ではないな >>359 返してくださったのはありがたいんですが その3つの単語全て知らなくて、ググってみても高度すぎてわかりません コンソールアプリケーションをフォームアプリケーションに移植しようとしているのですが Console.Write()で出力していたものをlistBoxやtextBoxに出力したいのですが出来なくて困っております どうかアドバイスお願いします 外部でstringの配列なりListなり作った上でそれを ListBox.DataSourceプロパティにセットすればいいんじゃないの >>369 ■ 選択肢1 FormにAddToLogみたいなメソッドを作ってConsole.WriteLineを LogForm.AddToLog ■ 選択肢2 Console.WriteLineを、記録する文字列を通知するイベントに置き換える。 Formはそのイベントを拾ってListBoxに表示 後者を推奨 基本的にUIの参照を握らせるのは悪い手 移植したいコンソールアプリ class Program { static void Main(string[] args) { var op = new Output(); op.MainProcess(400); Console.Read(); } } public class Output { public override int MainProcess(int count) { for (int col = 0; col < count; col++) Console.Write(col); } } 作ってみたフォームアプリ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { var op = new Output(); op.MainProcess(400); } } public class Output { public override int MainProcess(int count) { for (int col = 0; col < count; col++) listBox1.Items.Add(col);//←ここが動かない } } こんな感じです >>371 ありがとうございます。さっそく試してみます なんでいきなりバックグラウンドワーカーが出てきてるか知らんけど、ドゥーワークは別スレッドで実行する内容を記載するところで、UIスレッドにアクセスしたらダメ→コントロールを触ったらダメ リストボックスにアクセスしたかったらリポートプログレスもしくはコンプリートでUIスレッドにマーシャリングしてから 簡略化して書いていますが凄い長い計算なので計算中でもプログラムが反応する様にbackgroundWorkerにしています backgroundWorkerかでなくとも、他クラスからフォームをいじるということが出来なくて困っています >>375 1.他のフォームからコントロールを操作する https://dobon.net/vb/dotnet/form/accessanotherformdata.html 2.BackgroundWorkerからコントロール(UIスレッド)を沿操作する https://dobon.net/vb/dotnet/programing/progressdialogbw.html またはInvoke 今の段階では1+2をやりたいんだよね 設計的なものに口だすのは良くないけど参考までに >凄い長い計算なので計算中でもプログラムが反応する様に ListBoxの一つのアイテムごとに時間がかかるのならMainProcessでループで一気にAddせずに BackgroundWorkerの中で「計算実行→ReportProgressで別フォームListBoxにAdd」をループさせてもいいんじゃないの >>366 ログ出したいん? なんかプロパティのフラグ立てる必要なかったっけ? 関係なかった 自分が昔出なかったのは AppendTextしてなかったからだったw すまんかった Invoke調べてみました。いけそうな気がしますが書き方が難しいです 上記のコードの場合どのように記述すれば良いのでしょうか? パッと見で適当だけど、formにコントロールの変更記述して、コールバック登録してtaskはしらせればいいの違うのか?invokeは当然 doubleって整数のほうに偏りがあったら 小数部分は短い精度になるんですが、これ何とかなりませんか? doubleは精度高いから小数点第5位とか精度余裕だろwwwwwwwwwww 989〜〜〜132.1235212596 算出結果 989〜〜〜132.1235312314 正解 え??????????? ちょwwwwww 助けてください >>384 何を言ってるか人に分かるように書かないと誰も答えようがないよw 一般論として、演算誤差を累積させずに 演算可能かどうかはどういう演算をしてるかによるので、 具体的な処理が分からないと何とも言えん >>384 浮動小数点とはそういうもの 小数点以下何桁かではなく全体で何桁か Form1, Form2, CounterForm があります。 CounterForm にカウントを表示して、0 になったら、Form1 か Form2 のメソッドを実行するにはどうしたら良いでしょうか? やりたいこと 5. 4. 3. 2. 1. 0 と表示 → form1.DoSomething(); CounterForm と Form1 の部分はできているのですが、 複数class間で通知する方法がよくわかりません。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる