ふらっと 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 すみません。 予想通りに動いたと思ってたんですが、"Value = 値" という方法で値を設定すると反映されません。 どうすればよいでしょうか・・・ http://ideone.com/UcN1cB Value = DateTime.Parse(Text); じゃなくて DateTime.TryParseを使って、日付に変換できる場合のみセット そりゃbase.Valueに値設定しなけりゃ表示変わらんでしょ お知恵をお借りしたく。。。 public struct LogsData { public double total; public long starttime; } var aaa = new LIST<LogsData>(); totalだけが入ったLISTを作りたい ぶん回す方法はできたのだがもっとスマートな方法はないだろうか。 var bbb = new List<double>(); foreach (var ccc in aaa) { bbb.Add(ccc.total); } var bbb = aaa.Select( x=> x.total ).ToList(); >>14 なる程 webを質問するとC#の枠組みを超えてしまうのでアレですが有用なアイデアありがとうございます >>17 てっきりbitmapは明示的にdisposeしないとメモリリークするのかと思ってたんだけど 都度GC.Collect()してみたらdisposeしなくても大丈夫だったわ ありがと >>26 disposeすると今すぐメモリを解放してくれる。しないとガベコレが走るタイミングまで待たされる。GC.Collectは今すぐガベコレする。 >>27 大手の担当者(客)とか絶対理解できないから定期実行(十分に一度)してるわ やらないと リークだリークだうるせぇんだこれが >>27 bitmapを凄い勢いで作るプログラムを前に書いたら メモリ不足で例外を吐いた事があったのよ んでGCで解放されないのかと思ってたわ >>29 でもVSのモニタを見るとGCって結構な短期間で動いてくれるんだよな GC.Collectはブラシーボ効果しかない Bitmapはファイナライザを実装してるから2回GCが走らないと解放されない あと頻繁に動いてるのは最も浅い世代のGen0GCで、GCを生き残って昇格してしまったオブジェクトを回収させるにはGC.Collectは有効 >>30 遅いマシンで 割と重めのアプリを一日経ってからやってみ 3分ぐらいはフリーズするよ stop the worldというだけはある >>30 試してみたらGCが一度も走らずに即死した GC.Collectしないとマズそう https://i.imgur.com/sR1A0ME.jpg 時間はかかっても、MSゴシックなら正常に動作するんですが 游ゴシックを指定すると、なぜか文字が重なり合ったりして正常に表示されません g.DrawString(new String('@', 5000000), drawFont, Brushes.Black, 0, 0); >>34 描画先に十分なスペースはあるの? フォントサイズ減らしたら改善するとかは無い? それで無理なら一行ずつ描画するしかないな あ、Rectangle指定しないと折り返さないのか? https://dobon.net/vb/dotnet/graphics/drawstring.html >>36 意図的に無茶な指定しているのなら不具合が起こってもしょうがないと思う Webbrowser で表示されているある部分をクリックしてAjaxで動的にHTMLが変化する場合 documentcompleted は発生しませんが HTMLの変化を検知するにはどうするのがいいのでしょうか? タイマーを使ってWebbrowser のHMTLの内容を比較するくらいしかないですかね? >>38 UWPのWebViewなら、スクリプトを直接呼び出して完了待ちとか出来るよ FormsやWPFからでも使えるようになっているみたいだから頑張ればなんとかなる 勿論UWPで作るってのもアリだが >>39 理想的な動作です UWPでやってみます ありがとうございます どんな処理に対してどんな例外処理をすればよいのか理解出来ないのですが、 「〇〇メソッドが投げる可能性がある例外」という感じの一覧みたいなものってないでしょうか? >>41 Docsの.NET Framework API リファレンスの各メソッドの説明に載ってる >>41 他にも、VisualStudio上でメソッドにカーソルを合わせると出てくるツールチップで「例外」箇所に型が載っていたり F12で定義に移動した後のコメント中で「例外」箇所に型と理由が載っていたりする >>38 WinFormのWebBrowserでajaxで読み込みはタイマーみたいなの使って取れてる ざっくりで失礼します。 面白半分にc#でエロや風俗系を作れたらいいなと思ったのですが案ありますか? なかなか思いつかなくてw >>45 C#+Unityのエロゲなんかいっぱいあるでしょ そしてこの板で聞くことじゃない >>46 言われてみればそうですね 失礼しました。 変態さんでいっぱいだ 前スレのエロ画像スクレイピングマンは成功したのかな エロ画像なんて厳選して保存しないとすぐ500GBぐらいいくだろうに 動画ならともかく画像で500GBはベテランの領域。 コンテキストメニューを定義して、それを別コントロールに割り当てて、 それを更に別のフォームからクリックで実行したく、下記の構造にしているのですが、ControlExの公開プロパティになっている点に、なんとなく違和感感じています。 もうちょっと綺麗な構造に出来ないでしょうか? public class ContextMenuEx : ContextMenu { public ToolStripItem OpenMenu { get; private set; } } public class ControlEx : Control { public ContextMenuEx ContextMenuEx { get; set; } public ControlEx() { ContextMenu = ContextMenuEx; } } public class ViewControl : Form { private ControlEx MyControlEx = new ControlEx(); public ViewControl() { MyControlEx.ContextMenuEx.OpenMenu.Click += //クリックイベント } } コンテキストメニューがnewされてないから例外が出るね 普通にメニュー出してsendmessageでええよ? なんとなくの違和感なんて知らんが 要するに何をどうしたいんだか 違和感 スポーツ選手みたいやなw 右肩に違和感を・・・ ○○.cppに違和感を感じ納品を見送ったとのことです 質問する技術が足りてない とにかく違和感とかいう抽象的なことじゃなくて具体的に 配列添字演算子付のpropertyはありますか? イメージ的には public int MyIDList[int]{ set{this.myIDList[idx] = value;} get{return this.myIDList[idx];} } みたいな事がしたいです できない インデックスの渡し方しか考えてないようだけど それだとLengthやforeachで回せる機構など 配列に必要な関数群も仕組みもないだろ? 素直にListから継承させるか インデックスを引数で渡せばいいじゃない それはクラスにインデクサが付く話だし プロパティには持たせられないじゃん >>63 質問者がやりたいのはそのリンク先の「余談: VB のインデックス付きプロパティ」のこと C#で出来ないようにしている理由はリンク先に書かれているし >>62 も書いてくれている まあたださ class p { List<double> da; double center[int index]{ get {return (da[index+1] - da[index]; } } } みたいに、クラスの配列データを元に 仮装配列的なものを作りたいんだろうなと思う 昔俺もやりたくて調べまくったよ これを今のc#で実現しようとすると、わざわざプロパティごとにクラス化なきゃいけないし クラスの生成や配列を振る舞うクラスに元データを渡すのとか非常に面倒になる そこまで出来たとしてもメリットはインデックスを[]で渡せるだけで 配列(っぽいもの)ですよとコード上で示せるだけ 普通に関数実装で[]表記以外は同じことが出来るので コードの美しさ的には不満があるけど 実装上は困らないんだよな 単純に関数の引数は()でも[]でも囲めるようにしてくれたら簡単なんだけどね constって継承できないもんかな 継承クラスで定数を変えたいんだけど 何か上手い方法はないだろうか できないので、諦めてオーバーライド可能なメンバでやって そういう機能が欲しいなら、githubで提案してくるとよい ここで喋っても入らないのでそのつもりで高説は垂れるように >>68 隠蔽(new)は出来るでしょ 継承というかoverrideはインスタンスメンバーを上書きするものであり、 constは本質的にstaticメンバーなんで、継承でconstを変更という発想はそもそも矛盾してるんじゃないの? constは埋め込みだから無理 コーディングを見やすくしてるだけなんよ static virtual readonly とか…できるんかな書いたことないけど 単純にこんな実装がしたいんだよね オブジェクトの詳細で表示する名称表示とかさ class BaseObject{ const virtual string ObjectName=“(基底クラス)“; string GetObjectName(){return ObjectName;} } class TextObject:BaseObject{ const override string ObjectName=“テキストボックス“; } class LineObject:BaseObject{ const override string ObjectName=“直線“; } class EllipseObject:BaseObject{ const override string ObjectName=“楕円“; } 大して文字数も変わるわけでもないし、やっぱこう実装するよりないか override string ObjectName{ return “楕円“; } >>68 定数を返すだけの読み取り専用のプロパティにする >>72 読み取り専用プロパティはもうちょっとコンパクトに書ける override string ObjectName => "楕円"; >>75 おお、いいですね!活用させてもらいます! MacでC#勉強してみたいんですがVisual Studio入れないと厳しいですか? VS Codeだけでは難しいですか? MacでC#を勉強するメリットはないから他の言語にしとき 唯一意味があるのはUnityでゲーム作る用途だから、Unity入れてC#やってみるのはまあアリ >>79 言語の学習目的なら.NET Core SDKとVSCodeでじゅうぶん >>79 変な意地をはらずに一番イージーな道を選択した方がいいよ つまらないことに時間を浪費したいの?w >>83 その理屈だとBootcampでWindowsをインストールするのが最善ということになってしまう VS for Macなんかほとんど誰も使ってないんだから、時間の浪費という意味ではVSCodeといい勝負だわ Listでindex aのアイテムをindex bにインサートするスマートな方法はないだろうか aをremoveしてbにインサートすると、a>=bならいいけど、a<bの時 removeでインデックスがズレるので狙いより1つ下に行ってしまう 一番下だと範囲外の例外が起きてしまう できればこれを実行するメソッドを作って既にあるList<T>を拡張したいんだけど ヘルパークラス的なものって作れないかな? >>85 「拡張」という言葉の意図がわからないけど ヘルパークラス作って静的メソッドや拡張メソッドとして定義すれば良いんじゃない? List<T>を継承したオレオレListでメソッド定義、という方法は止めとけ >>87 2 to 9なのに1が9に移動しちゃうでしょ? 申し訳ない、コードを見直したら質問の前提を間違えてました やりたかったのは List<T> というリストがあった場合に リストに入っているかわからないオブジェクトaを リストに入っているオブジェクトbの1つ後に挿入する …というメソッドを作りたかったんです List<T>.MoveAfter(T b,T a) //リスト内bの後ろにaを挿入、aがList内にある場合は元の位置から移動させる で、このメソッド自体の実装はできているんですが いただいたサンプルのextensionsの記述がよくわからず質問しました おかげでうまく実装できました、ありがとうございます! >>79 他の人も言ってるけど、unityでC#使ってるよ C#自体の勉強ならこれで出来る 当然、WindowsアプリをC#で作れるようなスキルは得られないが c#とvsの至れり尽くせり感に慣れすぎて他の開発環境でできなくなりました そうなんだよなー VSは使いやすすぎる Delphiの開発者を引き抜いてきただけあるわ 最低限IDEで自動ビルドなら慣れれば貧弱な環境も楽しいよ インテリセンスなんかないから長い識別子をダブルクリック & Ctrl + C ⇒ Ctrl + V ばっかりしてたら左手が腱鞘炎になっちゃったけどw 秀丸御殿が建ってる偉大なエディタに対して「ですら」って 大昔試用したことあるけどまだ存在するんだw いい加減タブ化とかしたのかな しかし、日本人も真面目に作者に金払って使う人結構いるんだね いや秀丸はすげーと思うけど言語解析までするIDEと比較してテキストエディタですら入力補完あるのにコピペ頑張らんでもええやん、って話 タブ化は10年前くらいには対応してたはず vscodeも良いけど軽さはやっぱ秀丸のほうが良いから今でもちょいちょい起動するよ Nif●y の決済システムってまだ稼働してるんか 最近使ってないから知らんけど 俺も秀丸とvscodeの併用だね 秀丸は起動が速いから xyzzyなら一時期使ってたなあ 道具にこだわるたちじゃないんで、金払ってまで禿丸さんを使う気にはなれなかった きたああああああああああああああああああああああああああああ https://i.imgur.com/Q7qeopR.jpg >>102 道具にこだわらないのにWindowsは金払ってまで使うんだ ここにいる人は趣味プログラマーが多いんかな 本業なんだけど経験ないC#開発もやらないといけなくなったって人も結構いたりする? windowsはみんな使ってるからこだわってるとは言わない。普通。 >>106 本業だけどWin32から.NETへの移行期はC#の経験ないところから始めたね 同じく本業。 事前に経験ってほどのものがあったことなんかほとんどないような気がするけどなあ。 最近なら python をやってみたり。これ ruby っぽくてそんなに好きになれそうにないや。C# は大好き。 本業C#erだわ 趣味時代はCとかPythonとかやってた 組み込みだけど本業の開発よりc#でGUI作ってるほうが楽しい! 聞きたいこと ライブラリ内の数値を、メインのプログラムで参照した。 arduinoを動かそうとプログラムを書いているのですが、 hoge.h 内に、 enum class Button : uint16_t{ A = 0x0001, B = 0x0002}; というクラスがあります。 これを、 #include <hoge.h> void setup() { const int BtPt[2] = {Button.A,Burron.B}; } のように、代入したいんですけど、うまくいきません。 どうすれば参照できるんでしょうか。 そもそも概念的に間違ってるのかもしれませんが、、、 俺も最近CからC#に移行したんだが、下痢ゲートだとか阿弥陀式とか、ワケ分からないw ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる