X



ふらっと C#,C♯,C#(初心者用) Part140

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 9e9f-LwdJ)
垢版 |
2018/10/04(木) 18:56:38.41ID:JnxMNCXd0
「どんなにくだらない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
0620デフォルトの名無しさん (ワッチョイ 3903-k2K5)
垢版 |
2018/11/21(水) 23:20:39.67ID:JM/nMfDs0
よく言った
0623デフォルトの名無しさん (ワッチョイ d3a5-ylOc)
垢版 |
2018/11/23(金) 09:37:10.04ID:ApOE6+zI0
C#はJavaみたく1ファイル/1クラスじゃないけど
皆さんどうしてます?
短いクラスがいくつかあるとき1つのファイルにまとめます?
なんかファイルが多いと読みにくくなるような気もするし
分かれてる方が分かりやすいって人もいるのかな?
0625デフォルトの名無しさん (ワッチョイ ffd2-nmhv)
垢版 |
2018/11/23(金) 09:41:35.57ID:w9GMx5b20
>>623
試行錯誤しながら開発してる時は同じファイルに複数クラス書いて、後からバラす
インターフェイスと実装クラスが一対一で、かつ量が大したことない場合はひとつにまとめたり
0628デフォルトの名無しさん (ワッチョイ d3a5-ylOc)
垢版 |
2018/11/23(金) 10:13:21.65ID:ApOE6+zI0
基本は1ファイル/1クラスで
まとめるのは特別な事情ってのが多数なのかな
ありがとうございました
0633デフォルトの名無しさん (ワッチョイ cf81-xbeM)
垢版 |
2018/11/23(金) 13:00:59.52ID:OqByd5h70
>>630
まあこれは半分冗談なんだけどさ、リファクタリングしてコード短くしたら見積もり下がるじゃねーかと先輩に怒られたとかそーゆう話をネットで見たことがあるのでね。高くするためにファイル数増やしてるなんてことない?って話
0642デフォルトの名無しさん (ワッチョイ ff7f-wvC2)
垢版 |
2018/11/23(金) 18:11:36.90ID:t3Fo6DVq0
>>641
usingもnamespaceも使わないの?
どんな小さなclassだってそれなりの規模の中に入れればそれなりの行数消費する
class辺りの最低行数を上げれば見積もりだってあがるだろ?
こんな細かく説明必要なの?こんなどうでもいい内容で?
0646デフォルトの名無しさん (ワッチョイ 6f7f-NVvz)
垢版 |
2018/11/23(金) 19:15:37.38ID:+XjaJ0Hq0
>>639
そのほうがSCM上扱いやすい
ファイル一覧からクラス探しやすい
conflictマージが楽
プロジェクトチーム内でPG毎に好き勝手にやると一貫性がなくなる
といったところかな
とはいえ結合の強いクラスとかパラメーター系のクラスは一緒にするけども
0647デフォルトの名無しさん (ドコグロ MM1f-I6zH)
垢版 |
2018/11/23(金) 19:26:33.26ID:EY7/YwthM
>>646
> そのほうがSCM上扱いやすい
理由が書いてない

> ファイル一覧からクラス探しやすい
IDE使ってないのか?

> conflictマージが楽
変わらんと思う

> プロジェクトチーム内でPG毎に好き勝手にやると一貫性がなくなる
予め決めればいいだけじゃないの?
0650デフォルトの名無しさん (ワッチョイ ff7f-wvC2)
垢版 |
2018/11/23(金) 20:38:29.58ID:t3Fo6DVq0
そもそもコード量で見積もりするようなプロジェクトやったことないけど
namespaceやusingって独自でフレームワークレベルまで全部構築するような大きい案件のほうが無駄に行数稼げそうだなーって感覚

そもそも見積もり上での影響の大きさなんか話題になってないよね
どうでもいい糞ルールで売上1%あがりましたー、みたいな話じゃん
広い世の中、そんな案件もあるんじゃないかなー?って思っただけでなんでこんな噛みつかれるんだ?
0658デフォルトの名無しさん (ワッチョイ cf81-xbeM)
垢版 |
2018/11/24(土) 13:19:32.37ID:QDlc1GIX0
>>652
>>657
こいつ多分勉強出来ないタイプ。
C#の関連書籍にはnestedclassなんて単語は出てこない。
更に用語で検索するとむしろjavaよりの言葉であることが判明。つまり、にわかの誤った認識でドヤ顔しちゃう可哀想な典型。以降スルー推奨
0666デフォルトの名無しさん (ワッチョイ 231e-nwd5)
垢版 |
2018/11/24(土) 15:24:23.92ID:MaS7Khub0
だよな。普通に訂正、反論するだけでなんでもかんでもかんでもマウントはないよな。
喧嘩ごしでやってるならマウントって言ってもわかるけど。
だから>>652は別にマウントでもないな。まあ細かいとは思うが
0667デフォルトの名無しさん (ワッチョイ c336-CvEX)
垢版 |
2018/11/24(土) 15:50:14.83ID:X9wbQk6q0
初心者向けC#のサイトでGUIプログラムの例があったので入力してみました。
しかし
 using System.Windows.Controls;
でコンパイルエラーになります。 Controlsなんてネーヨ!エラーです。
正しくは、どこでしょうか?
ちなみに環境なんですがubuntu16で、MonoDeveloperを使っております。
0668デフォルトの名無しさん (アウアウウー Sa27-tiSx)
垢版 |
2018/11/24(土) 16:05:53.32ID:KjMkY0qza
>>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で参照を追加する方法は俺には分からない
0674デフォルトの名無しさん (ワッチョイ ff9b-ZAsc)
垢版 |
2018/11/24(土) 16:59:12.41ID:ntzumrir0
2点ほど、
pictureboxに書いた線やらマルやらを書き終えたらボタンを押しもう書けないようにロックするにはどうしたらいいですか?

フォーム2で書いたpictureboxの絵をボタン投下時にフォーム1に同じ絵をコピーしたい場合はどうしたらいいですか?
0676デフォルトの名無しさん (ワッチョイ cf9a-81xu)
垢版 |
2018/11/24(土) 17:08:20.29ID:EV3fc7VB0
>>674
最初のはpicturebox.Imageを書き込み不能にしたいってこと?そっちはわからない
2つめのは用途による
picturebox2.Image=picturebox1.Image;//これは1を書き換えるとそのまま2に反映される
picturebox2.Image=new Bitmap(picturebox1.Image);//これはいわゆる普通のコピー
ImageがBitmapでなくMetaFileならこれは使えないけど
0683>>676 (ワッチョイ cf9a-81xu)
垢版 |
2018/11/24(土) 21:38:37.28ID:EV3fc7VB0
>>676にキャスト不足とか誰も突っ込んでくれないw

>>674
Form1で書いたpictureboxの絵をボタン投下時にForm2に同じ絵をコピーの例
https://ideone.com/ifdvrf
Visual StudioでC#の新しいプロジェクトを作って自動生成されたcsを全部消して代わりにダウンロードしたcsを既存の項目として追加して実行
Form1ではマウス左クリック+ドラッグで描画、Form2でCopyをクリックするとその時点のイメージをコピー
Enableのチェック外すと描画中止
0684デフォルトの名無しさん (スップ Sd1f-cRgy)
垢版 |
2018/11/26(月) 11:03:50.04ID:SESNl2J0d
何だかんだでc#の勉強を始めることになったんですけど、なにぶんそういう知識はまるで無いのでどう勉強したらいいかさっぱりです
とりあえず初心者向けの参考書とc#を打てるなんちゃらスタジオがあれば大丈夫でしょうか
0685デフォルトの名無しさん (ワッチョイ cf81-pqc8)
垢版 |
2018/11/26(月) 11:21:34.31ID:SVaivieI0
>>684
自分に合った参考書やサイトを見て勉強しながら
VisualStudioで試行錯誤しながらやっていくしかない

自分の周りにC#について教えてくれる人がいるなら
どんどん聞いて吸収していくのが一番いい

とにかくサンプルコードを打ち込んだりしながら
想像力を働かせて覚えていくしかないよ
そのうち視界が開けて来て作りたいものが作れるようになる

作れるようになったらまず、簡単なものからにするべき
いきなり難しいものを作ろうとすると潰れるよ(天才なら別だが)
アラーム時計やカレンダーや画像ビューアあたりから始めるのがいいと思う
0687デフォルトの名無しさん (ワッチョイ e3b1-Kv/S)
垢版 |
2018/11/26(月) 15:45:06.75ID:qFYm+H7r0
コンソールアプリにてコンソール自身へのIME制御はハードル高いのでしょうか?
ひらがなモード、半角英数モードをコンソールアプリ側で切り替えたいと思い色々ググって試してみたところ、うんともすんとも行きません
大人しくFormアプリにするべきなのでしょうか
0688デフォルトの名無しさん (ワッチョイ 238a-J8rx)
垢版 |
2018/11/28(水) 03:51:20.87ID:W51sdDs/0
簡易HttpServerを作りたいのですが、以下のコードを実行してアクセスすると、"GET"が2回コンソール出力されます。
クライアントからのGETは1回しか受信していないと思うのですが、何故でしょうか。
https://ideone.com/Nr02QL
0696デフォルトの名無しさん (ブーイモ MM27-iCMB)
垢版 |
2018/11/28(水) 13:26:20.94ID:cyvzVFzDM
>>692
まずはアルゴリズムの改良を検討する
スクリプト言語だとCPUバウンドな処理はC++に比べて数桁遅いから、
許容範囲の処理時間を達成するためにはスクリプトのままアルゴリズムの改良を頑張るよりもC++で力技の方が結果的に早い(速い、ではない)ことも多い
一方C#はせいぜいC++の数倍のオーダーであり、その程度ならアルゴリズムの改良によって簡単に逆転する
0698デフォルトの名無しさん (ワッチョイ 839f-nfAC)
垢版 |
2018/11/28(水) 16:41:31.36ID:JaydQRfC0
SecureStringは使うなって書いてあるんだけど
じゃあ代わりに何使えばいいの?教えて
0699デフォルトの名無しさん (スッップ Sd1f-1ob7)
垢版 |
2018/11/28(水) 17:06:53.33ID:BP3XEZ+Jd
HANDLE CreateFile(
LPCTSTR lpFileName, // ファイル名
DWORD dwDesiredAccess, // アクセスモード
DWORD dwShareMode, // 共有モード
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // セキュリティ記述子
DWORD dwCreationDisposition, // 作成方法
DWORD dwFlagsAndAttributes, // ファイル属性
HANDLE hTemplateFile // テンプレートファイルのハンドル
);


lpSecurityAttributes
取得したハンドルを子プロセスへ継承することを許可するかどうかを決定する。

個プロセスへの継承とはどういう意味なのでしょうか
0701デフォルトの名無しさん (ワッチョイ 7fc3-EZ1D)
垢版 |
2018/11/28(水) 18:19:28.62ID:urROSKq40
ここでWin32とかの話はスレチだわな。

セキュリティ記述子の話をすると、所有者セキュリティID, グループSID, 任意 アクセス制御リスト, システムアクセス制御リスト, アクセストークンの話で本が書ける。無難にNULLを入れとけばよい。

C#だとSystem.Intptr.Zeroだな
0703デフォルトの名無しさん (ワッチョイ ff9b-ZAsc)
垢版 |
2018/11/28(水) 19:36:37.13ID:whfYkWqO0
pictureboxの中に400☓800の四角を書き、線ボタン、丸ボタンを作って、それを投下したら四角の中に絵を書いくもの作りました。


@データ番号入力(001)3桁
A上記のpictureboxが表示
B線やら丸やら書く
Cデータ内容保存
この繰り替えし。

この時のCで書いた情報の保存方法はどうしたらいいと思いますか?座標点の他にどんな情報があったらいいですかね?
もう一回表示したい時とか
0705デフォルトの名無しさん (ワッチョイ 6f93-2v1H)
垢版 |
2018/11/28(水) 21:24:08.05ID:WfNZCJmP0
実行中は線引く際のストローク、円を描く際のパラメーターをリストで保存してくのが定番。アンドゥリドゥのために。
保存するときは、imageに変換しても良いし、描画履歴の情報を保存しても良い。
何がしたいかによるとしか
0706デフォルトの名無しさん (ワッチョイ f3c3-pqc8)
垢版 |
2018/11/28(水) 21:33:46.64ID:wlMFFO6p0
>>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認証などの他の認証方法に依存することです。

回答になってないな…。
0707デフォルトの名無しさん (ワッチョイ 234a-tprL)
垢版 |
2018/11/29(木) 11:59:38.79ID:w8w+eTQL0
自作のコントロールでFontプロパティを実装しようと考えています。

FontはIDisposableを継承しているので適切なタイミングでDisposeを実行する必要があると思うのですが
・コントロールのDispose内
・プロパティのsetter
この2箇所でDisposeの呼び出しを実装すれば大丈夫ですか?他にDispose呼び出しが必要な所は無いですか?

具体的には↓のように実装しようと思っています
https://ideone.com/rJl7Fj
0708デフォルトの名無しさん (アウアウエー Sa52-70Pl)
垢版 |
2018/11/29(木) 12:58:03.97ID:GYTobZd0a
>>707
別のオブジェクトが同じFontの参照を握ってる可能性もあるから
自分の都合で勝手にDisposeするわけにもいかんでしょう。

ほっておくしかないのでは。

どうしても気になるならFontプロパティのセッターでFontの参照そのものをバッキングフィールドに
キャッシュするのではなく、等価なFontを再構築可能な情報をキャッシュするようにするとか

本当はこういうプロパティーの実装はよくないみたいだけど(ゲッターの返す値が毎回別のオブジェクトになるから)
0709デフォルトの名無しさん (ワッチョイ 234a-tprL)
垢版 |
2018/11/29(木) 13:59:52.58ID:w8w+eTQL0
A : myControl.Font = new Font("MS UI Gothic", 9);
B : myControl.Font = mainForm.Font;

毎回上記のAのようにするならDisposeしても大丈夫だけどBみたいなことをすると
mainFormのフォントが勝手にDisposeされることになるからまずいから
自動プロパティとかにしてDisposeはGCに任せるか、内部的にはフォント名、サイズとかの
情報だけ持たせてgetterで毎回newする形にするしかないってことですかね?
0710デフォルトの名無しさん (ワッチョイ 1a9a-hssQ)
垢版 |
2018/11/29(木) 20:54:36.67ID:LaO1Tjsi0
>>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プロパティがどうやっているか追っかけて確認してみるとか
0717デフォルトの名無しさん (ワッチョイ 5fa5-DrDc)
垢版 |
2018/11/30(金) 20:20:52.54ID:3yrtWl4o0
単にwavファイルを頭から再生するだけならSoundPlayerクラスでいいだろうけど
ループポイントいじったり波形まで触るような凝った再生するならWin32APIを使わないとダメだろうな
ってことが聞きたいんじゃね?
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況