ふらっと C#,C♯,C#(初心者用) Part140
■ このスレッドは過去ログ倉庫に格納されています
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■関連スレ C#, C♯, C#相談室 Part93 https://mevius.5ch.net/test/read.cgi/tech/1492818720/ ■前スレ ふらっと C#,C♯,C#(初心者用) Part139 https://mevius.5ch.net/test/read.cgi/tech/1533466544/ ■コードを貼る場合は↓を使いましょう。 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 >>615 ここの住人はマウンティングするだけだからやめておけ >>615 そういうのは質問じゃないんだから相談室でやってくれ string.Format などで使う {0} みたいなのよ呼び方って「プレースホルダー」で合っていますか? C#はJavaみたく1ファイル/1クラスじゃないけど 皆さんどうしてます? 短いクラスがいくつかあるとき1つのファイルにまとめます? なんかファイルが多いと読みにくくなるような気もするし 分かれてる方が分かりやすいって人もいるのかな? >>623 試行錯誤しながら開発してる時は同じファイルに複数クラス書いて、後からバラす インターフェイスと実装クラスが一対一で、かつ量が大したことない場合はひとつにまとめたり >>623 基本的にはフォルダ分別だけど、json受信用とかのフィールド定義だけなら1ファイルにまとめちゃうかな。可読性が上がる。 >>623 俺は仕事なら余計な裁量入れるのが面倒だから機械的に1ファイル1クラス 個人的に開発するときは自分が見やすい程度に纏めることもある 基本は1ファイル/1クラスで まとめるのは特別な事情ってのが多数なのかな ありがとうございました あとはEnumとその拡張メソッド定義クラスとかもまとめるかな 1ファイル1クラスって見積の事情じぁあねーだろな? VSからクラスやインターフェース作成すれば1クラス1ファイルが基本だと判ると思うけど >>631 そういうことを質問してるんじゃないだろ >>630 まあこれは半分冗談なんだけどさ、リファクタリングしてコード短くしたら見積もり下がるじゃねーかと先輩に怒られたとかそーゆう話をネットで見たことがあるのでね。高くするためにファイル数増やしてるなんてことない?って話 >>633 LOCでの見積もりはわかるが、ファイル数ってのは初めて聞いた >>635 ファイル数増やせばヘッダーにテンプレコメント書いたりして結果的に行数増やせるってことじゃないかな? ファイル名とクラスが対にしとかないと保守がめんどうだね >>638 コメント以外だって増やせるよね?そんなとこ気にすんの?w >>640 具体的には何? それを見積もりの根拠としてカウントするものなんだよね? >>641 usingもnamespaceも使わないの? どんな小さなclassだってそれなりの規模の中に入れればそれなりの行数消費する class辺りの最低行数を上げれば見積もりだってあがるだろ? こんな細かく説明必要なの?こんなどうでもいい内容で? >>642 usingやnamespaceごときが見積もりに有意な影響を与えるようなプロジェクトなんかやったことなくてごめんね 言い負かされて悔し紛れの捨て台詞 w 誰のこととは言わないけど >>639 そのほうがSCM上扱いやすい ファイル一覧からクラス探しやすい conflictマージが楽 プロジェクトチーム内でPG毎に好き勝手にやると一貫性がなくなる といったところかな とはいえ結合の強いクラスとかパラメーター系のクラスは一緒にするけども >>646 > そのほうがSCM上扱いやすい 理由が書いてない > ファイル一覧からクラス探しやすい IDE使ってないのか? > conflictマージが楽 変わらんと思う > プロジェクトチーム内でPG毎に好き勝手にやると一貫性がなくなる 予め決めればいいだけじゃないの? >>647 じゃあ1ファイルにする合理的な理由はなに? >>648 別に1ファイルにしろなんて誰も言ってないと思うが… 適当にまとめた方が扱いやすいだろって話な そもそもコード量で見積もりするようなプロジェクトやったことないけど namespaceやusingって独自でフレームワークレベルまで全部構築するような大きい案件のほうが無駄に行数稼げそうだなーって感覚 そもそも見積もり上での影響の大きさなんか話題になってないよね どうでもいい糞ルールで売上1%あがりましたー、みたいな話じゃん 広い世の中、そんな案件もあるんじゃないかなー?って思っただけでなんでこんな噛みつかれるんだ? >>651 それJavaじゃね?C#ならnested class ちゃんとした名称知ってる俺スゲーってか? そこまでしてマウント取りたいものかね w c#でもインナークラスと言って間違いちゃうよ 公式でもね むしろnested classなんて聞いたことないわ Javaだとメソッド内でクラス定義できるからネストだと意味的に不自然なんだよ >>652 >>657 こいつ多分勉強出来ないタイプ。 C#の関連書籍にはnestedclassなんて単語は出てこない。 更に用語で検索するとむしろjavaよりの言葉であることが判明。つまり、にわかの誤った認識でドヤ顔しちゃう可哀想な典型。以降スルー推奨 >>658 さすがに可哀想だから教えておくか C#だとユーザー定義型はクラスだけじゃないから、用語としてはclassよりtypeが好まれるの nested types でググってみ? 間違ったことに突っ込み入れて訂正して「マウンティング」とか無いわ 違ったこと言い続けるアホならともかくこの件は>>660 で終わっているし だよな。普通に訂正、反論するだけでなんでもかんでもかんでもマウントはないよな。 喧嘩ごしでやってるならマウントって言ってもわかるけど。 だから>>652 は別にマウントでもないな。まあ細かいとは思うが 初心者向けC#のサイトでGUIプログラムの例があったので入力してみました。 しかし using System.Windows.Controls; でコンパイルエラーになります。 Controlsなんてネーヨ!エラーです。 正しくは、どこでしょうか? ちなみに環境なんですがubuntu16で、MonoDeveloperを使っております。 >>667 System.Windows.Controls名前空間以下の型(例えばControlクラス)は PresentationFramework.dll というDLLで定義されているから そのDLLを参照に追加する必要がある どの型がどのDLLに属しているかは、MSDNやMicrosoft Docsでその型のページを探して 上の方にあるAssemblyの箇所を見ればわかる 例えばControlの場合は https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.controls.control?view=netframework-4.7.2 ただ肝心の、MonoDeveloperで参照を追加する方法は俺には分からない >>665-666 はいはいすごいでチュねー これで満足か? w どうでもいいけどインナークラスなんて使うなよ 未来は誰にも予想できない Guid.NewGuid()が重複した人いますか? >>669 他人の満足とか他人の心配より自分の馬鹿な頭心配しとけよw 2点ほど、 pictureboxに書いた線やらマルやらを書き終えたらボタンを押しもう書けないようにロックするにはどうしたらいいですか? フォーム2で書いたpictureboxの絵をボタン投下時にフォーム1に同じ絵をコピーしたい場合はどうしたらいいですか? >>674 最初のはpicturebox.Imageを書き込み不能にしたいってこと?そっちはわからない 2つめのは用途による picturebox2.Image=picturebox1.Image;//これは1を書き換えるとそのまま2に反映される picturebox2.Image=new Bitmap(picturebox1.Image);//これはいわゆる普通のコピー ImageがBitmapでなくMetaFileならこれは使えないけど >>675 おまえの被害妄想の方が心配だわw どうやったら>>652 がマウントとかそこまで卑屈になれるかww >>677 だからその後のレス見ろよ… > >>654-660 見てもそれ言える? w それ以前に >>1 を読めよ。 >なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 >>679 で、>>654-660 はマウント合戦じゃないとな? そうならもう見解の相違というしかない マウンティングか否かの議論を相談室送りにしてもあっち困るだろ >>676 にキャスト不足とか誰も突っ込んでくれないw >>674 Form1で書いたpictureboxの絵をボタン投下時にForm2に同じ絵をコピーの例 https://ideone.com/ifdvrf Visual StudioでC#の新しいプロジェクトを作って自動生成されたcsを全部消して代わりにダウンロードしたcsを既存の項目として追加して実行 Form1ではマウス左クリック+ドラッグで描画、Form2でCopyをクリックするとその時点のイメージをコピー Enableのチェック外すと描画中止 何だかんだでc#の勉強を始めることになったんですけど、なにぶんそういう知識はまるで無いのでどう勉強したらいいかさっぱりです とりあえず初心者向けの参考書とc#を打てるなんちゃらスタジオがあれば大丈夫でしょうか >>684 自分に合った参考書やサイトを見て勉強しながら VisualStudioで試行錯誤しながらやっていくしかない 自分の周りにC#について教えてくれる人がいるなら どんどん聞いて吸収していくのが一番いい とにかくサンプルコードを打ち込んだりしながら 想像力を働かせて覚えていくしかないよ そのうち視界が開けて来て作りたいものが作れるようになる 作れるようになったらまず、簡単なものからにするべき いきなり難しいものを作ろうとすると潰れるよ(天才なら別だが) アラーム時計やカレンダーや画像ビューアあたりから始めるのがいいと思う >>685 ありがとう、帰りに初心者の自分に合いそうな優しい参考書を買ってみるよ。 とりあえず基礎からみっちり覚えることにするね コンソールアプリにてコンソール自身へのIME制御はハードル高いのでしょうか? ひらがなモード、半角英数モードをコンソールアプリ側で切り替えたいと思い色々ググって試してみたところ、うんともすんとも行きません 大人しくFormアプリにするべきなのでしょうか 簡易HttpServerを作りたいのですが、以下のコードを実行してアクセスすると、"GET"が2回コンソール出力されます。 クライアントからのGETは1回しか受信していないと思うのですが、何故でしょうか。 https://ideone.com/Nr02QL 内容は分からんがConsole.WriteLine以外にOutputStreamのどれかがコンソール出力してたりはしないの? ブラウザでアクセスしたら最初の1回はfaviconリクエストが追加要求されたりするけど RequestのUrl確認した? マーシャリングが面倒でも負荷の高い処理はC++とかで組むべき? >>690 おっしゃる通り、faviconリクエストでした。 本当にありがとうございます。 >>692 劇的に効果あるなら マルチタスクにしてもいいし、GPGPUとか、openCL(作り方によればCPUでもGPUでも動かせるし、併用でフル実行させるとやりきった感半端ない)とか今なら色々あるよ >>692 まずはアルゴリズムの改良を検討する スクリプト言語だとCPUバウンドな処理はC++に比べて数桁遅いから、 許容範囲の処理時間を達成するためにはスクリプトのままアルゴリズムの改良を頑張るよりもC++で力技の方が結果的に早い(速い、ではない)ことも多い 一方C#はせいぜいC++の数倍のオーダーであり、その程度ならアルゴリズムの改良によって簡単に逆転する 夢の最速目指すよりも 仕様決めないときりがないしな SecureStringは使うなって書いてあるんだけど じゃあ代わりに何使えばいいの?教えて HANDLE CreateFile( LPCTSTR lpFileName, // ファイル名 DWORD dwDesiredAccess, // アクセスモード DWORD dwShareMode, // 共有モード LPSECURITY_ATTRIBUTES lpSecurityAttributes, // セキュリティ記述子 DWORD dwCreationDisposition, // 作成方法 DWORD dwFlagsAndAttributes, // ファイル属性 HANDLE hTemplateFile // テンプレートファイルのハンドル ); lpSecurityAttributes 取得したハンドルを子プロセスへ継承することを許可するかどうかを決定する。 個プロセスへの継承とはどういう意味なのでしょうか ここでWin32とかの話はスレチだわな。 セキュリティ記述子の話をすると、所有者セキュリティID, グループSID, 任意 アクセス制御リスト, システムアクセス制御リスト, アクセストークンの話で本が書ける。無難にNULLを入れとけばよい。 C#だとSystem.Intptr.Zeroだな 子プロセスの継承の例は、パイプを使ったプロセス間通信とかでしょうね。 以上、スレチごめんなさい pictureboxの中に400☓800の四角を書き、線ボタン、丸ボタンを作って、それを投下したら四角の中に絵を書いくもの作りました。 @データ番号入力(001)3桁 A上記のpictureboxが表示 B線やら丸やら書く Cデータ内容保存 この繰り替えし。 この時のCで書いた情報の保存方法はどうしたらいいと思いますか?座標点の他にどんな情報があったらいいですかね? もう一回表示したい時とか 保存方法? 好きにしろとしか言えない どんな情報って、そりゃ線やら丸やら書いたときに使った情報だろ 実行中は線引く際のストローク、円を描く際のパラメーターをリストで保存してくのが定番。アンドゥリドゥのために。 保存するときは、imageに変換しても良いし、描画履歴の情報を保存しても良い。 何がしたいかによるとしか >>698 https://github.com/dotnet/platform-compat/blob/master/docs/DE0001.md > The general approach of dealing with credentials is to avoid them and instead rely on other means to authenticate, > such as certificates or Windows authentication. 資格情報を扱う一般的な方法は、資格情報を回避し、代わりに証明書やWindows認証などの他の認証方法に依存することです。 回答になってないな…。 自作のコントロールでFontプロパティを実装しようと考えています。 FontはIDisposableを継承しているので適切なタイミングでDisposeを実行する必要があると思うのですが ・コントロールのDispose内 ・プロパティのsetter この2箇所でDisposeの呼び出しを実装すれば大丈夫ですか?他にDispose呼び出しが必要な所は無いですか? 具体的には↓のように実装しようと思っています https://ideone.com/rJl7Fj >>707 別のオブジェクトが同じFontの参照を握ってる可能性もあるから 自分の都合で勝手にDisposeするわけにもいかんでしょう。 ほっておくしかないのでは。 どうしても気になるならFontプロパティのセッターでFontの参照そのものをバッキングフィールドに キャッシュするのではなく、等価なFontを再構築可能な情報をキャッシュするようにするとか 本当はこういうプロパティーの実装はよくないみたいだけど(ゲッターの返す値が毎回別のオブジェクトになるから) A : myControl.Font = new Font("MS UI Gothic", 9); B : myControl.Font = mainForm.Font; 毎回上記のAのようにするならDisposeしても大丈夫だけどBみたいなことをすると mainFormのフォントが勝手にDisposeされることになるからまずいから 自動プロパティとかにしてDisposeはGCに任せるか、内部的にはフォント名、サイズとかの 情報だけ持たせてgetterで毎回newする形にするしかないってことですかね? >>707 Control継承するとFontプロパティもついてくると思うけど別に使うのかな? >>709 蛇足気味だけど厳密にやりたいなら set { Font ft = value as Font; if (null != ft) { if (null != _myFont) _myFont.Dispose(); _myFont = new Font(ft.FontFamily, ft.Size, ft.Style, ft.Unit); } } こんな感じかな。他はそのままで set { _myFont = value; }でも大した問題起こらない気もする もっとまじめに考察したいならILSPYでControlのFontプロパティがどうやっているか追っかけて確認してみるとか >>695 >>696 ありがとう まずはアルゴリズムから見直してみます 効果音(WAVファイル)鳴らしたいのだけど、VisualStudioのどこからインポートすればいいのでしょうか? プログラム内に、リソースとして音楽ファイルを埋め込みたいのだと思われます ビルド完了時にファンファーレなどを鳴らしたいのだと思われます [Ctr]キー + [r]キーを押して、mmsys.cpl と入力して[Enter]キー 「サウンド」タブのプログラムイベントにあったはずだ ってか、これはスレチだろ 単にwavファイルを頭から再生するだけならSoundPlayerクラスでいいだろうけど ループポイントいじったり波形まで触るような凝った再生するならWin32APIを使わないとダメだろうな ってことが聞きたいんじゃね? ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる