ふらっと C#,C♯,C#(初心者用) Part138
■ このスレッドは過去ログ倉庫に格納されています
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■関連スレ C#, C♯, C#相談室 Part93 https://mevius.5ch.net/test/read.cgi/tech/1492818720/ ■前スレ ふらっと C#,C♯,C#(初心者用) Part137 https://mevius.5ch.net/test/read.cgi/tech/1523004019/ ■コードを貼る場合は↓を使いましょう。 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: checked:vvvvv:1000:512:----: EXT was configured dllのstatic云々はおいといてメモリマップトファイルならC#でも使えたかな C++ならデータセグメントを共有メモリにできる どちらにしろプロセス間の排他制御が必要 >>342 宛先なんかなく、単に全部のアプリに同じデータがブロドキャストされれば 十分って場合もあるでしょ 例えばシリアル経由で計測器か何かのデータが送られてくるとして、 (1) 画面表示だけするアプリ (2) エクセルにログを保存するアプリ (3) 計測データを使って何か他の機器を制御するアプリ 何かの都合でこんな風に複数のアプリに分けて作る必要があるのかもしれない C#でのSelenium操作についても質問していいですか? >>331 レスどうもです!下のようにして上手くいきました こうなってくるとm1に対する方法はたまたま問題が起きないだけで m2やm3の方法のほうが望ましいように思えてきましたがそういう認識であってますか? == using System.Runtime.CompilerServices; class B<T> { public void M() { } } class C1 : B<int> { } class C2 : B<string> { } class C3 : B<int> { } class Program { static void Main(string[] args) { var m1 = typeof(C1).GetMethod("M").MethodHandle; var m2 = typeof(C2).GetMethod("M").MethodHandle; var m3 = typeof(C3).GetMethod("M").MethodHandle; RuntimeHelpers.PrepareMethod(m1); // 問題なし RuntimeHelpers.PrepareMethod(m2, new[] { typeof(string).TypeHandle }); // 問題なし RuntimeHelpers.PrepareMethod(m3, new[] { typeof(int).TypeHandle }); // 問題なし } } == >>346 (確固たるソースに基づく訳じゃないので推測だけど)値型か、参照型かじゃない? 参照型の場合は TypeHandleを指定する必要がある、ってこと。 >>341 よく解らんけどdllってアプリごとにメモリに個別に展開されて初期化されるからソースコード上で同じ変数名にアクセスしても実態は違うので共有できないのは当たり前なきがする Cとかって共有されなかったっけ?よく覚えてないけど。 されるわけないだろ 何のためにプロセスがあると思ってるんだ ないって言ってんのにな 死ぬまで悪あがきしてればいいよ 何がしたいのか知らんけど、Win2k時代にシリアル通信のロガー作ったことある。あんときは、DLLをフックしてCreateFile,ReadFile,WriteFileのデータをトレースしたが、ハッキリ言ってやめたほうが良い。 ロガーだけならどこぞの口でforkすりゃいいだけだろ。 通信内容を振り分ける仕組みだと思ってたから無理って話してんだよな。 親がシリアル掴んで、名前付きパイプで子に振り分けるかなぁ。 >>332 , >>342 , >>353 受信データによって って書いてるから何らかのプロトコル決めてて、アドレスとかポート番号とかの振分け用の情報あるんだろ LANケーブルは1本でも複数のプロセスで共有してるのと同じ ここまで書けばよほど頭の悪い奴でなければわかると思うが>>329 が言うようなことは実現可能 http://nobikko-nobinobi.hatenablog.com/entry/2017/09/13/234555 ただC#だけでできるかどうかは知らん 同じDLLのstatic変数がそれを使ってることなるプロセス間で同じメモリの場所を参照するかってことじゃないの? >>356 残念だけどそれはプロセス間の共有メモリの話であってシリアルポート共有じゃないよ シリアルポートは排他でしか開けないので他の人が書いてるようにシリアルポートをサービスで開いておくしかない それがどのような形をとるかはいろいろある 通信量など条件にもよるけど、 シリアル受信プログラムは、データの種類によって接頭語+日時名のファイルを作る。 各アプリはファイル監視して自分用のを実行する。 とかユルイ連携にするのも手かと。同時開発しやすいしテストやトラブル対処も楽。 ASP.NET CoreにはJavaの@Transactionalのような仕組みはないのですか? DispatchProxyを使ってトランザクション管理を自前実装してますがより一般的な手段があるなら乗り換えたいです 今時232C使ってるようなデバイスでそんな振り分けが必要なデータなんか送ってくる可能性は低いと思いうけどねw I2Cとか485をエミューレートしてるとかなら知らんけど そんなデバイス聞いたことないけどさ アプリ作るのも、ブロードキャストして要らないデータはアプリ側で捨てる方が簡単で 保守性も高いでしょう どーせ、RS485/LAN変換器とか絡んでるんじゃね 普通のシリアル通信にコンフリクト回避のネゴエーショ等の機能は存在しないんだが、どうするつもりなんだろうな。 RS422規格の通信にするにしても、ドライバーが対応してないと難しいよな。ハードフロー制御なドライバーにして後はハードに頑張ってもらうのかな? >>358 >>329 は受信によってイベントを発生させるとか書いてるからサービスでないといろいろ面倒だが、単にポートの読み書きを共有するだけならサービスなんていらんよ >>361 まーた、俺の環境ではそんなデータはあり得ない(キリッ ってか いちいちマウント取りに来なくていいよ >>347 ありがとうございます いろいろ試してみたところ、書いてもらった通りメソッドを宣言したオブジェクトのジェネリック型引数が 全部値型ならPrepareMethodの第2引数は要らないみたいです でも値型と参照型が混在する場合は参照型のハンドルだけ渡せばいいというわけではなくて 値型のものも含めて渡す必要があるみたいなので、 やっぱり基本的にメソッドを宣言したオブジェクトがジェネリック型引数を持つなら 第2引数は必要と考えたほうが安全な気がします >>367 こういう馬鹿みるちいつも思うけど、それやってるのはお前なんだけど... 馬鹿にも程があるなほんと >>372 これやるのも2chの馬鹿の特徴だよね これ見るといつも思うが、こういう馬鹿には自分自身を見る自意識がないのかね。 お前自身がやってることは何なんだw それ以前に必死だったら何なのかね。意味が分からん まるで「お前ウンコした!!!」って騒いでる中学生だけど、ガチでそのあたりで精神年齢止まってる可哀想なお方なんだろうけどね 232C使うようなデバイスでアドレスだのポート番号だの、振り分けが必要なケースなんかレアだろう、 (質問者もそんなこと言ってない)ってのはごく普通の感想だと思うけど、異論があるならできれば 具体例上げて反論すればいい。 マウントがどうとか中学生じみたことしか言えない馬鹿は黙ってろって いい歳こいて恥知らずかよ >>374 いう相手を間違えてるよ馬鹿 こういう馬鹿も2ch名物だな >C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください 読めないのは誰なのか 結局、物理的な線は一本なんだろ? なんで他アプリ全員に配るんだ? >>377 お前自身も読めてない。いってるそばから「俺だけ特別」クンか そもそもなぜ喧嘩を売った側でなく売られた側を非難するのか 馬鹿だろお前。 >>379 それは愚問。 ただ、昨日から言ってるように、現実的に考えれば質問者がやりたいことは >>344 みたいな感じである可能性が一番高いと思う。 もちろん、仮想的な複数の通信チャンネルを実現したい可能性も否定はできない 「自分自身」と「馬鹿」って来たら例外を握り潰す君だから そいつこのスレに12年いるぜ 年いくつだろ Hagexを刺した統失くらいはあるのかなw >>382 こいつもいつも思うけど、これで自分をおかしいと思わないんだから幸せでいいよねw 前から誰のこと言ってるのか知らんけど、この意味不明な粘着質、普通にストーカーと同じメンタルだ そもそも匿名掲示板で誰かを「特定」して付きまとってやろう、って動機が理解不能だけど、 普通の人間だったらそんな動機を持つ俺って異常なんじゃないかと悩むと思うんだけど... いや悩まなくても、多少知恵がある人間なら、それって(2chにはよくいる)負けを認めるだけの 精神的強さを持たない弱者の「精神勝利法」なんじゃないか、とか思うと思うんだけど 遅レスですがobjectをdynamicに変えて値を取る事が出来ました こんな便利な型があるんですね ありがとうございました 動機ねえ、スレが荒れそうだからかな 俺に反応して貰って、俺が反応を無視すれば、とりあえず収まるんだよ そう、いつものことだ >>375 232cは物理層の規格や。今だってモデムやTNC繋げる人もいるさ。 >>329 答え出てると思うけど プロセスは3つにする 1つのプロセスはシリアル通信のサービスを提供 他の2つはクライアントとしてシリアル通信の要求をだす 要求はQueueで排他する等で安全策取る プロセス間通信は適当に(ipc使えば簡単かな) >>391 あ、、、要求じゃなくてサーバーが自走して受信のイベントをクライアントに出すのか でもそれも可能だからね おお、コンプリティッドタスク!!! 使ってみよう ありがとうございました ipcは死んだ技術なのかと思ってたけどつかってる人いるんだね デバッグ環境ではうまくいくけど実環境でこけることが多いから最近は使ってなかった 配列内の文字列がtargetStrに含まれてるかどうかを調べるコードなのですが いまどき風な書き方ってありますか? var words = new string[] { "ああ", "いい" }; foreach (var word in words) { if (targetStr.IndexOf(word) != -1) { // hit } } >>396 targetStrの中に"ああ"や"いい"が含まれている判定はIndexOfでいいんじゃね? ループつかわないでLINQのAnyメソッドにしておくとか あ、すまん。おらの見ないでよかと。>>397 見てなかったorz まぁ、words.Any(word => targetStr.Contains(word)) ですっきり書こう、が今時?なんかなぁ? >>400 それ、words.Any(targetStr.Contains) でいけるよ 仮引数いらん >>400-401 https://qiita.com/Temarin/items/4ac0de4f395dcecf5eec このページでは .Where( string.IsNullOrWhiteSpace ); よりも .Where( x => string.IsNullOrWhiteSpace( x ) ); を推奨してるけどいまいちよく分からないから詳しい議論を聞いてみたい >>402 お前は何回Where呼ぶつもりやねんと Whereの引数に渡すデリゲートのnewがネックになるほどタイトなループでWhere呼ぶなら、明らかにその設計自体が問題 どうでもいい机上の空論だから全く気にする必要はない 通常は、そんなことよりもラムダが間に一枚入ることによるメソッド呼び出しのオーバーヘッド増加のほうが問題になる 仮引数を省略してるというより渡してるものが違うだろ。 たとえフレームワークの関数でも、関数自体は俺も渡したくはないな。 xとか付けるやつは意識してないだろうが、引数名も有意義だし。 そもそもこれぐらいならインライン展開されるだろうし。 関数を第一級オブジェクトとして取り回したくないならLinqなんぞ使わず素直にループした方がいいよ 最近はクエリスタイルも悪くないかなって思えてきた 単純に記号が減って読みやすいし ループで書いたらネストするようなクエリを書きやすい Effective C#でもサンプルコードにクエリ形式を使ってるね >>404 関数型の世界では関数をそのまま渡すほうが好まれるよ その方がより宣言的だからな ラムダはダサい 一級オブジェクトとして関数渡してんじゃん?ラムダでも。Funcがdelegateなのが気に食わんのかな。 ダサいってのは主観的な気がする。 あれ、主張がわからんくなってきた 関数を引数にするのはいいけど、その場合必ずラムダで無名関数作ってから渡したいって話なのか >>408 Haskellとかやってみたらわかるぞ 関数型ワールドでは徹底的にプレースホルダを省くのがクールと見做される 理由は知らん 皆様ありがとうございます! 高度過ぎて理解できてませんがContainsとLINQ any調べてやってみますm(_ _)m >>410 そこら辺は言語毎の宗教だろ 他言語を持ち出して比較するのはフェアじゃない 宗教というか、純粋関数型言語とマルチパラダイム言語で記法を比べられてもな >>410 ポイントフリースタイルにこだわりすぎるのはHaskell界隈でも嫌われてるから あんま変な誤解を植え付けんでくれ 仮引数があった方がわかりやすいならつければいい ただ今回のContainsに関してはそれでわかりやすくなる要素が見当たらないので何とも まぁどっちでも普通に読めるから、どっちでもいいよもう デリゲートとラムダ式は別物 メソッドにラムダ式を渡してると思って実際は変換されたデリゲートを渡してる場合もある メソッドのシグネチャーを見てラムダ式をわたしてるのかデリゲートを渡してるのか意識すべき やっぱりラムダ式とかデリゲートとか難しい… >>415 メソッドに渡すのは常にデリゲートだと思ってました ラムダ式を渡す場合とデリゲートを渡す場合、それぞれの例を教えてもらえませんか? >>416 ちょっと書いてたことはあいまいで間違っていたが詳しく知りたいなら c# ラムダ式 式木でググる >>415 お前は何を言ってるんだ ラムダ式は文法要素上はメソッドの一種 メソッドだからデリゲートに暗黙的にキャストされる ラムダ式を渡してるって、その日本語自体がおかしい事に気づくべき。 >>417 勉強になります >>415 の真意は↓の中で4行目だけはコンパイルできないから気をつけましょうということですか? Func<string, bool> a = s => string.IsNullOrEmpty(s); Func<string, bool> b = string.IsNullOrEmpty; Expression<Func<string, bool>> c = s => string.IsNullOrEmpty(s); Expression<Func<string, bool>> d = string.IsNullOrEmpty; このあたりのことがとてもあやふやなので解釈が間違っていたらぜひ教えてほしいです ところで words.Any(targetStr.Contains) とか Func<string, bool> b = string.IsNullOrEmpty; とか これいつからできるようになってたの? ラムダ式導入時からできてた? >>422 C#2.0からだからラムダより前 今では誰も使ってない匿名メソッドと一緒に入った 匿名メソッドもラムダもメソッドなので、メソッドからデリゲートへの暗黙変換がないと 匿名メソッドもラムダもデリゲートをいちいち明示的にnewしないといけなくなる >>422 ラムダ式は関係ないよw C#2.0からデリゲートのインスタンスを明示的にnewしなくてもよくなった http://ufcpp.net/study/csharp/sp_delegate.html#definition words.Any(targetStr.Contains) ; は words.Any(new Func<string, bool(targetStr.Contains)); の省略記法 オマエラ、 今夜ぐらいは仕事の事を忘れて肉でも食いにいけよ あぁそうか、そういえばそのままなデリゲートだったね すっかり忘れてたww 直撮りで申し訳ないんですが youとenemy のHP表示→それぞれ1〜9の値を引くの処理をどちらかのhpが0になるまで続けるように組んだつもりなんですが、whileより上の部分と下の部分しか反映されませんでした どうしたら上手く処理出来るでしょうか https://i.imgur.com/HbKFSfr.jpg >>428 なるほど、確かにこれじゃあ条件が「hpが0以下の時」になっちゃってますね 助かりましたありがとうございます! >>428 =いらないんじゃないか >>427 while (you > 0&& enemy > 0){ もしくは while (true) { (処理) if (you<=0||enemy<=0) break; } >>432 両方hpが無くならないと終わらなかったので後者を使わせて貰いました 参考になります! スクレイピングで、xpathや属性から要素を特定取得できると思いますが、逆に属性を取得することって、できるのでしょうか? @class=取りたい属性←この値です パーサーなに使ってるか知らんけど xpath指定で値とれるなら属性指定すればとれるでしょう ロケーションステップの末端に /@取りたい属性 をつければ取れるだろう あまりこのスレとは関係ないけど >>435 >>436 その属性を取りたいんですよ。 属性 "名"がほしいのか 属性 "値"が欲しいのかがわからないよな 要素の属性を全部取得する https://hokaccha.hatenablog.com/entry/20130819/1376895914 要素の属性を全部取得したいんだけど、 jQuery ではできないっぽい。 DOMの element.attributes を使えばいける >>440 属性の値がほしいんですね、名前はtagNameでとれるので ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる