ふらっとVisual C#,C♯,C#(初心者用) Part101
5時間ぐらいスレ立ってなかったのか
4 :
デフォルトの名無しさん :2013/01/09(水) 12:23:38.27
通は会話もC#で行う
リアルで2ちゃん用語使っちゃう人みたいだね
質問させてください。 WPF+MVVMモデルで、 「ボタンをクリックしたら、テキストブロックにボタンの名前(Content)が表示される」というプログラムを作りたい場合、 どのように実装したらよいものでしょうか。 コードビハインドを使えば簡単そうなのですが、 MVVMの勉強をしているためコードビハインドを避けて実装したいと考えています。 Viewにあるボタンの名前をどうにかしてViewModelに持ってきて、その名前を使ってテキストブロックの文字を更新したいのですが、 ボタン名を持ってくるにはどうすればよいのかわからず・・・ 初心者なので要領を得ない質問になっているかもしれませんが、 エスパーでも結構ですのでどなたかお答えいただけないでしょうか。
私にはわかりませーん
WindowsフォームのchartコントロールでLineチャートを使っています。 配列からデータを追加していくとき、数値がnullの部分があるので、そこは空白にして飛ばしたいと考えています。 chart1.Series[0].Points.Add(???) の???には何を入れればいいのでしょうか? (nullやDouble.NaNを入れてみると、nullの場合は描画に失敗し、NaNの場合は0として描画されてしまいます。 EmptyPointStyleはAverageに設定してあります。) アドバイスをお願いします。
abstract 宣言された get のみのプロパティをオーバーライドしたいんだけど: public abstract string Hoge { get; } ↓ public override string Hoge { get { return "hoge"; } } → Bは継承抽象メンバーA.Hoge.setを実装しません public override string Hoge { get { return "hoge"; } set { } } → Bは継承抽象メンバーA.Hoge.setを実装しません → Aに、オーバーライド可能な set アクセサーがないため、オーバーライドできません public string Hoge { override get { return "hoge"; } } → そもそも構文エラー どう書けば良いんでしょうか???
無理。 派生されたとき、setに変なオーバーライドされないようにってことなんだろうが、 そこは、派生クラスの責任として捉えるしかない。 制約するなら getのみのプロパティを作って、基底クラスでは、別のメソッドなりでフィールドを更新するぐらいだろう。
マジで! これ Windows Azure のクラスなんだけど… Microsoft.WindowsAzure.ServiceRuntime.LocalResource ← これのテスト用モックを作ってます
getのみの抽象プロパティは問題なくオーバーライドできるはずだけど ドキュメントに出てないだけで多分本当はgetのみじゃなくて{ get; internal set; }なんだろうな LocalResourceクラス見てみたけど、この程度なら全部ラップしてインターフェイス被せとけばいいだろ
てすてす
>>6 ボタン名をVMに持ってきとけば?
Button.Contentもバインディング
Windows AzureはC#の仕様全くわかってない奴が作ってるのか
abstractプロパティでget internal setか・・・ 嫌がらせには最高だな
17 :
9 :2013/01/10(木) 19:36:31.92
なるほど、internal set で宣言されてたらこうなりそうですねー。 ありがとうございました orz
18 :
デフォルトの名無しさん :2013/01/10(木) 20:13:08.86
すみません。 たとえばTeacupの掲示板に、毎日定時連絡を自動で書き込みたいのですが これの方法って紹介しているところありますかね。 信じて欲しいのですが、決して嵐がしたいわけではありません。
C#としてはWebRequestの使い方ぐらいしかポイントがないんで、自分でHTMLの勉強をして勝手に作って
パブリック継承できない抽象クラスってMSのライブラリでは珍しくないが コンストラクタがinternalじゃないのは不親切だな
ILSpyなんかで何となくSystem.〜〜辺りを眺めてると、 そのクラス公開してくれよっと思ってしまう。
貼り付けたWindowsMediaPlayerコントロールをキャプチャすることは出来ないでしょうか? GraphicsのCopyFromScreenではコントロールの上に他のフォームがあるとそれもキャプチャしてしまい、 User32.dllのPrintWindowでは真っ黒になってしまいます。
たぶん動画の部分は、Directなんたらになってるから 普通のやり方では無理だったはず。
25 :
23 :2013/01/11(金) 18:03:46.73
>>24 コントロールじゃないWindows付属のも、キャプチャするのにプロパティ変えなきゃですしね・・・。
他の方法を考えてみます、ありがとうございました。
しかしあれだな、Win8に慣れるとデスクトップアプリなんか作る気にならなくなるな まじでタッチ主体の時代くるでこれ
ソフトウェアでうちの液晶モニタもタッチ対応にしてください
>>26 バカにしてたけど用途によってはいいね
ファイルを意識せず扱えるところとか
>>28 UIも言われるほど悪くないと思う
ってかタブに慣れたらノートPCなんかポイポイ〜だよ
最低の入力デバイスであるトラックパッドよりは早いだろ
public Form1() { InitializeComponent(); MyClass mc = new MyClass(); mc.Rect.Add(new Rectangle(0, 0, 50, 30)); mc.Rect[0].Width = 40; } public class MyClass { List<Rectangle> rect = new List<Rectangle>(); public List<Rectangle> Rect { get { return this.rect; } set { rect = value; } } } mc.Rect[0].Width = 40;←この行が実行するまでもなくエラーなんですが どう書けば値を変更できますか?
>>34 一回removeしてからnewしろってことなの?方法それだけ?
構造体プロパティのフィールドは変更できん Removeは要らんけどRectangleを代入しないと
remove要らないのか、ありがとう とりあえず通ったからこれで先に進めるよ!
大人しくVS使っとけよw
39 :
デフォルトの名無しさん :2013/01/13(日) 22:56:53.13
オブジェクトを取得するって表現よりも オブジェクトを生成するって表現の方がいいですか?
newならそうだな
41 :
デフォルトの名無しさん :2013/01/13(日) 23:39:43.64
>>40 取得の表現は
どういった場合ですか?
教えてください。
オブジェクトプールから引っ張ってくる場合、生成では変だろ
国語辞典に聞けよ
インターフェース定義のものをもらうときとか
返す必要があるなら借りるだな
取得はGetだろ 生成はnew newしないで取ってくるだけならGet 取得
flyweightパターンで取得または生成する場合はどうすればいいでしょう
普通はGetじゃね
破棄の必要があるかないかで分けるという観点もある。
50 :
デフォルトの名無しさん :2013/01/14(月) 17:58:21.33
ジェネリックインターフェイスの理解がどうにもこうにもピンときません。 なにか理解の助けとなるような有用な実習課題はないでしょうか?例えばこういうの作ってみると 理解が進むよ!とか。
51 :
デフォルトの名無しさん :2013/01/14(月) 18:01:51.89
ICollection<T>
52 :
デフォルトの名無しさん :2013/01/14(月) 18:10:07.25
>>51 内部に配列持って・・・
ってやつですか?
ジェネリックインターフェイスを理解しないと困る理由を述べよ
理解できないような馬鹿がどう困ろうが知ったことか
毎回キャストしとけばええやん 悩むなし
Array.Sortでint[]にIComparerとIComparer<int>とIComparer<string>やってみるとか
>>50 ジェネリックはわかるの?
インターフェイスはわかるの?
内部クラス便利やな
ジェネリック医薬品なら使った事ある
60 :
52 :2013/01/14(月) 20:56:44.09
>>59 ジェネリック医薬品なら理解してるつもりですが
そっちのほうじゃありません。
62 :
52 :2013/01/14(月) 23:32:25.63
ありがとうございます 提示された課題をやってみます。
C#にC++でいうところのconstってないですか? 例えば、クラスが内部で持ってるmutableなオブジェクトを返すプロパティを作る場合、 書き換えられたくなかったらクローンしたものを返すのが一般的なのでしょうか。
その通り あとCloneは非推奨だからコピーを新しく実装するならコピーコンストラクタな
ICloneableが非推奨なだけでClone自体は別に好きに書けばいいよ
とりあえず、readonlyを付けておく。 といえ、インスタンスメンバーが参照され書き換え可能なので何らかの方法で複製したものを返すようにする。 ただそういう場合、プロパティよりもメソッドのほうが良いと思う。 foreachとかで短時間に複数回呼び出さないならどうでもいいけど。
フォームのControlBoxをfalse、Textに何も文字を入れないとタイトルバー画非表示になりますが たまに一時的にタイトルバーが表示されることがあります(表示されても自動的に数秒で消える) CPUに負荷がかかってるときに起きてるんですが、これはこういうものなんでしょうか?
immutableなラッパーを返すなり 書き換えないでねってコメントに書いておくなりしたらええわ
VC#のフォームイベントのleaveのメソッドの中に、メッセージボックスを表示するコードを書いたのですが フォームがアクティブから外れても処理されません これはなぜですか?
他のプロセスがアクティブ化された場合、Leaveイベントは、発生しない仕様。 どうしてもやりたいなら、ウィンドウメッセージを掴むしかない。
そのコントロールがアクティブになっているか確認しろ
他のアプリクリックしたらメッセージ表示されるとか 何事かと思うわな
説明が曖昧なんだよな タスクバーでアプリ切り替えてもフォーカスの位置はそのままだろ
あれ?2012 expって評価目的にしか使えんのか。 これじゃフリーソフト作れないなー。
などと意味不明なことを言っており
登録(無料)をすれば使えるだろ
@ITの「第2回 Entity Frameworkコード・ファーストでモデル開発」 のサンプルをやっていて、NugetからEntityFrameworkをインスト済、ビルド済の状態で Booksコントローラを追加しようとすると「~.Model.Bookのメタデータを取得できません」とくるのです。 勿論SQLCompact4.0はbinに叩き込み済。試行錯誤しても一歩もすすまないので教えて偉い人。
プログラミングC# 第6版の251ページの「反復処理と変性」の文章がどうしても理解できません。なんとかしてください。
79 :
デフォルトの名無しさん :2013/01/15(火) 21:39:25.09
ああああああああああああああああああああああああああああああああああああああああああ
タスクバーには表示しないでalt+tabで切り替えられるようにする方法を教えてください
ShowInTaskbar
そのShowInTaskbarをfalseにすればもちろんタスクバーには表示されないんですが alt+tabで切り替えられなくなるのです
前スレでファイラーの質問したものです おかげさまで作る事ができました ありがとうございました
84 :
77 :2013/01/16(水) 12:57:39.99
>>78 揶揄されてるのかと思ってしまった。
url貼ろうとしたら忍法帳に断られたのです。
Web browserで広告クリックすると強制的にIEで開いてしまう のですが、強制的にweb browserの中で開く方法を教えてください
34A715A0-6587-11D0-924A-0020AFC7AC4D でググれ。
C#の機能を中心に勉強に便利な参考書って何があります?
プログラミング .NET Framework
>>82 FormBorderStyleをToolWindow系にしてない?
ジェネリックってちょっと記述が楽になるだけだろ
あなたの財布が楽になるの間違いでは?
マウスでフォームのサイズの変更を、縦だけ禁止にしたいと思います MaximumSizeとMinimizeBoxの値に0, 100と入力したら、縦どころか横にもサイズの変更ができなくなりました 何か他に設定がいるのでしょうか?
public Form1() { InitializeComponent(); Application.Exit(); } これでフォームが終了しないのはなぜですか?
Application.ExitはApplication.Runを終わらせるもの メインフォームのコンストラクタじゃまだApplication.Runは呼び出されてない
まじすか この段階で終わらせるにはどうするのでしょうか?
そんな頭の悪いVB厨みたいなことはしない Program.csでやれ
VC#のデザイナーにコントロール(listboxとかlistviewなど)を貼り付けるのと、 まっさららクラスから ListBox listBox1 = new ListBox(); this.Controls.Add(listBox1); としたときで、プロパティの初期値は同じですか?
初期値はそうだけどTabIndexのように生成と同時に外部から設定されるものもあるよ
102 :
89 :2013/01/17(木) 18:32:09.78
すいませんしてました Sizableにすることで解決しました ただ、これだとSizeで特定の小ささに設定できなくなってしまいます SizableToolWindowのようにSizeも自由に変更できてSizableのようにタスクバー非表示だけどalt+tabはできるようにする良い解決方法はございませんか?
MinimumSizeを1,1とかに設定すりゃいい
どうもSizableだとMinimumSizeも効かないみたいです
複数フォーム表示したときにタスクバーには一つにしたいけど、隠れたフォームを選択できないからってことか?
タスクバーに表示するのは邪魔なんだけどマウスで切り替えるのが面倒なためalt
タスクバーに表示するのは邪魔なんだけどマウスで切り替えるのが面倒なためalt+tabで切り替えられるのは残しておきたいのです フォームは1個しかありません
何が作りたいかというと電卓ソフトです
コテハンはずれてました
OSの問題でアプリ関係なくね? OSがタスクバー見て切り替えてるんだったら無理だろ
バックグラウンドで動いてるプロセスまで拾ったら困ります
複数起動しようとしたら既存のプロセスからフォームを増やすようにすればいいんじゃないの 切り替えるキーは適当に割り当てて
というか、なぜWindowsの約束事の範囲内で機能的に等価な別の方法をまず模索しないかね。 言っちゃ悪いけど女(異性)に一番嫌われるタイプだなw
>>115 どこがかみ合ってないの?
出来ないなら別の方法模索したらって言ってるんだろ
馬鹿なの?
馬鹿だからこんなところで無意味な質問してるんだろうけど
煽るくらいなら寝るか死に給え
初心者は回答しなくて良いのよw
>>114 >言っちゃ悪いけど女(異性)に一番嫌われるタイプだなw
お前が一番嫌われるタイプ
馬鹿ってわかりやすいよな
俺が一番嫌われている
なんか荒れてしまい申し訳ありません これはWindowsの仕様なのでしょうか?
火病るくらいなら寝るか死に給え
自分から仕掛けて気に入らないレスで返されると暴れだす
定期的にこのスレに出張る
>>114 みたいな根暗
CreateParamsのオーバーライドを検討するか。 別の方法を模索するだろうな。 CreateParamsでうまく行くかはわからんけど、無理だろうな。 ALT+TABメニューとタスクバーは、等価だろうし。
IDまるみえっすよ(w
CreateParamsは無理
msから公式な見解が出てそうな気もするけどそういう記事見当たらないね 俺には分からんから答えが分かる奴はこのスレにはいないっ!
初心者は回答しなくて良いのよw
馬鹿ってわかりやすいよなwwwwwwwwwwwwww
わかりました とりあえず諦めてSizableで妥協したいと思います
>>132 みたいなのが馬鹿の代表的な書き込みだよな。
しょうもない
136 :
デフォルトの名無しさん :2013/01/18(金) 07:29:03.94
構造体でFieldOffsetでメンバ変数をアライメントするときに なにを根拠にFieldOffsetで位置を指定しているのでしょうか?
そりゃその構造体を使う人の要求次第だろ
バカは答えるな
CとC#でのプリミティブ型のサイズだろ それくらい知ってて当然 P/InvokeならCのヘッダ見てそれと合わせる
勝負(笑)匿名で勝負(笑)
githubとかでC#で書かれたソースコードを見ると どれもVC#でそのまま作ったような感じのものがあまり見かけません やっぱりVC#で空のプロジェクトから1から作るものでしょうか? デザイナーでコントロールを配置したり右下のプロパティから値を変更していくのはやめたほうがいいのでしょうか?
GUIアプリなら普通にデザイナ使ってるはずだよ でもオープンソースって基礎的なライブラリが大半で GUIアプリ自体があまり多くないからな 広く一般的に利益のあるGUIアプリって少ないからね
なるほど、やっぱり無理をせずデザイナーを使い続けることにします ありがとうございます
ListViewをDetailにして複数列存在する場合、 一番右の列の右側に余分なスペースが生まれてもったいないので、その列のみフォームの右側のはしまで一杯に広げたいのですが これはどういう設定をしたらできますか?
サイズ計算して自前で設定
便利な設定はないですよね、わかりました フォームロード時とウィンドウリサイズ時に自前で設定することにします
便乗で失礼します。 VC# 2010 Expressを使用しています。 C#の言語自体の知識はあまり知らなくて、ググりながらソフトを作っているのですが、 このような学習は良くないでしょうか? しっかりとテキストエディタとコマンドプロンプトでC#の言語を学び、コンソールアプリケーションから作れるようになってからIDEに移行するほうがよいでしょうか?
ガベージコレクションって なんかエロいよな
そうかな?
ガベージコレクター
>>149 具体的に必要性を感じてから勉強したほうが頭に入るからそれでいいと思うけど
あまり無理にモノを作ろうとはしないほうがいい。分からなくなったら勉強を進めること。
特に初心者は他のアプリを操作しようとするとか技術的に変なところに深入りして嵌る
基礎はしっかりと固めておかないと 後でかなり困るよ
技術的に難しいことには踏み込まないのが学習を効率的に進めるためのコツ。 WinAPI、P/Invoke、プロセス間通信、WebBrowser、DirectX、リフレクション、COM、シリアライズ あたりが初心者がどつぼにはまりがちな禁止ワード。技術的に難しいことやったからって 言語仕様の勉強になるわけではなく、慣れないうちに踏み込むのは時間の無駄。
シリアライズぐらいできてもらわなくちゃ困る
シリアライズは使いはじめるのは難しくないけど後になって互換性で困るんだよな どうせ初心者のうちに書いたコードなんて後になったらゴミだからどうでもいいけど
Stringってどういう経緯でUTF-16になったの?UTF-8の方がいいと思うんだけど。
なんで.Netは標準でYAMLに対応してないんだよ
Windowsの中で使ってるUnicodeエンコーディングがUTF16LEだから YAMLに標準で対応してる言語の方が少ないだろ
>>158 だいたいの文字が一つの変数に収まるのでプログラムでは扱いやすい
その意味ではUTF-32の方がいいんだが、そこはメモリとの兼ね合い
実際、IOはUTF-8なJavaでも内部表現にはUTF-16が使われてる
WindowsはUnicodeというとUTF-16がデフォだから.NETではIOもUTF-16がデフォ
>>149 >しっかりとテキストエディタとコマンドプロンプトで
初心者には、非推奨。ただ面倒なだけだから大人しくVS使っておけばいい。
便利な道具は、使え。コマンドプロンプトでコンパイルする必要があったらその時、コマンドを調べればいい。
わざわざテキストエディタとコマンドプロンプトでやるなんて愚かね
お前らってVSの操作画面カスタマイズしてる?
C++やCはテキストエディタで書いてる俺もC#は普通にVS使う
黒背景にハイコンストラストが好きなので黒背景にしてる。 あとは、ドキュメントのフォーマットと定義に折りたたむなど、よく使いそうな コマンドは、ワンクリックで実行できるようにしてる。
VS2012の淡色テーマ見にくすぎ。濃色は良いのに。 別に黒背景派ではなかったがVSのせいで黒背景派になったわ
2012のデフォ画面は見づら過ぎる
2012の濃色テーマの見やすさは異常 この手のエディタで全く配色弄りたくならないの初めてだわ
>>166 よく使いそうなコマンドはワンクリックって
ほとんどショートカットキーに対応してないか?
Core i7で3.0GHz以上のとメモリ16GBのパソコンだとVC#の起動はどのくらいですか? 今celeron何ですけど起動時間1分から2:30ぐらいかかります
淡色テーマでインテリセンス表示してみたか?とデザイン部に聞いてみたい
刑法第222条 生命、身体、自由、名誉又は財産に対し害を加える旨を告知して人を脅迫した者は、2年以下の懲役又は30万円以下の罰金に処する。 親族の生命、身体、自由、名誉又は財産に対し害を加える旨を告知して人を脅迫した者も、前項と同様とする。
そうか死んで来い
冗談でもなんでもなく1秒で起動する
スペックよければな
XElement.Valueだと子要素が全部連結されて返ってくるんですけど 自分自身のテキストだけ取得するのってどうやるんですかね
LINQ
>>170 そうなんだが、ショートカットキーをふとした時に忘れてしまうのと、
コード眺めて整理してる時とか、キーボードよりマウスに手があることが多いので
ワンクリックのほうが使いやすいんだ。
素早く適切な回答ありがとうございました
プログラムから読み込む設定用のINIをプログラムと同じ場所に起きたいので VCのソリュージョンエクスプローラーからForm1.csと同じ場所にINIファイルを置いたのですが F5またはF6を押したときに、debugまたはreleaseのフォルダにINIファイルが生成されません 手動でINIファイルをコピーしなければならないのでしょうか?
出力ディレクトリにコピー>する
出来ました ありがとうございました
timer1.Start()ってして timer1.Stop()とtimer1.Dispose()をしないでApplication.Exit()をしたら自動的にC#が面倒みてくれますか?
みてくれないけどどうせプロセスが終了したら全部消えるからどうでもいい
Application.Exit()をすればプロセスが完全に終了される保障はあるんですか?
Application.Exitを読んでもプロセスは終了しないよ メッセージループが終わってApplication.Runが処理を戻すだけ Program.csでは通常、Mainの最後でApplication.Runを呼んでるから結果的にメインスレッドが終了する
kill()使え
プロセス潰すならEnvironment.Exit
最近のセレロンは十分早いっしょ デュアルコア2Gぐらいのセレロンだけど快適だわ 中身はC2D世代のやつだったかな
celeronっていっても上から下まであってだな
未だにApplication.Runの引数無しの用途がわからん
開発環境のほうがユーザーよりスペック高かったらろくな検証できないだろ
celeronって700MHzのCPUでしょ
銭湯の洗面器の底に載ってる広告のあれじゃないのか
毛路輪
IEqualityComparerのGetHashCodeについて質問なんですが、 入力Aと入力BでGetHashCodeが返す評価式を分けるような実装って可能ですか?
可能ってどういう意味よ コンパイラがエラー吐かなければなんでも可能だろ 何を持って可能とする
アレの制約は「Equalsでtrue→GetHashCodeが同じ値を返す」ってことだけ
ルール破っても、ルールが正しいことを前提にしているクラス群が正しく動かないだけで、実装はできますよ。 そんなもの求めてるのかは知りませんが。
そもそもIEqualityComparerの内部実装なんですが、入力された集合Aと集合Bにおいて、GetHashCodeが同じ値の項目同士を比較し、その比較はEqualsメソッドで行われるって認識であってますよね? で、今回はそのGetHashCodeが返す値を集合Aと集合Bで分けたいんです。
日本語でおk
それは「IEqualityComparerの内部実装」じゃなくて 「IEqualityComparerを使用する側」の内部実装だろ そんなものは知らん
一つ言えることはある お前のレベルでそういうことを考えるのは止めとけ
それよりも、まずやってみろよ
トラブってもいないうちから解決も糞もないだろ 最低でもエラーが説明できるようになってからにしろ
まずその処理にIEqualityComparerが何で要るの 要らねえだろ
やりたいこと動かなくていいからソースの形にまとめてくれ どの集合をどこから入力して何のクラスを使ってどういう形に持って行きたいか、まで
>>203 正直よく理解できないが、おまえさんの考え自体に既に矛盾があるような気がする。
実際にコードを書きながら考えろ。
c#でデバッガの使い方を教えてください 変数の値の確認にいつもMessageBox.Showを使っているのですが面倒くさくてつらいです
そのMessageBox.Show書いてるところにブレークポイント置け ブレークポイントのおき方はググれ
ブレークポイントを右クリックしてヒット時の動作を設定すればコンソール出力が出来る
ブレークポイントですかこれで中級者になれる気がしました
悪いが初心者が真っ先に覚えるべきことだぞ?
コンストラクタとデストラクタについて、以下で間違いないでしょうか。 1. フィールドの初期化とコンストラクタは基本クラス→派生クラスの順で呼ばれる。 2. デストラクタは派生クラス→基本クラスの順で呼ばれる。 3. コンストラクタで抽象メソッドまたは仮想メソッドを呼んだ場合… 派生クラスでメソッドがオーバーライドされていれば、派生クラスのメソッドが呼ばれるが、 派生クラスのコンストラクタがまだ実行されていないため、問題が起こる場合がある。 4. デストラクタで抽象メソッドまたは仮想メソッドを呼んだ場合… 派生クラスでメソッドがオーバーライドされていれば、派生クラスのメソッドが呼ばれるが、 派生クラスのデストラクタがもう実行されているため、問題が起こる場合がある。
コンストラクタ → エロい デストラクタ → 怖い
デストラクタは途中で例外が起きた場合など全部呼ばれるとは限らない
インストラクタ → エロいお姉さん
だからと、全部try/catchで握りつぶすのもどうかと思うし、 どうしたものかな。
まともな使い方してればそんなに悩むほどデストラクタ(というかファイナライザ)を書く機会はないはず ファイナライザを実装するのは直接アンマネージリソース握ってて 最後にWinAPI関数呼び出して解放するようなクラスだけだよ
最悪の場合にそのうち、Dispose()を呼ぶためのものだと、思ってる。
225 :
203 :2013/01/20(日) 00:55:14.87
>>224 誤解してないか?
参照先の他のクラスがDisposeを実装していたとしても
ファイナライザでそれを呼ぶ必要ないよ。意味ない。
>>225 そんなもん
class MyFileInfo {
public string FullPath;
public string RelativePath; //集合演算にはこっち使う
}
で済む話ちゃうんかと
228 :
203 :2013/01/20(日) 01:06:41.03
>>227 まぁそうですよねー
IEqualityComparer使えばより簡単に出来るかと思ったんですが
なー書くと疑問もスッキリするだろ
>>226 >>224 が言いたいのは、ユーザーが呼び忘れたDisposeをそのうち呼んでくれる
~Foo()
{
Dispose();
}
public void Dispose()
{
GC.SuppressFinalize();
}
>>230 だからそのDisposeで何やってるかが問題
直接アンマネージリソースの解放をやってないのならファイナライザで呼ぶ意味はない
>>228 というか要求通りに動かないぞ、これ
相対パスが違ってても、ハッシュがコリジョンしていればサイズの判定に進むだろ
そんでサイズが一緒ならEqualはtrueを返すぞ
233 :
203 :2013/01/20(日) 01:31:50.20
>>232 それは認知しています。
実際にはEqualsメソッド内部でも、相対パスとサイズの両方が一致すればTrueってな感じで比較を行うようにするつもりです。
なーんだ
>>231 IDisposableを実装してるメンバがあれば、全部Disposeを呼ばなきゃだめだろ。
Path.GetFileNameを使おう(提案)
>>236 やっぱり各々のオブジェクトでやったほうが良さそうですね。
>>237 どういうことですか?
ファイル名だけでの比較は、階層が違っていても判断できないのでNGです。
残念だがPath.GetFileNameじゃ要件を満たさないんだよ(震え声)
えー最終的に「相対パスとサイズの両方が一致すればTrueってな感じで比較を行うようにする」のであればGetFileNameだけでよくない?
>>241 ファイル名だけで比較すると、c:\test\dira\doc3.txtとc:\test\dira\sub\doc3.txtが同一ファイルとみなされてしまうので駄目です。
(c:\test\dira)\doc3.txtと(c:\test\dirb)doc3.txtはサイズが同じなら同一ファイル、
(c:\test\dira)\doc3.txtと(c:\test\dirb)\sub\doc3.txtはサイズが同じでも別ファイルとしたいんです。
じゃあPath.GetFullPathでいいんじゃないの?
>>243 それじゃあ、そもそも比較されません><
以下の3パターンの比較でもっとも良い比較方法を教えてください 時間を比較する場合は? 日付を比較する場合は? 日時を比較する場合は?
DateTime.TimeOfDay DateTime.Date DateTime
C#で書いたコードをCかC++に変換してくれるありがたいツールってないかな
みんながそれをありがたがるならとっくにそんなもん世に出てみんなそれを使ってるはず。 実際過去にはそういうのもあったんだが全く話題にもなってない。 つまりそういうことだ。
ねーちぶかどうかなんてもうどうでもよくなった
FAQ ・.NETが必要→今は大抵入ってる ・それでも.NETに依存したくない→配布サイズがプログラムだけで数十MBになるのとどっちがいい? ・起動が遅い→IOバウンドなのでネイティブにしても無駄
ランタイム含めてパッケージ化したら、GACにあるライブラリのアセンブリが プリフェッチなどで既にメモリにキャッシュされてる場合でも同じコードを改めて自分のとこから読まないといけないよね? IOで初回起動クソ遅くなりそう
ブレークポイント右クリックって何よ エクスプレスで出来ないこと言ってない?
マイクロソフト提供のMVC3 MusicStoreのチュートリをこつこつ やってるのだけれどもThe Entity Framework provider(略)could not be loaded とくるのです。NuGetでEntityFrameworkもSQLCompactも投入してるのになぜ なのだろうかと手が止まってしまいます。
C#以前の問題かもしれませんが、ググっても見つからなかったので C#でマルチプロセスを実装する場合ソケット通信するしか無いんですかね?
IpcRemoteObjectでググれ
ありがとう、なんとかやってみます
c#でircを手軽に作れるライブラリってありませんか?
初心者なんですけど、初心者向けのソフトを教えてください 何を作れば良いのかわかりません
hello world
メモ帳
メモ帳は30分くらいでそれっぽいのできるよな VSの操作の練習にはいい
電卓。全くの初心者には結構ハードルが高いけど。
263 :
デフォルトの名無しさん :2013/01/21(月) 08:41:00.66
前スレで失礼なことを書いて すいませんでした。
264 :
デフォルトの名無しさん :2013/01/21(月) 13:57:49.98
子フォーム間で、フォームが閉じれないのですがどうすればいいか 教えて下さい。 子フォーム1,子フォーム2で子フォーム1のボタンで子フォーム2を閉じるプログラム を作ったのですが、 private void button1_Click(object sender, EventArgs e) { Form2 fm2 = new FORM2(); fm2.Close(); } これだとフォームが閉じません。
newって英単語を意識しようよ 子フォーム1と2は兄弟?親子?
266 :
デフォルトの名無しさん :2013/01/21(月) 14:35:55.68
子フォーム1と2は兄弟です。 子フォーム2自体は子フォーム3からShowで表示させています。
親と子の概念を考え直すときが来ているようだ
なんでこんなにバカなの?
メモ帳なんか自力で作ったら一ヶ月はかかるだろうが
鶏が先か卵が先かみたいな話か?
Form2 fm2 = new Form2(); private void showButton_Click(object sender, EventArgs e) { fm2.Show(); } private void closeButton_Click(object sender, EventArgs e) { fm2.Close(); } つまりこういうことでしょう ShowもしていないnewしたてのFormをCloseしても何も起こらないのは当然
272 :
264 :2013/01/21(月) 15:58:00.20
分かりづらくてすいません。 最初から説明すると親フォームから →Form1 →Form2 を生成。 Form2のボタンを押すと、Form3を生成し、Form2を削除。 Form1のボタンを押すと、Form3を削除し、Form2を生成。 というプログラムを作りたいのですが、Form1からForm3を削除するには どうすればいいかという質問です。
273 :
デフォルトの名無しさん :2013/01/21(月) 16:19:13.98
Form1にForm3の参照を与えればいいだけ
275 :
264 :2013/01/21(月) 16:31:30.00
参照を与えるというのは具体的どういう風にすれば出来ますか? 無知ですいません.....
var form1 = new Form1(); var form3 = new Form3(); //Form1のForm3プロパティにForm3を入れる form1.Form3 = form3;
コンテキストメニューを設定していないコントロールを右クリックするとnullの例外が発生するのですが原因がわからず困っています 教えてエロイ人
親になっているタブコントロールに間違ってコンテキストメニューを設定していたのが原因でした ごめんねエロイ人
指定時間に特定の処理を実行させたいのですが システムが休止状態の間は実行できないんですが、 C#で休止状態を解除する方法はございませんか
まず休止状態が何か調べなおしてこい。 いきなりPCの電源が付いたら怖いだろw 確かにBIOSによっては、指定時間に自動起動するものもあるかもしれないが…。
常時パソコンを起動しとくと電気代もったいないので何とかできませんか 別にC#じゃなくてもいいです 助けてください
型落ちスマホでも使えば
タスクスケジューラーにでも登録すれば?
>>279 ACPIが普及したWin98の時代から可能になってる。
>>283 の言うとおりタスクスケジューラーを使えばいい。
こういうネタはパソヲタの方が詳しいかも
タスクスケジューラみてみたら出来るようですね たすかりました C#からタスクを登録して実行することにします
出来るのはスリープの方
このスレで聞くようなことじゃないかもしれないけど、色指定において 文字列"#FF00FF"とか"255000255"を、 int型のred,green,blueに変換する方法ってどうすればいいですか?
キーの重複を許すディクショナリを教えてくれ
Lookup<TKey, TElement>
>>287 正規表現なりループ回して舐めるなりして自分でごりごり解析する
簡単な方法はない
Color color = ColorTranslator.FromHtml("#FF00FF"); int red = color.R; int green = color.G; int blue = color.B;
┐('〜`;)┌
JavaScriptをしっかり学ぶならオライリーですが C#をしっかり学ぶのに良い書籍ってありますか?
dobon
どぼん、本になってたのか…
書籍の質問は全部オライリーでいいな 実際、そう外しもしない
メモリ使用率を下げたいんですがどのような事を気をつければいいですか?
メモリを増設する
今時メモリを節約する必要は無い
ある
メモリをたくさんつかってサクサク動くほうがいい
でもその理屈を理解できるのはマだけ
そういえば素人はメモリ使わないことを軽いって言うよなw
メモリクリーナー常駐させて空きメモリを常に確保してたやつもいたな 客を一人しか店に入れないラーメン屋か!
XElementに改行コード\r\nで値を入れてセーブしてロードすると 改行コード\nに変えられてるんですけど どうすれば\r\nのままに出来るんでしょうか
それは本当に\nに変えられてるんですか エディタの誤判定ではないのですか ちゃんとバイナリで確認しましたか
W3Cの仕様で\nになるみたいですわ まあ頑張って\nを\r\nにするコード書きました
>W3Cの仕様で\nになるみたいですわ ソースよろしく
ぐくったらそれっぽいことがすぐ出たぞ 頑張るほどの対処ではないと思うが
今スマホなんでコピペはきついんすわ
上
上古くね?
下でいいだろ 基礎的なところで躓いたらググって調べれば十分
Expressでは条件付きのブレークポイントは使えない ブレークポイントの箇所でプログラムの実行が止まるから、 その状態で変数の上にマウスカーソルを置くと値が表示される ただしstring str = "test";にブレークポイントを置いたらその行はまだ実行されてないからstrにはまだ何も入ってない ブレークした状態で実行を進めるにはツールバーのステップインを押す
ゲームを作ってるんだが、 1/60秒ごとにTextBlockをXamlにセット消去セット消去を繰り返すのって処理重い?
重かったら直せ 動くものができてないうちからパフォーマンスを気にするのは馬鹿
string str ="test"; string damii = ""; // 今度はここにブレークポイント すいませんこうやってみてstrのところにマウスを乗せてみても (ローカル変数) string str っていうのがポップアップされるだけで値が確認できません
>>321 ブレークポイント貼って実行してブレークポイントでちゃんと止まったのを確認したか?
その状態では、まだ変数の内容までは見れない。 なぜなら、一度も使われていないからだ。 Console.WriteLine( str ); のように一度でも使われていれば見れる。
VSのバグか仕様かはわからないけどな。
まじっすか。。。。 わかりました
C#にはソースコードをexeにしても、そのexeからソースコードに変換するツールがあるって一時期話題になったのを思い出したのですが ソースコードは見られたくないのでどうにかして見られないようにする方法はありませんか?
>>246 これある瞬間の日時を変数に記録して
そこから時間だけとか日付だけってやるにはどうかくんですか?
そもそも見られるとまずいコードなのか? 難読化ツールは、あっても見らなくするツールは、ないと思う。
つまり守りたいソースコードがある場合はC#は避けたほうがいいってことなんですか?
友達がexeちょうだいって言ってるんですけど あげたらソースコードに変換して自分が作りましたって言いそうなので なんとか阻止したいので質問しました
そんなもん技術的にどうこうする問題じゃない そうなったら著作権侵害で訴えろ
RubyとかPHPのスクリプト言語しかやったことないのですが コントロールの部品の値を何度も使う場合 変数に代入して使ったほうがよいのですか?
見られてまずいような部分、暗号化・復号化などは、 C++でも使って作ればいい。それ以外は、気にするだけ時間の無駄。 そして何の言語を使おうが、逆汗して地道にやれば解読できる。
>>332 そんな発想が出てくるならRubyやPHPでもクソコード書いてるんだろうな
モデル作れ
>>332 まず、RubyだのPHPだのの知識は、ほとんど通じないから、
PHPではこうだったなどという発想は、止めること。
重かったら考え直す程度で、それ以外は、気にしなくていい。
難読化なんて気休め程度だからなあ
ここ難読なんきょっきょー
ILSpyとかで逆コンパイルしても、それをコンパイルしてexeに するのって難しくない?
難読化するとファイルサイズが減って、ちょっと得した気分にw
ひとつ言えるのは難読化どうこう言い出すのが決まって初心者だという事 そんなソース誰も欲しがらないから安心して欲しいな
逆コンパイラが完璧に元のソースコードを復元できると思ってそう
C#で、画面数が数枚程度の小さいソリューションで、良いコードのサンプルみたいなのを見たいんですが、 どこかでダウンロードできるものはないのでしょうか?
ない
ある
345 :
デフォルトの名無しさん :2013/01/23(水) 13:30:41.03
ジェネリックってマーシャリングできないの?
アンマネージとの相互運用の話なら無理だね
Enumはどういうときに使うのでしょうか?
>>347 メソッド書いてると必ず
// modeが1ならA、2ならB、3ならCの処理を行う
void hoge(int mode) { ・・・ }
こういうのが出てくる。これが出てきたら迷わずenumを使って置き換える。
ComboBoxに文字列で格納してて、 indexで指定したり文字列で比較してると、内容が置き換わったときに混乱するからenumにしておく
Thread インスタンスからその実行途中のスタックトレースを取得する方法はありますか? DB かネットワーク周りかわかりませんがか、ブラックボックス化されてるライブラリ内で稀に止まってる スレッドがあるので、監視スレッド立てて 一定時間経過して終了していない処理のスタックトレースを 取得したいんですが。
うざい
参考書でも何でも見て直せるところを直した方がいいんじゃ
>>350 StackTraceにThread受け取るコンストラクタがある
Suspend必須らしいが
初心者はこれぐらい覚えとけっていうのを教えてください
そんな質問をされても答えにくいということ
基本構文すべて 参照型と値型の違い
ありがとうございます わからないので学習してきます
いやネットで無料で見れる時代なので本はいいです
C#なんて感と手探りでやってもたいした時間かからんだろ
ネットで無料で見れるのはいいけど、B5サイズで500〜1000ページに及ぶ説明をネットだけで見れたのかね?
JavaやC++の経験者ならそんな量の説明はいらない。適当に触ってればできる。 プログラミング自体の初心者ならそんな量の説明はどうせ読めない。
参考書丸ごと暗記してる奴なんているのかよ
適当に触っててわからないからここに来てるんじゃ
こんなところに期待する奴はゴミ ググって解決できない奴はゴミ
ググれってすぐ言うけど、コピペを張り合わせただけのコードを修正する人の身にもなって下さい
そういう多人数で作った制作物の組み合わせをここで相談するのはどうかと。
ただ動けばいいのならネットで十分 それ以上の物を作りたいなら書籍とかMSDNを言って穴が開くまで読まないと無理
>どうかと ? 言いたい事を言葉にできない人ですか?
>どうかと。 普通にいうだろ・・・
>>367 PGは1人で、全部新規案件で、相談じゃなくて愚痴だから
>>371 尚更ここで言うのは間違ってる。
ここ質問スレだし。
愚痴スレ行けゴミ
ゴミクズの下らない愚痴を聞かされる人の身にもなって下さい
野口さん
ファイルを削除するか否かのbool変数名ってどうつければいいんだろう
deleteFile
列挙にするとか
>>377 最初そうしたんだけど、メソッドと紛らわしいかなーと
何々するか否か、をboolで表現するとどうなるのかはどこ探しても出て来ない
>>378 そうなるとどうするんだろう
本当にくそ初心者にとって変数名は悩みの種やで…
意味のある名前にしたいのならtrueで削除かfalseで削除かでも変わるだろ
c#で作ったプログラムからファイルとかフォルダをゴミ箱に入れて そしてゴミ箱にいれたファイルを元に戻す処理はどうやるのでしょうか?
>>379 Javaじゃあるまいに
メソッド名は先頭大文字
>>379 enableDeleteFile
deleteFileEnabled
flagDeleteFile
>>380 trueで削除
具体的には「一時ファイルを削除する」みたいにTextが設定されたチェックボックスのチェック状態をそのまま返すアクセサーみたいなもの。
public bool 変数名
{
get
{
return this.checkBox1.Checked;
}
}
>>377 みたいにすると DeleteTemporaryFile みたいになるんだろうと思うんだけど
それだと一時ファイルを削除するメソッドなのかプロパティなのかパッと見わかりにくいことにならんかなと
命名規則に従って かつ重複しにくく かつ短く かつ誰が見てもわかるように
基本的にはそんなフラグをフィールドやプロパティーで持つ必用はないはず。 コードにそんなものが出てくるなら設計の間違いをまず疑うべき。 メソッド内であれば場合によってはそういうフラグがあってもいいかもしれないが、 それならほとんどの場合名前はdeletesで用が足りる
>>385 checkBox1は仮だろうから
checkBox1の名前Checkedでいいじゃねーか
メソッドなのかプロパティなのか〜なんて迷ってるなら全部メソッドにしちまえ
有効か無効かなら Is〜 できるかできないかなら Can〜 ○○済みは、〜ed ○○中は、〜ing だいたいこんな感じで統一させてる。
日本語でいいよ
うーん、すいません ざっと標準のクラスのプロパティを眺めてみたら 例えばOpenFileDialogにはAddExtensionというbool型のプロパティがあったり、ShowHelpというbool型のプロパティがあったりするので、 動詞+対象となる名詞でbool型でも別段悪いものではないのかもしれません。 おとなしくDeleteTemporaryFileにしておきます…
392 :
デフォルトの名無しさん :2013/01/24(木) 07:12:35.51
クリップボードにデータを出し入れする処理の前に 処理前のクリップボードのデータ(形式不明)を一時的に保存して 処理が終わった後に元のデータをクリップボードに 戻したいのですが、いまいちやり方が分かりません。 IDataObject clip = Clipboard.GetDataObject(); 〜処理〜 //処理が終わった。 Clipboard.SetDataObject( clip, true ); 上では最後にクリップボードは空っぽになってしまいます。 よろしくご教授ください。
指定時間になったら教えてくれるソフトが作りたいのでFormにTimerを置いて if(DateTime.now.CompaleTo(siteiJikan) >= 0) { // ここに時間なったときの処理を書く } ってやってTimerのTickを100にして動かしたんですが 当日、現在時刻が指定時間と同じか超えた場合に処理を行いたいんですが、 超えたら何度も実行されてしまいます これはどう作るのがよいのでしょうか?
>>392 そのオブジェクトにコピーした内容は含まれないよ
まともな人はそんな設計しないからな〜
テキストだけ対象にしたら?
将来的に指定時間を複数もつように作りたいので止めたくないです
じゃあ時間がきましたよフラグを立てて、以後スルーで
フラグはどういうふうにたてるのでしょうか?
「おれはまともだからあなたとは違う」キリッwwwwwwwwwwwwwwww
>>398 ギャルゲーかそれ原作のアニメでフラグの立て方も折り方もわかるかも。
myself yourself、まじお勧め。
string a = "1+3*10/2"; みたいに変数に文字列で式があります これ文字列から答えを出す方法を教えてください
XPathとして評価する
逆ポーランドで解析する。
再帰加工パーサ書いて解析する ANTLRあたりのツール使って解析する
Evalを使う…は邪道か
簡単そうで意外と手間だなw 構文解析を勉強するにはいい問題だ。
すいませんどれがいいいのかわかりません 難しい順に並べていただけませんか
string a = "1+3*10/2"; var b = (double)(new XPathDocument(new StringReader("<a/>")).CreateNavigator().Evaluate("count(.) * 0 + " + a.Replace("/", " div ")));
xpathって普通xml向けなのに数式に使えるのか ググっても全然情報がでない
foreachの仲でListを使って動的に値を追加したり削除した場合 ってどうなるんでしょうか? やめたほうがいいですか?
やめたほうがいいというか、絶対にやってはいけないお約束になってる
なんていうかVC#って使いやすいですね 何でVC++は使いづらいんだろう
今となっちゃ中途半端だからじゃね?
継ぎ接ぎしながら進化してきた言語と、 過去の互換性を一切切ってゼロからデサインした言語の違い。
今じゃもうC#もフレームワークも継ぎ接ぎになって来たけどね
foreachでリストの要素へのアクセスに失敗したとき、次の要素にアクセスするようなエラー処理ってできますか? 具体的に、linqで取得したienumerable<fileinfo>にforeach(var file in files)でアクセスするようなケースです。
意味がよく分からんが、 foreach(var file in files) { try { // file操作 } catch { } } でいいんじゃないの?
>>420 で、よいと思っていたんですが、★でエラーが発生します。
foreach(var file ★in files)
かといって、
try
{
foreach(var file ★in files) {}
}
とすると、エラー移行の要素の処理はスキップしてしまいます。
よくわからん IEnumerator<T>.MoveNext辺りで例外が出てるケース? スタックトレース書いてみてくれ
>>421 一般に、例外発生後も列挙子が有効である保証はないから続けてはいけない
もし実際の列挙子の型を知っていて、その実装に関する知識があり、続けても安全であることがわかってるなら
GetEnumeratorとMoveNextとCurrent使って自分で回せばいい
例外発生元は99%IEnumeratorじゃなくてDirectoryInfoとかだと思うよ
List<string> test = new List<string>() { "aa" , "bb" , "cc" }; TryForEach( test , x => Console.WriteLine( x ) ); private static void TryForEach<T>( IEnumerable<T> source , Action<T> proc ) { Queue<T> tmpq = new Queue<T>(); foreach( var x in source ){ tmpq.Enqueue( x ); } while( tmpq.Count > 0 ) { try { while( tmpq.Count > 0 ) { proc( tmpq.Dequeue() ); } } catch {} } return; }
>>425 要素の取得で例外出るなら何の意味もないぞそれ
ついでに全部列挙してから処理するなら遅延評価の意味もなくなる
>>422-424 System.Linq.Enumerable.WhereSelectEnumerableIterator.MoveNext()内で
「アクセス拒否UnauthorizedAccessException」のエラーが起きていました。
ので、foreachじゃなくてfileinfoの取得プロセスにあったみたいです。すいません。
質問が変わってしまうのですが、
DirectoryInfo di = new DirectoryInfo(@"C:\");
var files = from file in di.EnumerateFiles("*", SearchOption.AllDirectories) select file;
で、エラーがあったらスキップして次のファイルを取得するようなlinqってどうかけばいいんでしょうか?
検討がつきません。。
初心者です スタックトレースってなんですか?
429 :
デフォルトの名無しさん :2013/01/25(金) 23:37:42.82
スタートレックなら知ってます
スタッドレスタイヤなら知ってる
>>427 SearchOption.AllDirectoriesは諦めれ
本当に知ってる?
>>427 例外が発生したら問答無用で列挙終了だから無理
探索の仕方を工夫するかWinAPI叩いて自分で実装するか
MessageBox.Showを5秒後に自動的に消す方法ないですか?
そんなもんフォームで自作したほうが早い
そうします
>>432 その辺の参考書読んだだけでもできそうだけど
>>426 遅延評価など意味なくなるのは承知で
>>420 みたいな、とにかく例外出ても無視して全要素に
何らかの処理を行う場合を想定してみた。まあ列挙部分が問題なら別だろうけど。
C#って例外書いてもいい系なの?
yield return
>>442 もちろん
JavaみたいにファッキンthrowsがないからJavaより例外使いやすいし
そういえばIEnumerableの列挙をバックグラウンドスレッドで行える機能って標準では無いよね foreach (var item in source.ToBackground())みたいに簡単にproducer-consumerできたら便利そうなのに
>>445 source.AsParallel()
Parallel.ForEach( source , x => ... );
linqも何もこれでエラー吐きました。エラートラップできないなら、EnumerateFilesってどんなときに使うんですか?? foreach (var file in Directory.EnumerateFiles(@"c:\", "*", SearchOption.AllDirectories)){}
>>446 AsParallelはまさにそうだね
Parallel.ForEachは要素の取得とその消費が同じスレッドだからproducer-consumerとは違うんじゃないか
>>447 失敗したらそれまででいいとき
SearchOption.AllDirectoriesなんて使ってないで再帰でやれよ
プラモデルじゃねーんだぞwww ゆとりはRPGツクールでもやってろよwwwwwwwwwwww
(´・ω・')
>>447 そういう環境はファイル名文字列の配列返すメソッド使うしか無いと思うよ
C#で配列を扱うときはListを使うのが定番でしょうか?
C#を基礎からみっちり勉強したいのですがネットで見れるおすすめのURL教えてください
うわあC#5.0ってあるんですか でもまだ5.0にバージョンアップできないですね やっぱ初心者は5.0が出てから勉強します
456「今はタイミングが悪い。5.0が出たら本気出す」
6.0発表で6.0待ち?w
.NET4.5のがC#5.0だっけ?それとも4.5?
言語厨でもない限り、言語そのものよりも やりたいこととそれに対する書き方を学んだ方がいいんじゃないかと、個人的には思う
>>461 それが普通だよね。
目的によって言語替えてるわw
何も作りたいものが無いのに、入門書を1ページ目から順番にやるような奴は、 せいぜい半分行かないところで興味を無くして放置するようになる。
>>460 自己レス
.NET4.5のがC#5.0だった。
ライブラリの追加だけで言語使用の変更はasync/awaitの追加くらいだな。
VSも含めてもう、ダウンロードできる。
4.5ってまだ趣味でしか使えないよね 実装が楽になってもそれを使おうとするプログラマは一部だろうし サポート期間が最長でも4.0との互換性高いし(ライブラリ追加だけでしょ) XPで使えないし
言語のバージョンアップにビビってたら何もできんぞw
C#3.0のときはあまりにも違うんでそれまでのやり方を消すのに苦労した
俺まだC#3.5で知識止まってるわ
基礎からみっちりやりたい理由はいままでdobonさんのコードをコピペしてソフトを作ってきたんです こうやってきたので配列の作り方とかたとえばbyteからintの変換とかそういう基礎の部分とか良く判らないで来てしまいまし なのでバージョンによって出来る事とか出来ない事とかそういうのまったくわかんないんです それでもVC#があれば知識がなくても作れたのですが・・・
>>465 趣味でも一般ユーザーに配布してたりすると、XP完全切り捨てになるから4.0までしか使えないよな。
自分で使うツールとかは4.5で開発することもあるけど。
コピペってプログラミングって言わなくね? その辺の商業高校行ってる学生の方が使えそうだな。 トレースいっぱいやってるし。
>>470 自分で使うツールはVB6だな
.Netは初回起動が遅すぎる
作るのは楽しいけど使わせられるのはちょっとね、、、
しょうもない努力をする前にSSDでも買えよ
VBwww 底辺www
自分で使うツールこそ、起動時間とか気にしなくて良いと思うけどなw
VS2012以降はWindows Installerプロジェクトが作れなくなったのも 零細企業には結構困る要因だったりする。 VSについてくるInstall Shieldの機能限定版ってカスタム動作が作れないんだよね。
指定した座標をクリックするのってC#標準で出来ない系ですか? やっぱりwinprocしないとだめ形ですか?
他のプログラムに手を出すなら、WIN32APIでやるのが基本。 両者に手を加えることができるならIPC使ったり。
くそC#だけじゃむりか 初心者でもuwscみたいなのが作れると思ったけど どうもです
馬鹿には無理
だったら、UWSC使ってればいいだろw
API使うのがそんなにむずいのか? ただ定義をコピって呼ぶだけじゃないかw
Cわからないならやめたほうがいいと思う セキュリティホールを作り込むこと請け合い
>>461 趣味なら動けばいいけど仕事だとそうはいかないからな
WPFではなくてフォームアプリケーションで作りたいのですが(WPF不採用の理由は納期)、 でかいメインフォームがあって、そこからボタンなど押すと、子フォームが出てくるようにしたいのですが、 子フォームはメインフォームの枠外には出れないようにしたいです どうやればいいのでしょうか
時代遅れのゴミUIだな MDIのテンプレートがあるだろ
そのレベルで納期云々言ってるのが怖いけど MDIの事を言ってるなら子フォーム.MDIParent=null
ありがとうございます C#は未経験なのに来月から少人数でツール作らされるんです MDIについて調べてみます
未経験で納期、怖すぎるw
java出来ればできるんでしょ?みたいな思考が多いんだろうな 3.0以降のソースはC#の経験が無いとまともに読み書きできないけど ただJ組むだけならその辺のIT土方で十分だわ
JavaとC#が同じとか似てるとかいうバカは、多いが 全く違うものだと・・・。
メジャーな言語の中ではJavaが一番似てると思うよ
なんでjavaじゃなくて.netを選ぶの? 馬鹿なの?
>>497 javaがoracleのせいでオワコンだから
C#スレでそんなこと聞いてる奴のほうが馬鹿だろw
え?いまからJava勉強するのはやめたほいがいいですか? OpenJDKっていうのもありますよね? クロスプラットフォームで動くソフト作れるのってJavaぐらいですし困ります!
現実として、Javaってサーバーでしか使われてないよ HTMLの生成とデータベース操作を行うための専用の言語と考えたほうがいい
すいませんwebは興味があってPHPしかできないのですが Javaで仕事でwebを作る場合ってSarbret(つづりあってますかね?こんな感じの単語)とJSPどっちが仕事になりますか?
いやこのスレで聞くならAPIなんでしょうけど(笑) Windowsのサーバは高いのでAPIの勉強はしてきてません 恥を忍んでお聞きしました
趣味グラマなんだけど、仕事の現場ってマジでこんなレベルの人間がゴロゴロいるもんなの?
つまり
>>504 は「俺はプロだけどおまえらはど素人だ分かったかクズ共」って言いたいんですか
専門学校でプログラミング勉強してます。 習った言語はC、Java、C#、HTML、XML、SQL(Oracle)です。 皆さんは仕事上や趣味でもこれくらいは使ってますか?
仕事でやってます C,C++,Java,Haskell,Scala,SQL,YSQL,XML,YAML,JSON,C#,JavaScript,アセンブラ,フォートラン,Go,TypeScript,CoffeeScript,Dart,Rails,Ruby,PHP,Perl
508 :
506 :2013/01/26(土) 22:31:51.66
>>507 すごい数だなー。やっぱり一つ一つの言語を極めるより、応用力が大切なんだろうな〜。
応用力? 全部極めてます
>>506 学校まで行ってその程度かよ
生きてて恥ずかしくない?
最後に使ったのが10年前とかの言語までいれてんのかおっさん
お前らスレ違い カスどもまとめてどっか行け
ドザ専が妬いてるの?
ム板における言語の話題で SQL はまだしも HTML, XML とか入れる奴はアホだと思う。
そうでね。MLで終わるのはMarkup LanguageであってProgramming Languageとは言えないですよね。
>>412 あの、これ何回も計算したいばあいって
tableから追加したデータを消してからまた追加していくって感じのほうが良いですか?
そうでね
自分で試してみればいいじゃない
520 :
デフォルトの名無しさん :2013/01/27(日) 00:23:00.19
引数を特定の2個とるコンストラクタしか持たない基底クラスを継承したクラスは、 そのままだと、コンパイラーが自動的に引数0のコンストラクタを作って、「そんなコンストラクタはねえよゴルァ」と怒ってくるんですが この場合、継承クラスに、引数を特定の2個とるコンストラクタを書いてbase(引数1, 引数2)とするしかないんですかね
別に引数無しコンストラクタを書いても構わんよ base(a,b)さえ呼んどけば
522 :
デフォルトの名無しさん :2013/01/27(日) 01:03:26.26
その場合、base(null, null)になりませんか?
またでたよ
VS2010使ってるけどコードは2005のころのままだけど ダメ?
別にbase(1, 0)でもなんでも 正しい引数を派生クラスコンストラクタのタイミングで用意できるなら
動けばいいんじゃね?
>>524 メインでメンテしてるシステムはVS2010使ってるけど、
.NET2.0ターゲットにしてるよ。
同じターゲットで同じコードかいてるのに2010より2012でコンパイルしたほうのが重いんだけどなんで 教えてエロイ人
寝言はildasmのdiff取ってから抜かせ
C#で0.001秒感覚でconsoleに文字を表示する事は可能でしょうか? やっぱり精度はあんまりよくないでしょうか?
531 :
デフォルトの名無しさん :2013/01/27(日) 16:03:31.67
て
コンソールの表示速度をいくらだと思ってるんだ 60Hzとかそんなもんだろ
60Hzって秒で直すと何秒ですか?
Hz = 1/秒
表示速度はディスプレイの表示更新速度に依存するだろ常識的に考えて
consoleに限定せずC#で精度が保障できる最低限の秒ってありますか?
そもそも Windows がそんなモン保証してないし
linuxだったら精度いい?
マルチタスクOSという時点で完璧な精度なんか保証できない。 プロセスのプライオリティをリアルタイムにしてOSから優先的にタスクを回してもらうぐらいしかない。
>>536 C#の精度は知らないけどそういう要件はリアルタイムOS使った組み込みでもしない限り最低の性能は保証できないんじゃ...
>>536 そもそもどういう意味で精度と言っているのかはっきりさせないと。
具体的にどういう条件を満たす必用があるのか
感覚で0.001秒だから、実際にはもっと遅くても関知できないさ
そもそも日常的な用途で0.001秒精度の表示インターバルが 求められる用途って何だ?
表示はないだろうな、そもそも人間様が追いつかない。 計測とか制御とかなら、1ms 程度は普通にあるだろう。
それは外部機器側でバッファするなりして対応するべきことでは
そりゃ構築の方法はいくらでもあると思うよ。
くそC#じゃ無理か
×C# ○PC向けOS
精度が必要なのはFPSどのくらいでるのかを調べるためです
FPSを調べてリアルタイムにconsoleに表示したかったんです
そんなもん1秒くらいの間のフレーム数を数えればいいだけだろ
>>550 どうせ人間が読み取るんだろ?
そんなもん100ms周期で十分だしきっかり決まったタイミングで更新される必要性が無い
もうこのさいconsoleに表示できなくてもいいです 100msって0.1ですよね それは困ります ゲームのFPSなんですけど制度が1/1000なんですよ
でもC#じゃできないってわかったのでやっぱり諦めます
厳密に1ms精度でフレームレートの処理するのってWindowsというか普通のPCじゃ無理だよ 垂直同期に依存するから意味ないし
ある程度のスパンで見て統計的に辻褄合ってればそれで充分なんだよ 1秒に1000回の処理が必要なら、0.1秒に100回処理できてれば実用上問題ない。
そもそもFPSなんて調べられるの? ツッコミが無いってことは俺が無知なだけなのか? そもそも1ms単位で処理できたとしてその負荷が対象に影響を与えてしまうのでは?
FPSの計算なんて一瞬だから計算はできるだろうよ でも表示のタイミングなんてまさにそのFPSに依存するだろ
FPSの計り方なんて聞いてるような奴がFPSを計る必要性のあるアプリ作れるの?
答えの提示できない馬鹿が心配することじゃないですよ
どこに答えの出てない質問があるんだか
0.001秒単位でFPSが計れるなら 常にFPSは1000だろw
コンソールだからゲーム画面とは別なんだろう でもコンソールの描画速度が1000Hz出ないから一緒だが そんな0.001秒単位なんて保証する必要あるのか?
1/1000なんて脳内だけだろ 1/30にも届いてないだろうよ
測り方全然わかんないんだけどどうやるの?
>>562 バカ現る (w
>>563 まあ、表示とは別にディスクに記録するとかはあるかも。
まあ、計測だけなら Windows でも 1ms ぐらいは楽勝。
>>565 測るだけならこんなんで十分
if (1秒 <= 最終更新時刻) {
出力(フレーム数);
フレーム数 = 0;
最終更新時刻 = 現在時刻;
} else { フレーム数++; }
569 :
567 :2013/01/27(日) 21:55:28.94
ちょっと訂正 if (1秒 <= 現在時刻 - 最終更新時刻) { 出力(フレーム数); フレーム数 = 1; 以下同じ かな
↑馬鹿
1/1000でログ取れたとしても実際の処理が延滞するだけだろ 夢見るのは1/100程度にしとけ
くそC#じゃできないってわかったのでこれ以上馬鹿はしゃべらなくていいです
574 :
565 :2013/01/27(日) 22:11:32.44
別プロセスのFPSかと思ってたわ
はいはい、わかったからアセンブラ言語で実装して 満足行くまで高精度なFPSを作ってくださいねw
>>572 ログ出力を数回分をまとめて行えばいいだけ
>>576 もしかしてC#でファイルに書き出す時ってリアルタイムに書き出してると思ってるのか?
OSが良きに計らってるに決まってるだろ
知能が足りてない奴は数回分まとめるとか無駄な事考えずにOSに丸投げしろや
ここまでさんざんレスが付いてるが、
>>542 でカタが付いてるような気がしてならない。
次は描画が追いつかないとか言い出すんだろ
C#以前にPCの仕組みそのものの理解が乏しすぎるだろ
583 :
デフォルトの名無しさん :2013/01/28(月) 07:25:36.66
リソースに実行ファイルを埋め込んでそれを実行したいのですが 以下のように書くとBadImageFormatException例外が出てしまいます。 Assembly asm = Assembly.GetExecutingAssembly(); Stream st = asm.GetManifestResourceStream("mytest.test.exe"); byte[] b = new byte[st.Length]; st.Read(b, 0, b.Length); Assembly.Load(b); どうすればよいでしょうか?
起動時にそのPCに4.0が入ってないとエラーが出ます これ起動時に入ってるから調べて入ってなかったらメッセージを出して終了するようにしたいのですが なんとか方法ありませんか?
Cなどでチェックするプログラムつくりゃええよ 入ってたらC#のプログラムに移ればええ
そのデフォルトのエラーメッセージがダメなんだよなw 開発者にしかわからないようなメッセージじゃなくて、エンドユーザーにわかるようなメッセージにしとけよと…
もーちょっと特定出来るエラーメッセージにして欲しいよな
パズルゲームを作ってみたいのですが たとえば3×3の9マスで絵を完成させるパズルを作る場合 どうやってマスを用意したらいいですか?
2次元配列
??????
?
何がわからないのかがわからないw
pictureboxに描いてもいいし panelとかコントロール配置してもいいし お好きな様に
?????
??????
?
エクセルみたいなスクロールすると永遠に続くセル あれは何のコントロールをフォームに置いたらできるのでしょうか?
コントロールが無いとなにもできないのかよw
言語以前にコンピューターの最低限の基本的知識が欠落してるな
お願いしますヒントだけでも
ヒントも糞もねーよ、それを作るのがプログラマーだr
RPGツクールでもやってろって
まず、C#の基礎から勉強しよう
でもDBアクセスとかRPGツクールのような使い方宣伝してんじゃん MSも悪いと思うぜ
自分の非を見ず、人のせいか
自作するしかねーよ!
便利になるほどゆとりが増えるな
ゆとりに合わせてるから便利になってくんじゃね?w
Excelコンポーネント使えば?
このレベルの奴にそんなコンポーネントが使えるわけないだろw 機能多すぎとかいって発狂するだけだ
デザイナがメインでおまけでコードを追加するような感覚なんだろうな
デザイナとか補助的なものぐらいにしか考えてないな。
さすがにコードだけで位置や大きさ把握するのは、困難だからデザイナーで調整したりするぐらい。
それ以外は、ほとんどコードエディタで十分だな。
>>614 デザイナがメインの奴のコードってbutton1とかtextbox1みたいな名前のままになってて
生成されたコードとかもbutton1_Clickとかtextbox1_TextChangedみたいなメソッドで難読なんだろうなw
ゆとりは本当に画面の中でスクロールしたりマウスポインタが動いてると思ってるんだろうな
まあすべてグラフィックと考えを切り換えればあとは 簡単だ
スレタイ詐欺
これは立派な犯罪だ お前ら通報したからな
犯罪って、何罪になるのかkwsk
レスの中身はおいといて 2つ前のレスも読めないほどふぁびょってんのか 読解力のないただの馬鹿か
まあ、つまんねーもんにいちいちさわんなよ
なに生産性のない無駄なレスの連続
マイクから拾った音から周波数を知りたいのですがライブラリありませんか?
ライブラリ?dll?名前空間?何て呼べばいいの?
626 :
リリン :2013/01/29(火) 12:05:54.71 BE:52373232-PLT(45072)
public class hoge1 { public int[] Array; hoge1(){ int[] Arrya = new int[5]; } } plass hoge2 { hoge1 foo = new hoge1() foo.Arry[0] = 10; //エラーになる } これだと、ぬる・りふぁれんすって言われるんだけど、コンストラクター内のnewがクラス・オブジェクトを参照しないの? コンストラクターで配列を初期化ってやりかたありゅ?
627 :
リリン :2013/01/29(火) 12:06:37.40 BE:87288825-PLT(45072)
plassじゃねぇw class hoge2{ }
>>626 > hoge1(){
> int[] Arrya = new int[5];
> }
名前は置いとくとしても
これじゃローカル変数初期化しただけだろ
629 :
リリン :2013/01/29(火) 12:11:10.92 BE:209492238-PLT(45072)
だよねー。どうすりゃいいのさ。
public class hoge1 { public int[] Array; public void hoge(){ // ここでArray使うときはどう書くのさ } hoge1() { // ここでArray使うのも同じこと } }
631 :
リリン :2013/01/29(火) 12:32:00.21 BE:418982786-PLT(45072)
>>630 わかったわ・・・ありがとう。
結局コンストラクター内でnewしてもダメなのね。
使い先のメソッドとかでやるのか。
632 :
リリン :2013/01/29(火) 12:37:19.13 BE:104745762-PLT(45072)
いや、わかんねぇ。これなら通った。 using System; class hoge { public int[] a; public hoge(){ this.a = new int[5]; } public class hoge1 { public static void Main() { hoge c = new hoge(); c.a[4] = 1; Console.WriteLine(c.a[4]); } } }
>>626 まず Arrya を Array にすれば良いと思うよ
そしたら多分警告でるだろうから、その警告みて考えたら
よくみたらArryも間違ってるな 釣りに思えてきたぜ
635 :
リリン :2013/01/29(火) 12:51:56.67 BE:139661928-PLT(45072)
いや、統一しても ぬる・りふぁれんすって言われる。
int[] Array = new int[5]; ここの「int[]」のせいでローカル変数扱いされてるんでしょ。 Array = new int[5]; にすればおk。
フィールドとローカル変数の違いを調べなおしてこい
638 :
リリン :2013/01/29(火) 16:19:06.17 BE:69830742-PLT(45072)
ありがとおーーー。
教えてください。 Bitmapクラスにポインタを渡すコンストラクタですが、 生成したBitmapからDisposeを呼び出すと渡したポインタ のメモリも解放してくれるのでしょうか? 具体的にAllocCoTaskMemでメモリ確保した後に、画像 情報をコピーしています。 このメソッドを呼ぶたびにメモリが増え続け。GC.Collectしても 解放されません。 どのようにすれば解放されるのでしょうか?
>>639 なんでAllocCoTaskMemが必要なのかわからないけど、
それを使うならMarshal.FreeCoTaskMemがいるんじゃない。
GC.Collect。すなわちガベコレが管理しているのは、マネージのみ。 ポインタなどアンマネージなメモリーは、対象にならない。 どこかのポインタかわからないが勝手に持ってきたポインタなら責任をもって解放するしかない。 方法としては、Bitmapクラスを派生させて、Disposeをオーバーライドして そこでポインタを解放するコードを書く。 それとGC.Collectしたからと、すぐに解放されるとは限らない。
642 :
639 :2013/01/29(火) 18:35:00.31
>>640 ,
>>641 なるほどです。AllocCoTaskMemはDirectshowを使っているためCom用の
メモリ確保が必要なため、使用していました。
現状、いったんAllocCoTaskMemで確保したメモリをマネージドのメモリへコピーして
Bitmapを生成する方法がベターかもしれません。
※Bitmapクラスは派生できませんでした。派生ではなくラップすれば良いかもしれませんが、、、
質問させてください。 byte配列に対してbyte並びの検索をかけたいのです。 今はバイト単位での比較ループを回していますがもう少しすっきりした書き方はないものかなと……。 (内容が文字であればstringに変換してIndexOf()でいけるのですが、対象が00〜FFの何でもありなので) STLであれば vector<char> v1, v2; ・・・ vector<char>::iterator it = search(v1.begin(), v1.end(), v2.begin(), v2.end()); の機能です。 具体的には byte[] v1 = File.ReadAllBytes("A.bin"); byte[] v2 = { 0xFD, 0xFE, 0xFF }; で、v1中でv2のバイト並びの位置を(存在すれば)返すようなものです。
残念ながらないね 配列の部分比較すらないからな・・・ いっその事BM法やKMP法を作ってみたら
(´・ω・`)
それは俺も考えたけどもw
たかだか数十バイト程度ならそれでも良いかもしれないが・・・ データがMBとかだったらどうすんだよwいちいち16進数文字列に変換とかやってられないわw
そういう時こそ C++/CLI の出番です std::search で出来るものは std::search にやらせればよいのです
std::searchってただのゴリ押し線形検索でしょ そんなもんC++/CLIのプロジェクト用意したりしてる間に自分で書けるわ
まあなw
既にC++/CLIを使ったライブラリを持ってる場合は割と有用な手
\0付けてpinしてDllImportでCRTのstrstr呼んだら
助けてください。C#の質問です。 Generics制約でTryParseメソッドを実装している型のみを引数に取るようにしたいんですが、 基底のインターフェースがある物と思っていたらどうも各々のクラスで定義している事に今更気付き、困っちゃいました。 逃げ道として実行時にメソッドの有無を調べる方法を考えましたが、 実行効率は悪くなるでしょうしコンパイル時に弾けないのでコーディングルールにも変更が必要になりますし、避けたいです。 何かいい方法はないでしょうか?
自作型と暗黙変換を使うとか
>>656-657 ジェネリック制約に求められるのは implicit reference conversion だけど、
implicit operator で定義できるのは user-defined implicit conversion なんだよね。
659 :
658 :2013/01/30(水) 07:26:00.93
implicit reference conversion ではインスタンスの同一性を保ったまま型変換をしなきゃいけない。 user-defined implicit conversion では変換時にAのインスタンスが生成されるから同一性が保たれない。 implicit reference conversion の例 ------------------------------------- class A {}; class B : A {}; var b = new B(); var a = b; // a と b は同じインスタンスを参照している。 user-defined implicit conversion の例 ------------------------------------- class A { public static implicit operator A(B b) { return new A(); } } class B {}; var b = new B(); var a = b; // a と b は別のインスタンスを参照している(変換時にnew A()してるから)。
660 :
デフォルトの名無しさん :2013/01/30(水) 07:56:41.57
public interface IFoo { ... } private class FooImpl : IFoo { public FooImpl( Bar bar ){} } とあるとき、 Bar b = new Bar(); IFoo f1 = new FooImpl( b ); IFoo f2 = new FooImpl( b ); で f1 == f2 がtrueを返すようにはできませんか? FooImpで==と!=をオーバーロードしてbarを判定するようにしたら (FooImp)f1 == (FooImp)f2 はtrueになりますが f1 == f2 はfalseのままです。 FooImpでEqualsをオーバーライドしたら f1.Equals( f2 )はtrueを返すようにはなりましたが
無理。解決策があるとすれば、インターフェースをやめて抽象クラスにするくらいか。
そうですか。 FooImplのコンストラクタをプライベートにして キャシュされたインスタンスを返すメソッドを作ることを検討します
デザイナーに置いた部品のプロパティを帰るときForm1.csのなかに書かないと変えられません プロパティを変えるのがメインのソフトを作る場合だとForm1.csのコード量が多くなってしまうのですが 先輩方はどうやって書きますか?
C#で文字列を暗号化して復号化する最強の方法を教えてください
コントロールや画面上に直接描画する方法は無いでしょうか? したいこととして、コントロールを引数にとってそのコントロール上に ビットマップを表示させたいです。1枚だけでなく動画として次々切り替えたいです。
666 :
665 :2013/01/30(水) 15:43:26.08
すいません。途中で送信してしまいました。。
ヒントをいただけましたら後はこちらで調べてみます。
よろしくお願いいたします。
>>664 .net3.5以上ならAESで暗号化、.net2.0ならDESじゃないでしょうか?
標準のライブラリに入っているので
>>666 こんな簡単なものもググれない馬鹿が自分で調べるとか強がるな
二つの画像を用意して間違い探しが作りたいんですが クリックしたとこの色を比較する方法を教えてください
ググレカス
まるっきり全部かよ 少しは自分で調べて急所だけ質問しろゴミクズ
どこをどうみても急所じゃんw
675 :
665 :2013/01/30(水) 18:17:26.54
>>667 ありがとうございます。
申し訳ないのですが、受け取ったコントロール内でOnPaintを実装するのではなく
任意のコントロールを受け取ってそのコントロール上に画像描画することがしたいです。
BitBltなどがそれに近い気がするのですが・・・・
void KusoHage( Control c ) { using( var g = c.CreateGraphics() ) { // SukiniByougaDemoNanndemoShitaraEeYanHageGa(); g.DrawImage( kusoHageImage, pntNull ); } }
>>675 まあそのリンク先をちゃんと読んでないからそういう質問するんだわ
あとOnPaint以外でGraphicsを取得して描画する方法だと
そのコントロール自身の再描画で消えるからねクソハゲが
ベンチマークをとる方法を教えてください
内容を理解してないベンチマークって何の意味があるの?
a@b@c@d@e こういう文字列があって 最初の@の部分で文字列を分割して string[] sに s[0]はa s[1]はb@c@d@e という風にいれたい Splitだと@の数だけ分割するので何か良い方法はありませんか? アルファベットの部分の文字列の長さは不定です
形式が決まってるなら正規表現でキャプチャしたほうがいいかも
オーバーロードはねーだろw 自分でどうにかしろ、としか言ってない
textboxにプレースホルダを表示する方法ありませんか? WPFのは検索で引っかかるんですがWPFは使ってないので困ってます
687 :
デフォルトの名無しさん :2013/01/30(水) 22:03:30.58
構文というか入門書レベルの理解は終わったと思ってるけど、他言語の経験ないから 現実の処理やデータ構造を、c#のクラスやライブラリをどう使うとうまく 実装できるのかがわからないっす。次に読むべき本、ありますか?
アルゴリズムとデータ構造
ロジックを作る っていう表現間違ってるよね?
691 :
デフォルトの名無しさん :2013/01/30(水) 23:09:14.20
C#で開発するとき、ソース管理にコミットするファイルはどこまでですか? .slnは必要ないですよね? .csprojはXMLですが、これも共有するべきですか? しないと、特定のクラスを追加したとかそうでないとかが分からないと思うんですが
bin, obj, .suo, .csproj.user以外 .slnもいるに決まってんだろ
うちはAnkhSVNが勝手にやってくれてる
694 :
デフォルトの名無しさん :2013/01/30(水) 23:24:03.75
>>692 .slnや.suoもなんですか・・・
ありがとうございました。
>>693 VSSもしくはSubversionなんです・・・
AnkhSVNが何なのかわかってないのか
696 :
デフォルトの名無しさん :2013/01/30(水) 23:35:21.37
すいません、トータスSVNの間違いでした 各ユーザーでクライアントが違ってもSVNは正常に使えるんですかね・・・
>>674 色の取得から比較までどれだけの工程があると思ってんだゴミクズ
.suoはソリューション構成の選択とかが入ってるので あった方が便利ではあるけど 頻繁に更新されるのでなんとも
700 :
656 :2013/01/31(木) 07:30:09.98
>>657-659 お返事ありがとうございます
暗黙変換の方を少し調べてみましたが根本の解決には至りませんでした。
また、(システムの)構造上、一度走り出したら実行時にこける事は例外で捕まえたとしても容認できない部分でして
共通以外の部分にリスクを散在させる事はもっての他と指導を受けました。
自分が要件をきちんと把握せず質問した事もミスリードになっていたと思います。すみません。
結局、呼び出し側自体がファクトリで作成されるので
その時に適切なパーサーを持たせる様に共通の方で対応してくれる運びとなりました
この件は自分の責任ではなくなりましたが、今回の事は勉強になりました
ありがとうございした
701 :
リリン :2013/01/31(木) 10:27:41.05 BE:471355496-PLT(45072)
手紙みたいだな。
702 :
デフォルトの名無しさん :2013/02/01(金) 12:59:25.26
ローカル変数ってメソッドが呼ばれた時点で割り当てられるんですか? それとも変数を宣言してる位置までいったら割り当てられるんですか?
703 :
デフォルトの名無しさん :2013/02/01(金) 13:17:20.00
FormにtabControl,tabControlにボタン4つ これらのbackgroundImageにBitmap、このとき ボタンの再描画がパラパラ状態。 直したい。。。
704 :
デフォルトの名無しさん :2013/02/01(金) 13:20:16.88
BitmapのちらつきはdoubleBufferdで解消。 suspendLayout,WM_SETREDRAWなど試すも効果なし 使い方か?
コンボボックスがあって、1〜5までの数値を選択することになっていますが、初期値はSetting.settingsに書いてます。 SettingsにValue=1として、 ComboBox.SelectedText = Properties.Settings.Default.Value.ToString() にしたら反映されません どうしてなんでしょうか
SelectedTextはテキストボックス部分に手入力する際のコピーとかの対象となる選択中の文字列 Text使うとかする
できました ありがとうございました
>>702 スタックを効率よく使おうと考えたら、
戻り値領域をスタックにつんで、ローカル変数を積んで、引数を積んで、
メッソッド内のコードに飛ぶって感じなのだろうか?
ローカル変数の実装はコンパイラ次第。 少量ならスタックを使わずにレジスタ上で済ませることもある。
710 :
デフォルトの名無しさん :2013/02/01(金) 15:36:02.22
ちょっとした結果の表示に コンソールアプリケーションだとConsole.WriteLine使えばいいですけど、 フォームアプリケーションの場合は 一々テキストボックスなりメッセージボックスなりに表示しないといけませんか? デバッグの時だけ中身をみたい場合などみなさんどうしていますか?
711 :
710 :2013/02/01(金) 15:40:57.00
すいません。自己解決しました ありがとうございました
712 :
デフォルトの名無しさん :2013/02/01(金) 15:58:53.26
あーなるほど・・・IDでない板はそうやっていたずらし放題なのね・・・
でなに結局解決してないの? 簡単にはDebug.Printとか使うと良いよ
ブレークポイント
全く困ったもんだな
716 :
609 :2013/02/01(金) 16:24:28.19
>>702 基本的にはメソッドを呼んだ時点。ILにコンパイルされた段階ですでに
ローカル変数は全て先頭にまとめられてる。
ただし最適化で消えたりすることはもちろんある。細かいこと言うと
クロージャの中で使われてる変数はその宣言位置でヒープに確保される。
俺、デバッグなんてしなくてもバグが無いから問題ない。 なぜソースを見ただけでわからないのか不思議だ。
718 :
デフォルトの名無しさん :2013/02/01(金) 16:40:44.82
>>713 ありがとうございます、早速調べてみます。
どういたしまして
Intの配列を作る場合、ポインタ変数はメソッドを呼んだ時点で割り当てられ、実体は命令の所で割り当てられる
C#でおk
>>710 ,718
フォームアプリでConsole.WriteLineしたら「出力ウインドウ」に出力される。
jane styleの板一覧にあるツリーみたいなのってなんてコントロール名をデザイナに置いたらできますか?
TreeView
どうもありがとうございます
すいません前にlistViewのヘッダをクリックしてソートさせたい質問をしたものですがあれからずっと試してみたものの解決できません どなたかサンプルいただけませんか
諦めてDataGrid使えばいいと思うよ
C#というよりVisual Studio 2012の質問なんですが…。 デバッグ実行中にDebug.Assertに失敗したら、ポップアップを出すとか実行を一時停止させることはできませんか? 出力画面にエラーメッセージが出るだけだと、気が付かないことが多いので…
TraceListenerを継承したクラス自作してListenersにAddすればればいいんじゃね?
731 :
デフォルトの名無しさん :2013/02/02(土) 09:55:54.73
画面にたくさんボタンなどを配置したとき、 ボタンの描画がパラパラとなるんだが、 回避できないのけ?
ImageAnimatorのソース見ると50ms間隔でスレッド回してるんだけど、なんか理由とかある? gifの最小delayって10msじゃないの?
今働いてる案件で、4つぐらいあるサーバーのIPアドレスとポート番号をiniファイルとかに書いてと言われました それを発言した方はあまりプログラムに詳しい方ではないのでiniファイルというのにこだわりはないはずですが、 とにかく、ユーザーが自分たちで変更できるようにして欲しいそうです それ変更専用の画面とかテキストボックスとかは作らないようです settingsファイルは、ユーザーごとにそのIPアドレスとか変えるわけではないので、おかしいと思います。 resourceファイルは、ユーザーが自分たちで変更できないのでおかしいと思います すると・・・どこに書くべきなのでしょうか
exeと同じ場所にXMLファイルでも置いておけばいいんじゃないか? XMLならC#だと扱いやすいし、iniは、そもそもサポートされてない。
>>731 そんな抽象的な質問じゃ心当たりが多すぎて答えようがないわ
しいて言うならそのプログラムが全体的に糞過ぎるってことかな
737 :
デフォルトの名無しさん :2013/02/02(土) 10:53:37.55
答えてるっていう
>>733 なぜSettingsじゃダメなのか理解できない
設定ファイルをNASにでも置くつもりか?
×iniファイル ○iniファイルとか
user-wide ではなく system-wide の設定をユーザが変更しやすいようにするには
どこに配置するのがよいか、というのが
>>733 の質問の趣旨で、ファイル形式は
問題にしてないんじゃないか。
個人的には、exeと同じ場所に配置してUACに配慮した簡単な設定画面を作ってあげるのが
いいんじゃないかと思うけど。
743 :
デフォルトの名無しさん :2013/02/02(土) 11:44:12.80
c#の質問というよりオブジェクト指向プログラミングの設計についての質問です。 ブロック崩しをc#を使いwindowsフォームで作っています。 とりあえずラケットを動かしてブロックを消すようなプログラムは書けたのですが せっかくC#で書いてるのだからちゃんとオブジェクト指向の原則に則り クラスごとに役割を与えて拡張にも強いような設計をしたいと思っています。 考えているクラスが ・ブロック ・ラケット ・ボール ・描画クラス ぐらいなのですが、もしブロックとボールの衝突判定を考える際 どのようなクラスにどう判定させるのがよいかがイマイチ分かってないので もしよろしかったらなぜそうするべきなのかという理由も含めて教えていただけると嬉しいです。
>>733 そのシステムはクライアントは何台くらいなのでしょう。
サーバーが4つなら、クライアントは10や20では収まらないのでは?
サーバーが変更になったとき、ユーザー自身で設定を変更できるようにという意図だと思いますが
設定もれは発生することでしょう。
たまたま私も同じようなことを考えていて
どこかのサーバー(WebでもNASでもデータベースでも)にサーバーのアドレス設定を共通データとして置いておいて、
ユーザー設定で、共通データのありかを指定するようにしようかと考えています。
共通の設定データは、サーバーの変更などがあったときにサーバー管理者が変更する。
クライアントアプリのユーザーは、共通設定を使うかどうかを各自設定する感じ。
開発用や教育用などの本番とは別のサーバーを使うのも容易になると思います。
745 :
733 :2013/02/02(土) 12:17:20.39
今作っているアプリケーションは、10名程度のコールセンターのクライアントアプリとなります。 サーバーは4台ありますが、そのコールセンターのどのクライアントからも使えます。 Settings.settingsに書きたくないというのは、 サーバーのIPアドレスとポートの一覧は、コールセンター全体で変わらないはずなので、 本来はアプリケーションスコープで一括して管理すべき事項であり、 ユーザースコープの設定ファイルで各々のユーザーに書かせるのはおかしいと思ったから・・・・・・ですが、 確かに、.xmlにしても.txtにしても.iniにしても、ローカルファイルで更新させる場合は、 ユーザーそれぞれが自分で更新することになってしまいますね・・・。 ただ、user.configは、やや探しにくい階層にあるので、Settings.settingsはやはりあまり使いたくないです。 iniファイルは、VB6時代の遺産らしいですし、今はあまり推奨されてないようなので、 皆さんのご推薦のあった.xmlか.txtを、exeファイルと同じ階層に設置して使いたいと思います。
>>743 神様(ゲームロジック)クラスが上からまとめて処理する。
ラケットクラスやボールクラスなどに当たり判定メソッドは持たせない。
なぜなら、結局両方の性質を詳しく知らないと処理できないので、
一方のメソッドとして実装しても意味がないし、現実の物理法則だって
どちらがどちらを押し返してるわけじゃなくて対称なんだから一方のメソッドにするのは不自然。
>>745 app.configはexeと同じ階層だよ
実行時に書き込む必要があるのだけスコープをユーザにしてユーザごとのフォルダに配置される
シェアウェアにあるようなシリアルを入れると全機能が使えるやつが作りたいのですが これって何てコントロールを使うのでしょうか?
>>743 ラケットクラス・ポールクラスなど、何かしら形のあるものは、何かしら形のあるものとして抽象クラスを作っておく。
もしくは、インターフェースを実装して大きさや位置を返すようにしても良い。
実際の当たり判定は、直接ラケットクラスなどに定義するのではなく、別にクラスを定義してそこにまとめておく。
bool Utility.Hit( a , b ); のような感じで a の範囲に b を含むかを判定するようにすることで
判定処理を一元化することができる。ラケット、ボールといったクラスは、自分の位置と大きさだけを実装すれば良い。
インターフェースを使うことでラケット、ボールといった異なるものを同一の性質を持つものとして振る舞うことができる。
C#と相性のいいデータベースってありませんか?
>>748 テキストボックスでも設置して指定された文字列が入力されたら、全機能使えるようにすれば良いだけ。
>>745 > 今作っているアプリケーションは、10名程度のコールセンターのクライアントアプリとなります。
同業他社さんだ (w
クライアントの IP アドレスの設定はどうやってるの?
設置時にやってるなら、そのときに一緒に設定するような仕組みにすればいいし。
DHCP とかでやってるなら、DNS 立てて IP アドレスじゃなくてサーバー名を設定しておけば
良いんじゃね?
>>752 だったらWPFに乗り換えて好きに弄れよ
泥臭い業務用土方ツールWinFormsなんて使っておいて見た目気にするとかアホか
画像内の特定の座標位置のRGBを取得するライブラリありませんか?
>>746 例えばボールクラスに反射メソッドを付けるのはどうなんでしょうか?
それよりもゲームクラスで全てボールの動きを制御してしまっていいのでしょうか?
>>749 そのUtilityクラスはstaticでしょうか?
>>757 本当にボールの速度の向きを反転させるだけなら ボール.反射(X方向); でいいと思うけど、
実際ゲームとしてはそう単純にはいかなくて他のオブジェクトの兼ね合いとかで
衝突相手ごとに場合分けが必要になるだろうから、神様にお願いするか
逆に ブロック.反射(ボール) の方がいいかも
>>758 ブロッククラスに反射を導入するということですか?
壁への衝突とは違う方法にしなければならないので
なんとなく統一性がないような気がしてしまいました(壁クラスを作ったらいいのかな?)
ラケットとブロックそれぞれに反射(何か);を付ける必要があるんでしょうか
>>757 Utilityクラスは、staticクラスで判定処理とか距離計算とか
汎用的な使えるメソッドを定義しておく場所として使う。
.NETのMathクラスのようなものと考えれば良い。
>>760 オブジェクト指向でやるなら引数でオブジェクト全部受けるより
インスタンス.判定(別のやつ);のほうがそれっぽいかななんて思ったりしますがどうでしょう
>>761 その場合、拡張メソッドにするのもあり。
static class Utility{
public static bool HitContents( this ISprite source , ISprite target ){
// 判定処理
}
}
こうすることで hoge.HitContents( fuge ) のようにメソッドを呼び出すことができる。
※拡張メソッドは、インスタンスメソッドとは違うことには注意。
この場合、具体的な判定処理を外部に抜き出しただけに過ぎない。
>>761 それっぽいとかいう問題じゃなくて、当たり判定は本質的に対称な処理なんだから
どちらかに属するべきじゃない。C#で演算子オーバーロードが全部staticなのと同じ。
ただしブロック崩しに限るなら常にボールと他の何かの衝突になるので、その意味では対称じゃないね。
ボールの性質は決まっているとすると、ブロック.衝突しているかどうか(ボール) の方が
場合分けも多態使ってスマートにやれていいかもしれない。
>>747 確かに、app.configを直接編集させるという手がありましたね・・・
>>753 同業他社といっても私はただの派遣の土方です
既に稼働しているサーバーを使うことになると思います。
IPアドレスでもらえるか、サーバー名でもらえるかはまだわかりません・・・
>>762 恥ずかしながら拡張メソッドのことを知りませんでした。
記法はこちらの方がよさそうですね
>>763 だんだんイメージが固まってきました
あとついでと言ったらなんですが
以前、ゲーム(例えばチェス)のクラスがあってルールをインターフェイスで追加(?)してるコードを見たことがあります。
曖昧な質問で恐縮ですがルールをIRuleみたいにインターフェイスを使って追加みたいなことってできますか?
そのクラスとインターフェイスの関係性がよく分からないのですが(汗
間違ってるかもしれないんでそこはすいません
実際使いもしないのに意味もなくインターフェイス作って多態可能にするのは 初心者はよくやるけど有害無益。
PictureboxのImageプロパティを用いてBitmapを描画したいのですが、pictureboxに描画した際に拡大すると自動で補間処理が行われてしまいます。科学技術計算の結果を表示するので、自動補間されてしまうと都合が悪いです。 出来ればGraphicsオブジェクトを用いずにImageプロパティで処理したいのですが、調べても補間処理を無効にする様なオプションを見つける事が出来ませんでした。 ご存知の方がいらっしゃいましたら教えていただけませんか?
インターフェースから設計するのは、慣れている人がやること。 クラスを実装していると、どうしても同じようなメソッドが出てきたり、 同じような性質をいくつものクラスで実装することがある。 そういった場面に直面したとき、インターフェースや静的クラスなどに分離してやればいい。
>>767 言ってることが全体的に意味不明だけど、
>科学技術計算の結果を表示するので、自動補間されてしまうと都合が悪い
特にここが何を言ってるのかわからない。
科学技術計算なんて単語持ち出す割りに小学生レベルの知能だな
C#保育園(幼児用)に改名しろよ
朝から晩まで部屋に篭って、PCと性器弄ってるだけの人とは、言語に向き合える時間が違うんですよ。
そもそもどんなフォーマットの画像だよ
当たり判定は当たり判定クラスにやらせればよい オブジェクト指向はただの宗教だから オブジェクト指向の原則通りにやっても良いコードにはならない
>>777 なら読み込んで画素を取得すればいいだけじゃない
C#なら楽勝でしょ
>>778 なんて名前空間のをusingすればいいんですあk?
オブジェクト指向のパターンなんてJava厨が考えたものだから それをそのままC#に適応するとか無意味だし無駄なこと。
>>779 流石に基本的すぎるのでググってくれ
検索能力もプログラマには重要な技術だ
>>767 >出来ればGraphicsオブジェクトを用いずに
なんだよGraphicsオブジェクトさんも使ってやれよ
オブジェクト指向はスモールトーカーが考えたものでしょ それを取り入れたおかげでCからはだいぶマシになったけどね
画像を高速に読み込んで表示する方法おしえて
>>767 PictureBox のサイズを Image のサイズに合わせればいいだけ
Panel に入れて Panel を AutoScroll にしておけば
大きくなりすぎてもスクロール出来る
画像を拡大縮小するときGDI+さんだとおせっかいな補完してくれたりエッジがおかしくなるバグがあるんで GDIでやらないといけない場合があるよな
>>786 ちゃんとプロパティ設定すればそんなことないはずだけど?
フォームにぴったり配置したLabelを フォームのサイズに合わせてLabelの文字の大きさを自動的にフォーム一杯に自動調整する方法を教えてください
テキスト変更時に 自分で調整するしかなくね
>>788 Labelを継承してそういうコントロールを作ればいい。
前にまったく同じものを作ったけど5分とかからなかった
int i = 0; byte b = i; はエラーになり、byte b = 0; が問題ないのはなぜですか? 変数 i も整数リテラルも同じ int だと思うんですが。
型が違うじゃん 変換しろよ
b = 0は必ずb = 0だけど、b = iは必ず b = iにはならないから。
これだからスクリプト脳はw
byteの0とintの0は違うから 1年1組の木村君と 1年2組の木村君は違うでしょ
const int i = 0; byte b = i; でも問題は起きないよ コンパイル時に範囲チェックできるかできないかの差
>>792 byte b = 0; の場合も、b は byte、0 は int で、型が異なりますよね。
でもなぜエラーにならないのか疑問です。
>>793 float f = 0.0; も必ず 0 と表現できますが、なぜこちらの場合は double を float にできないと言われるんですか?
だったら byte b = 0; の場合も、int を byte にできないと言われないと納得できないんですが。
あの、'a'と"a"の違いわかる?
>>797 浮動小数点数の場合は
どんな値なら正確に変換できるかを完全に判定するのが大変だから
サボってんだろう
>>797 intはbyteに暗黙にはならないし、doubleもfloatに暗黙にはならない。
0はintにもなるしbyteにもなる。
1000はintになるけどbyteにはならない。
>>797 > float f = 0.0; も必ず 0 と表現できますが、なぜこちらの場合は double を float にできないと言われるんですか?
リテラルの小数点数はdoubleとして扱う決まりだから
0.0はdoubleで、doubleはfloatで表現しきれない
>>797 あんた0って簡単にいっているけどね
intの0は000000000000でbyteの0は0000なわけよ
C言語ではint i = 0; char c = iができました。 なんで上位のC#でできないのか、もっと論理的に説明してください。
宿題ですか?
お前らに対する宿題です。
それはCが型に緩いだけ その処理が最終的にどういう機械語になるか想像すれば プログラマがどうするか決めなきゃいけないって結論になるはずなんだが
C#はCに比べて暗黙変換にかなり厳しい 整数のコンパイル時定数の場合は 範囲チェック通ればスルーしてくれるけど それ以外は元の型の範囲が新しい型の範囲に収まる場合以外は コンパイル時エラーを出す
>>803 Cではサボってた型チェックを上位のC#ではきちんとやるようになった。
間違いやすい書き方を認めるか認めないかで 全然使いやすさが違うよね
JavaとC#の型づけの強さって最上位なんだっけ
つまり、C言語では意図を理解したうえで自動的に型変換してくれていたのに、 C#では頭のおかしい開発者がその便利な機能を削除して、わざわざ不便な オナニー仕様を教えつけた、ってことでいいですか?
機械語レベルで考えたとき、char i = 0 も int i = 0 も 0 として表現できる。 コンパイルして機械語で扱う時点でそこに型は、存在しない。ただの0と1の羅列だ。 そもそもintやlong、charといった型は、人間にとってわかりやすいように名前を付けただけのことだ。 int a = 0; char b = a; 単純に考えれば、intは、charの範囲に入るからできると思うが、これは、多くの場合ミスだ。 機械語レベルで表現したとき、範囲に入るからと型が合うとはならない。 C#では、このような場合、プログラマに修正を託すように警告を促すようになっている。 一言で言うならC言語は、よりコンピュータに近く。C#は、より人間に近い。 C言語での経験則上、多くの場合でミスであろう書き方は、警告なりコンパイルエラーが出るように設計されている。 よく変数を宣言したら0で初期化しろ。とは言うがC言語で定義したままの変数を使うとでたらめな値になっているが C言語では、問題なくコンパイルが通る。C#では、コンパイラで0ないし規定値に初期化されるが、初期化されていない ローカル変数を使おうとするとコンパイルエラーになる。
CでできてC#でできないことなんていっぱいあるぞ。 int *p = 0; int i = *p; とかさ。
>>811 頭のおかしいおまえは、PerlとかPHPでもいじってろよ。
型気にしなくて良いからおすすめだぞw
厳し過ぎるので全部stringで
>>811 おまえのオナニーよりずっとスケールが大きいぞ。すごいね。
これがめんどくさいとか 一生スクリプトでもやってればいいんじゃないかな
なんか頭がおかしい低能用の言語だったみたいですね。 僕みたいな高等な人間には相応しくないようなので、 C#を使うのはやめます。 僕はそれなりの立場にいる高等な人間ですので、この先 C#を使う人はどんどん軽蔑し会社からも社会からも排除して いきたいと思います。
次の人どうぞ
namespaceって絶対書かないとだめ?
はい
はい、お大事に
>>820 言語的にはなくても良い
実務的には間違いなく付ける
>>820 余程小さなコード以外は普通は書くね。
全部自分で書いてる限り実際はまず名前の衝突なんて起こらないんだけど、
型を名前空間で分類することによって、多少は可読性を上げることはできるから。
まあ、ぶっちゃけそんな大した御利益があるわけじゃないが...
VSが自動的に付けてくれるから 付けないという選択肢なんて考えたことないわ
Splitの引数は文字の配列ですが "a,b,c".Split(','); のように文字そのものを指定しても動作しますよね。 便利なんですけど "a,b,c".Split(new Char[] {','}); じゃなくても良いのはなぜでしょう。
可変長引数を取ってるから
おなじだから
iPadでmsdnが見れないのは嫌がらせなのか?
拡張メソッドで対応できるようになったからまあいいとして なんでこの宣言が無いんだろう public string[] Split(params String[] separator) 絶対にStringSplitOptionsを指定しなければならない理由がよく分からない
なるほどオーバーロードの一覧では Split(Char[]) となってますが、構文では public string[] Split( params char[] separator ) となってますね。パラメーターだから1つでもOKなんですね。
>>830 後から追加されたメソッドだから互換性を壊さないための配慮だろ
VBのOption Strict OffだとStringからCharへの暗黙の型変換があるから
今までChar[]だったのがString[]の方が使われるようになってしまう
なるほどお どこぞの言語は迷惑なもんだなあ
VBのやろう・・・
>>832 今確認したけど、VBでOption String Off でもString[]からChar[]へは
暗黙変換されない。
暗黙変換は String から Char[] への変換だお String[] の第一引数しか使わないケースの事だお
だからVBは恐らく関係がない。 ペゾルトの本だったか、Graphics.DrawRectangleにRectangleFを使うバージョンが ないのは不可解だとか書いてあったけど、それと同じでただの凡ミスでしょ
string a = "aaa"; String a = "aaa"; どっちがただしい?
どっちもただしい
string = 予約語(= System.String) String = System.String どちらも正しいが String のみで書くには using System; が要る
>>836 試した
http://ideone.com/mmLtga 確かにStringはChar()に暗黙的に変換されるが、それはまあいいとして
String()のオーバーロードがある場合でもChar()版があるとChar()の方が呼び出されるみたい。
なぜかStrict OnにしてもChar()の方が呼ばれる。
なんだこの意味不明なクソ言語は。
ideon上でしか試してないからもしかしたらMonoのバグかもしれないけど
お薬だしておきますねー
>>841 今確認 さすがにMSのVBコンパイラはそこまで酷くなかったわ
そこまでではないが酷かったのか
>>841 そもそもString⇒Char[]の暗黙変換もないw
Stringが1文字のリテラルの場合に限ってString⇒Charの暗黙変換は働く。
とりあえず事実を3行でまとめてくれ
>>841 はVB.NETの話だろ
すくなくともVB.NETでOption Strict Offなら暗黙変換できる
Dim x As String = "abcdef"
Dim s As String
Dim c() As Char
c = x
MsgBox(c)
s = c
MsgBox(s)
float等に使うサフィックスって大文字と小文字どっちが一般的なんですか?
そりゃあShiftキーが要らん方に決まってる
lは警告でるけね
個人的には 0x12ABCDEF 1.0E3f 934m (doubleのd/Dやlongのl/Lは省略する) だな 16進数のABCDEFと指数のEだけ大文字
textboxからフォーカスが外れたときに特定の処理をさせたいのですが textboxにフォーカスを持ってきて文字が入力できる状態のときに、Winキー+Dでデスクトップを表示させても処理が実行されません
何の処理?
とりあえず何でも良いんですがメッセージボックスを表示するなど
ウィンドウ単位で見た場合フォーカスが外れる訳じゃないからな 別のウィンドウを一旦アクティブにして戻したらフォーカスが明後日のところにいってたとか嫌だろう
ウィンドウがアクティブから外れたかどうかっていうのはどうやって調べられますか?
>>852 Validateは発生しないはずだけどLostFocusは普通に発生すると思ったが...
とりあえずSPY++でどんなメッセージが飛んで来るか見てみたら?
LostFocusは非推奨、Leave使えって話よ
無料版しかもってないためSPY++使えませんでした。。。。 private void Form1_Leave(object sender, EventArgs e) { MessageBox.Show("Test"); } private void textBox1_Leave(object sender, EventArgs e) { MessageBox.Show("Test"); } Formとtextbox両方に書いてみたんですがメッセージが表示されませn
Leaveの解説読めばいいよ
>860-861 ありがとうございます いまからやってみます
System.Text.RegularExpressions.Match m; while(xx){ 〜〜 } console.writeLine(m); こう書くとmが割り当てられてねえ って言われるけど mはwhileの中で必ず割り当てされますのでエラー判定を無視して欲しいのですが どうしたらよいでしょうか。 noとかだったら適当な値を入れてやればいいのですが 簡単に代入出来ない形はどうしたらよいでしょうか
・・・え、初期値にnull入れとけばいいんじゃないの?? なんかトラップがあるのこの質問???
あれ、nullって普通に入るのか・・・ Null 許容型だとかあるから入らないかと思ってた。 失礼しました。
なんでbyteとshortintよりintのほうがパフォーマンスいいんですか? なんでstringよりcharのほうがパフォーマンスいいんですか?
レジスタの都合
メモリーの都合もあるんじゃないかにゃ
メモリーの都合だとサイズ小さいほうがキャッシュに収まりやすくて速い場合もあるけどな
パフォーマンスに差なんか本当はないに一票。 x86のアーキテクチャ知らんけど、byte命令やword命令ぐらいあると思う。 だとすれば恐らく差なんて存在しない。 構造体とかのパッキングの話と混同されてるような気がする
データの配置がワード境界に一致しているかどうかでアクセスが 1サイクルですむか2サイクルかかるかの差が出ることがあったりなかったり、 っていうのはCの話?C#だと関係ない?まったくじゃないけど気にするようなことではない? 確か、Cでのintは最も効率のよいサイズじゃなかったかな。
最も自然なサイズであって、最も効率の良いサイズではないな >Cのint 64bit機でも互換性を重視して32bitのままにしてる処理系ばっかだし x86にバイト命令はあるけど、 Cには(C#にもだけど)汎整数拡張ってルールがあって intに拡張されてから演算が行われるので使われない 要するにintに拡張するコストがかかるという事だ
配列へ連続でアクセスしまくっててメモリアクセスがボトルネックならサイズが小さいほうが有意に速かったりするよ
CPUバウンドの場合…自然なサイズを使うと速いことが多い メモリバウンドの場合…読み書きするメモリの量が少ないほうが速いことが多い 一般にはこうだろうな
ま、そだろね でも、上の方はそこまで大きな影響ないとは思うけどね 下は結構影響あると思うけど
876 :
デフォルトの名無しさん :2013/02/04(月) 15:26:36.81
C#用の分散処理フレームワークありませんか?
C#はASP JAVAはJSP JAVAのServletに該当するのかC#ではなんですか?
.ashx かな WebHandler / IHttpHandler あたりでぐぐる
既にいくつかのItemが格納されたitems List<Item> items 要素数30とか これに、関数で生成した List<Item> otheritems 要素数5とか を後ろに追加したいのですが 一般的な方法としてはどのように処理するものなのでしょうか?
items.AddRange(otheritems);
Formで最大化・最小化前のサイズってプロパティとかから取得できますか? それとも最大化・最小化を検知して自前で管理するしかないですか?
RestoreBounds
ありがとうございます
.Net4.0がインストールされてるとVC#って標準で.Net4.0のclientなんちゃらってやつのプログラム前提で作るじゃないですか それで、.Net2.0で対応している仕様で書いたら(Linqとかそういう上位バージョンの機能を使わない) .Net2.0しか入ってないPCでも動きますか?
プロジェクトのプロパティでターゲットを2.0に変更しないとダメ
4系(4.0, 4.5)向けにビルドすると2系(2.0, 3.0, 3.5)では動かない。逆は動く。VMの仕様が変わってるからな。 ターゲットはプロジェクトのプロパティで変更できるから2.0選べばおk
なるほど、ということは最初から2.0に変更して作ったらほとんどのPCで動くプログラムが作れますね 本当は新しいもの好きなので4.0がいいんですがネットカフェとか2.0くさいし
なんかデザイナにメニューを置いたり、タスクトレイを置いて右クリックしたときに表示されるメニューがださいんですが 普通のソフトにある定番のあのデザインにすることはできないのでしょうか?
定番のあのデザインとか言われてもよくわからないけどw
>>888 2.0向けにビルドした場合はマニフェストファイルを弄って4.0動作可と宣言しておかないと4.0では動かないから注意しろよ
>>889 MenuStripかWPF
WPFだと確かタスクトレイ使えないから 結局タスクトレイ使おうとするとフォームと同じになってしまう
>>889 MenuStripやContextMenuStripじゃなくてOS標準のメニューがいいってことか。
MainMenu, ContextMenu というコントロールを使えば可能だけど、ちょっと面倒。
外観を変えたいだけならToolStripRendererでググればVista風とかOffice風とかいろいろ出てくる。
C#もしくはVB.NETで作ったアプリケーションの改修があって、 ソースはなくてスクリーンショットだけあるんですが ┌───┬───┬───┬ │ │ │ │ ├───┼───┼───┼ │ │ │ │ ├───┼───┼───┼ │ │ │ │ ├───┼───┼───┼ こんな風にセルが沢山あって、最初の二行だけセルの色がヘッダー含めて青いんです。 他から浮いてるようにも見えます。 それはプロパティ弄ればどうとでも変えられるんですが・・・。 ┌───┬───┬───┬ │ │ │ │ ├───┼───┼───┼ │* │ │ │ ├───┼───┼───┼ 現状はこんな感じで、※が表示されてしまっているんです AllowUsersToAddRowsをfalseにしたら、*は消えますが、今度は最初の列が残ったままです この列を消すにはどうすればいいのでしょうか?
最初の列ってなによ カラムか?
895が言うようにカラムのことなら DataGridView.ColumnHeadersVisible = false にすれば消える
control継承したクラスで、再描画が必要なプロパティ/メソッド内でInvalidate()と、呼び出し側でプロパティ/メソッド実行後にcontrol.Invalidate()って内部の処理とか異なる? 後者だと描画が更新されない ↓こんな感じ class PictureBox : ScrollableControl { public bool PreventInvalidate = false; public bool Magnify { get { return magnify; } set { magnify = value; 〜処理〜 if( PreventInvalidate ) Invalidate(); } } } //前者 pictureBox.Magnify = true; //後者 picbureBox.PreventInvalidate = true; pictureBox.Magnify = true; pictureBox.Invalidate();
ここ流れが速くてどの番号で質問したか忘れて返事かけません
そうですか
900 :
894 :2013/02/04(月) 23:43:05.55
最初の列、というのは ┌───┬ │ │ ├───┼ │* │ ├───┼ ↑ ここのことでした RowHeadersVisible = falseで消えました ありがとうございました。
901 :
897 :2013/02/05(火) 00:51:57.33
例のソース間違えた if( !PreventInvalidate ) Invalidate(); が正
>>897 pictureBox (先頭小文字) がどこかに定義されているとして、
それは PictureBox (先頭大文字) とは別物だよ。
903 :
897 :2013/02/05(火) 07:09:41.79
pictureBoxは、PictureBoxのインスタンスという意図で先頭小文字にしたんだ
単に後者はループ中に呼んでるとかじゃねーの
>>905 MonoDevelopのコンポーネントを組み込んで終了
うほっ
Dispatcher.BeginInvoke()に与えたタスクは、処理がDispatcher.BeginInvoke()が書かれたブロックを抜けるまで開始されないです 仕様ですか?
UIスレッドから呼び出したらそりゃそうなる UIスレッドで呼ばれるか他のスレッドで呼ばれるか分からないならInvoke使っとけ
910 :
デフォルトの名無しさん :2013/02/05(火) 14:31:30.22
TCP通信でサーバ側のケーブルを抜いた後の再接続で 接続拒否される問題に対策したいのですが こちら(クライアント)がTcpClientのGetStreamでとってきた NetworkStreamのインスタンスをClose (および、TcpClientのClose)をしたとき 相手サーバとのケーブルが抜けていたとき 自分はFINを送ってFIN_WAIT_1状態になるものの いつまでも相手サーバからACKが来ないと思いますが この状態で、Close処理は既に要求したので TcpClientのConnectをリトライして ケーブル復旧まで待っていても良いのでしょうか? ケーブル復旧したときに正しくFINが届きますか?
それC#の話なのか?
>>910 C#ユーザーはライブラリの使い方を知ってるだけで
中身は知らないからここで聞いてもわからないと思われ
913 :
910 :2013/02/05(火) 14:48:54.41
C#ユーザでも実装内部を知っている人もいると思うんですが。 Close内部でFINをリトライして、Closeが終わったときに、FINもやめるのかな・・。 その後、Connectリトライしてケーブル復旧してもサーバがFINを受け取っていない ので、接続拒否するとか。 Close自体の成功判定ってないので、Closeをリトライすることもできないですよね。
jane stypeのスレの内容(1〜1000レス)を表示するところって何のコントロールで表示してるんでしょうか?
>>909 仰る通りUIスレッドからでした
ただ、Invokeは同期ですよね?
DBアクセスみたいな思い処理を別スレッドにやらせたかったんですが、
Invokeだと、UIスレッドでDBアクセスされちゃいませんか
>>915 いや元々UIスレッドで実行してんだろ
BeginInvokeは別スレッドからUIスレッドに処理を移譲するときに使うんだぞ?勘違いしてないか
別スレッドでやりたいならTaskでも使えばいいんじゃね
>>916 そうだったんですか
壮大な勘違いしてました
ありがとうございました
>>917 ためしてみます
ありがとうございました
回線の切断をまともに検出しようとすると、面倒だ。
920 :
910 :2013/02/05(火) 21:02:59.40
サーバにKeepAliveパケット発行機能があったのですが クライアントはデフォルトで、サーバからのKeepAliveパケットに 返信できるのでしょうか?それとも、クライアント側でも SetSocketOptionで、SocketOptionLevel.TcpのSocketOptionName.KeepAlive を有効にする必要がありますか? もしくは、有効にしてしまうと、サーバに対してKeepAliveパケットを 能動的に送信してしまう(レスポンスがこないと切断検出)のでしょうか?
カウンターストライクオンラインみたいなFPSに使われる通信方式ってソケットですか? なんでリアルタイムに何十人もつなげるんですか?
そういう用途の通信方式にSocket意外になんかあんの? それとも何のクラス使ってるかって話?(TCPClientとか・・・)
923 :
デフォルトの名無しさん :2013/02/05(火) 21:15:15.42
UDPで、エラー処理とかを自分で実装するのでは?
たぶんソケットだと思うけど それよりローレベルな自作APIな可能性もあるな リアルタイムにいっぱいつながるのは、パケット受ける口が複数あるから あとはそれぞれが、素早く順番に処理してるから、人間には複数同時にみえるだけ
別に物理層を直に扱ってもいいのよ やれるなら、だけど
926 :
910 :2013/02/05(火) 22:12:03.75
910ですが、解決しました。 TCP keepaliveパケットは、シーケンス番号(-1)と空データのACKパケット なので 、クライアントは、普通に(TCP仕様として)ACK返送するので サーバのみにkeepalive機能があればよい。ということらしいです。
パソコンがネットにつないでいるときにどういうデータを送受信しているか取得したいんですが何を使うとできますか?
>>928 スニファーって製品があるから買うといいと思うよ
あとここはC#の質問スレだからね
ちがいます C#でやりたいんです
どのレベルの機能が欲しいのかわからないけど C# raw socket でググれば回答のひとつになるかな。
932 :
デフォルトの名無しさん :2013/02/06(水) 02:59:40.51
WinPcapとかSharpPcapとかを使うという方法もあるみたい
raw socketはIPレベル winpcapはイーサレベル
raw socketってVistaからMSがdenyしちゃったから実質pcapの類に頼るしか
え?俺7で普通に使ってるけど Vistaの送信側は不具合でキャプチャできないみたいだけど
メインスレッドでサブスレッドのフラグが立つまで whileでループしてるとサブスレッドはフラグ立てれないんだね。
は?日本語で頼む
どうせサブスレッドと思っていた所がFormsのUIスレッドでブロックしてるというオチ
いっぽうのスレッドがひたすらフラグを見てると もういっぽうのスレッドはフラグを立てられないんですね。 初めて知りました。
>>936 サブスレッドの初期化・処理完了までフラグ監視して待つって事でしょ?
volatileつけた?ループにsleep入れた?
効率悪からMonitorやら使った方がいいよ
>>940 sleep入れたらいけます。
volatileとやらをつけて試してみます。
>>940 あら、Monitorというのがいいですね。これでやります。
ある条件が満たされるまで待機するならこれでいい。 sleepもmonitorもいらない。 SpinWait.SpinUntil( () => hogeflag );
それやるんならWaitHandleでも使っとけ
アイワナっていう世界で超有名なゲームがあるんですけど ゲームを作る定番って言ったらXNAじゃないですか 検索してもXNAが良く引っかかると思うのでそう思うんです でも作ったゲームは配布目的なのでXNAが入ってない環境だと動かせないんですよね
sharpDXがいいよ
そこはMonoGameでしょ 3D使えたかしらんけど
ええええええええええええ
よかった勉強しとかなくて
情報がおせえな
>死にゆく技術を学びたいと思う人はいません。 今のMSじゃC#も近い将来なりうるな
たった6年で切り捨てるとかありえねぇ 技術者が育ってこれからって時期だろうにマイクロソフト系は怖くてもう無理 C#さようなら
もう帰ってくんなよ
MSがつぶれようとどうしようと C#はMonoを中心に発展していくわな
Direct3Dの入門にはよかったよ。 おかげでスムーズにsharpDXに移行できた。
>>955 ないない
あんなんおまけ
わざわざMonoでC#なんて普通に別の言語やったほうがいいわ
本格的にMSに見切りつける時期が来たか
Unityがあるしsonyとかも使ってるからゲーム開発じゃ超強いのは変わらんよ ニーズは多いんだからMSはスマホなどのハイスペ組み込み用のCLRをオープンソースで出すべき そうすりゃ今や金の亡者と化したMonoなんか即死だわ MFは制限きつすぎるしMSの商売としてはVSさえ売れれば無問題なんだし
sharpDXで円を表示するサンプルをお願いします
C#無くなったらvitaちゃんがとどめ刺されちゃう
>>957 ほとんどVSと変わらんIDEもある
コンパイラもライブラリもある
ソースも公開されてる
そもそもMSがいらない
あの粗悪品をVSと変わらんと言えるのなら もはやnotepadでも十分なレベル
>>961 あれ一体何がしたかったんだろうな
素直にUnityと契約すれば一瞬でソフト大量に揃うのに
わざわざUnityと同じC#のUnityと似たような開発環境の劣化版作るとか
WindowsとセットでなくなったC#なんてゴミだろ MSに捨てられたらそれまで
>>963 エクリプスとかよりゃ遥かにマシだが
つかったことあんのかホントに
Mono(Unityも含め)が流行るのは結構なことだが BCLやCLRやC#の仕様はしっかりMSが単独で支配していてほしい 周りの声聞くと悲惨なことになるのはJavaが証明してくれたからな
>>965 つかC#は続くだろ。XNAが終了なだけで。
もうすぐ次世代xbox用の開発環境が発表されるだろうが、
C#以外の選択肢はあり得ない。
C#はすでに10年以上続いてる
すいませんC#からmonoに移行する場合って、コードの修正は不要ですか?
そのコードによる以上。 それはさておき、XNAって最近聞かないな…とか思ったら終わってたのかよw C#自体は、終わること当分ないだろうけど、日本じゃWPFが終わっても不思議じゃないなw
え、monoって互換性100%じゃないってことですか
おまえの言う互換性って何?
c#とmonoで同じコードで動かないんですか コードによるとはどのようなコードの事を指しているのですか using System; class PrintTest { public static void Main() { Console.WriteLine("test"); } }
それぐらいなら問題なく動くだろうが、 System.Windows.Formsとか使ってたら別問題だろう。
うわあってことはXNAが切られた今C#も切られるかもしれないから 今のうちにmonoに移行するのが最善かもしれませんね 本当XNAは勉強しなくて良かったと思います
C#も切られる?え?
無駄な勉強ってないと思うんだ
Monoに移行した先に待っているのもC#なんだが…
vitaとかsonyネタ出すと粘着されるってのはほんとだったな
↑ 粘着質の例
なんの話かと思ったらこれか
>>964 ってかあれもC#だよな
Microsoftはすごい勢いでUnityを推してるよね 米国だとUnityCampみたいなイベントを主催したりして
ワカチコワカチコ
UnityVSが公式になったりして
ASP.NETの開発チームはjQueryも開発に参加してるらしいからあながち的外れでもないかも
Unityが今のMonoベースからMS CLRベースに乗り換えたら面白いのに Monoは調子乗りすぎ
ASP.NET MVC試してみたらオープンソースのモジュールに依存しまくりでびっくりしたわ MSらしくないw
あ
ASP.NET MVCそのものがオープンソースになったんじゃなかったっけ
もともとGPLと馬が合わないだけで、 オプソ全体を毛嫌いしてたわけじゃないな。 ライセンスの問題さえ解決できたらOKなんじゃない。
>>970 >すいませんC#からmonoに移行する場合って、コードの修正は不要ですか?
monoもC#だから質問がおかしい。
「.NETからmonoに移行」って意味ならわかるが。
ちなみにmonoは.NET3.5相当、でもWindows UI関連は
サポートしてない。
t
つぎさっさと立てろや
お前がたてろ
糞スレ梅
うめ
糞スレいらねーだろ 相談室と統合しちまえよ
きえろ
どうせどっちも同じ奴が見てんだろ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。