ふらっとC#,C♯,C#(初心者用) Part49
1 :
ななしぃ ◆jPpg5.obl6 :
2009/11/28(土) 13:40:52
2 :
ななしぃ♯ :2009/11/28(土) 13:42:22
C++用に作った関数をC#用にコピーしたら ABCD_EFGH()っていう関数が ABCD.ABCD_EFGH()ってなっちゃって ABCDが二回続いちゃったよ
ジャグ配列って存在価値ないだろ C++やJAVAと同じ書き方なのに違うものができるとかうぜぇけせや
>>4 馬鹿な子。
少しはその馬鹿な自分を疑うことを覚えたら?
そうかそうか。5にとってはC++にはギャグ配列がないからバカな子だったんだな
難しくて俺には何いってるのかわからねえ・・・ ギャグ配列ってなに?
すげぇ!!!! [DllImport]とか書いたらC++用のDLLが読み込めた あれ?こんなことできるならC++って存在価値なくね?
>>8 普通のアプリではなくても困らないけど
フックプロシージャとかネイティブのDLLでないと
動作しないものもあるからそういうときには必要かな
>>8 それはVB6どころかVBAですらできるでしょw
特定のクラスを継承しているクラスを実行中に列挙するにはどうやるんでしょうか?
プラグイン作ってんのか 特定のアセンブリ内のなら、Assembly取得してきてGetTypesでTypeを列挙 Type.IsSubclassOfとかで判断する
もし「特定のクラスを継承しているクラスを実行中に列挙する」メッソッドが存在する アセンブリから参照できないアセンブリに、その「特定のクラスを継承しているクラス」 が存在した場合はどうするんでしょう。 要するに愚問だと思う。
Visual Stdioでpng形式の画像ファイルをリソースに埋め込もうと思ったんだ メニューのプロジェクト→Testのプロパティ→リソース→リソースの追加で Gazou.pngっていうファイルを選択して埋め込んだ。 そうしたら_Gazouっていう名前で、最初に意味のわからない_がついてしまったんだ。 でもソリューションエクスプローラのほうはResources-Gazou.pngってちゃんと表示されてる。 で、Gazouを表示しようと思って Load("Gazou.png")ってやってもLoad("_Gazou.png)ってやっても読み込めない。 別のbmpファイルならちゃんと読み込めたんだけど、pngファイルって読み込みどうやるの?
埋め込みリソースでLoad…? Resources.*** で直接Bitmapインスタンス取得するもんじゃないか?
>>14 Visual Studio上のC#は、およそほぼすべての外部とのやり取り(リソースの読み込みとかフォームのデザインとか)で
自動的にソースコードを吐き出す形で動くようになってる。
プロジェクト内をよく調べてみろ。
それくらい20秒あればつくれるだろ・・・っていうメソッドもnetフレームワークには最初から大量に用意されまくってるんだな。 親切設計だぜ。
最近スレの消費が加速した気がする とりあえずおちゅ
自分で作ったexeを配布する際、他人の作ったDLLを同じフォルダにおいてちゃダメみたいだが exe自体にうめこめば大丈夫?
何言ってんだお前
たいがい余計ダメ
おいちゃだめならおかなけりゃいいだけじゃん
>>21 使わせてもらうライセンスを守っていれば、ライセンスで許されている範囲で
どう使ったって問題ないさ。
特にC#なら、MS-PLのライブラリが山ほどあるからよく探してみよう。
.NETのオープンソースプロジェクトってMS-PLみたいな自由なライセンスがよく使われてて あまりGPLに汚染されてないのがいいよな
http://dobon.net/vb/dotnet/graphics/hadeinimage.html このページに書いてる「画像を半透明表示する
ってので、ボタンを押したら実行するようにコピペして
private void button1Click(object sender,EventArgs e)
にコピペしたんだ。
でも一回目にボタンを押したらちゃんと実行されるんだけど二回目は
Argment Exception パラメータが有効ではありません
っていわれてできない。
g.DrawImage(img, new Rectangle(0, 0, img.Width, img.Height),
0, 0, img.Width, img.Height, GraphicsUnit.Pixel, ia);
この部分がおかしいみたいなんだが、なんでだぜ?
ブレークポイント張って引数を確認してみろよ ていうかまたCreateGraphicsか いい加減**
dispose
>>28 CreateGraphicsがどうかしたのか?
プロジェクト→○○のプロパティでリソースファイルに追加→既存のファイルを追加するとき 必ずIDEの奥深いとこのフォルダから読み込もうとするんだけど C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE こんな場所じゃなくするにはどうやればいい? 前よみとった場所にしてほしい
オブジェクトを1000個単位で沢山生成するのはよろしくないやり方でしょうか? こういう場合は構造体の方が良いとかあるんでしょうか? 2chのスレの書き込み一個一個をオブジェクトにして管理しようと思っています。
1000個ぐらい大したことないよ 少し大きめのXMLファイル読めば万単位で生成される
10億とんで1200万くらい生成してるけどなんともない
VC++2008EE使ってるんですがオプションのVC++ディレクトリで必要なライブラリやインクルードファイルの場所指定してるのに必ずリンカでエラー起こします 何が原因でしょうか? しょうがないのでプロジェクトのプロパティから追加もしてみましたがリンカでエラーでした
さすがC#だ、なんともないぜ
すいません間違えました
>>34 寿命が長そうだし頻繁にアクセスするわけでもないだろうから
パフォーマンス的にはクラスでも構造体でも変わらないと思う。
構造体を使う積極的な理由が無い場合は迷わずクラスを選ぶのが正解。
EventArgsってなんなんだよ!いみふ!
何もないことに意味があるのさ
それ昔センターかな?問題で読んだことがあるw たぶんこんな感じだった 壷というのは壷そのものに意味があるのではない。壷の作り出す空白の部分に意味があるのだ。 そこに花を生けたり、何かをためたりすることができる。"壷のもっている価値"はここにある。 物質的なものを提供するのではなく、物質から生み出される概念に価値があるのだ。 無論、壷自体にきれいな装飾をすればまた別の価値が生まれる。これは絵画自体が持っている価値と類似する。 しかし、「パンがもっている価値」とはこれは明らかに異なる。 問1.「"パンがもっている価値"とはこれは明らかに異なる。」とあるが、どのような点に違いがあるのか? 最も適当なものを次から選べ。 … こんな感じw
サンドイッチのパンは壺と同じだな
突然哲学スレになるなよw
名前の付いているコレクションを作りたいとき、 class NamedCollection : Collection<string> { public string Title; } てのと class NamedCollection { public string Title; public List<string> List; } だとどっちが良いんでしょうか
どっちが良いかは、あなたの目的次第じゃないでしょうか。
取り敢えず、後者は他のオブジェクトから見た場合 「名前の付いてるコレクション」じゃなくて 「名前とコレクションを持ってるオブジェクト」だな
オブジェクトって何ですか?^q^
Collection<> だの ReadOnlyCollection<> はガンガン継承してガンガン使っていいのに 内部にリストもっちゃう人って結構多いよね。
だってオライリー書いてる人なんかがお勧めしてる方法ですもの 天才集団が言うならそれに従った方がいい
>>49 ただデータとして持っていればいいだけなのに、振る舞いまでコレクションの真似をする必要は通常ない。
ただし、そうしたら『NamedCollection』というクラスの名前が不適切になる、ということはありうるだろうけどね。
C#のプログラミングで汎用コレクションを継承して何か作るなんて必要性はほとんど感じたことがないな。
逆にそうせざるを得ないのがSystem.Windows.Formsの世界。
継承してクラス作って振る舞いを定義してあげないとカスタマイズなんてできないわけだし。
List<T>をList<T>型のままでパブリックプロパティで公開するのは パブリックフィールドを公開するのと実質的に同じだよ
>>56 プロパティはそれに対するアクセスをいつでもトラップできるところがフィールドと異なる。
また公開してしまう懸念にこだわるなら、
インターフェイスを継承して各メソッドを定義してあげればいいじゃないか。
ただ、振る舞い自体をカスタマイズしたい場合(例えば削除するときにDispose()したいとか)でない限り、
無用に継承にこだわるのはお勧めしかねるけどな。手間が増えるだけだし。
リードオンリーなリストを作りたいときは どうしたって ReadOnlyCollection<> を使わざるをえないんだけどな。
>>57 リストの中身に対するアクセスを考えれば、
パブリックフィールドが良くないとされる理由がそのままList<T>にもあてはまる。
だから
>>59 になる
>>59 そこは本質的じゃない。
メンバとしてList<string> list; を定義して、
プロパティとしてpublic ICollection<string> List;を定義してあげればいい :)
いや実際FxCopで警告出るからな とりあえずIList<T>でも通して公開するようにしておけば、 後で実装を変えたときにもしList<T>にダウンキャストして使うアホがいたとしても そいつの責任になる
C#でドラクエやFF風のロールプレイングゲーム作るにはどうしたいいかな やろうと思っても たとえばキャラクターをインターフェースにして 主人公キャラクターは一人しかいないからStaticにしてキャラクターを継承 モンスターもスライムとかは大量にいるだろうから普通のクラスで ラスボスは一人しかいないからインスタンスを生成できないようにStaticにすりゃいいのか? よくわからん。 RPGやってるWEBページない?
>>65 そんなこといってるレベルでは必ず描画で躓くだろうな。
とりあえず純C#の範囲で作るなら、WPFの勉強してみれば?
それ以上はスレ違い。
お前の場合RPGがどうこうとかそういう問題じゃないな
Dictionaryジェネリックすごすぎワロタ こんな便利なものがあったとは ハッシュ配列?
プログラムに直接そういう細かいゲームのデータを書くことは普通しない。 マップやイベントのデータを別のファイルから読み込んでプログラムでゲームとして再生するわけ。 極端に言えばデータベースアプリと一緒だ。
>>71 だからそれが的外れつってんの
よく読め
つかさっきのブログのリンクをはっただけじゃねぇかw
ゲーム作りでクラスとかインタフェースにこだわって悩むより、 スパゲッティのぐちゃぐちゃでもいいからゴリゴリ作った方がいいと思うけどねぇ
一々めんどくせーな
>>74 あるある
趣味でやるなら一度完成させてから愛でるように設計直す方が
あきらかに楽しいし持続するよな
RPGはどうやってもデータ駆動以外ありえないよ エンジン作ってあとはデータ作成だけ エンジン自体のプログラムは動きさえすればどうでもいい
エンジンつくってバイクで走る!
理想を言えば諸々の計算式すら外に出せるといいんだけど RPGツクールを作るわけじゃないんだろうから適当にハードコーディングも織り交ぜていいとは思う。
物理の計算みたいな単純な計算でもオブジェクトしこうは役に立つんだろうか
役に立ちません いまだにFortranのスパゲッティコードがゴロゴロしています
完成したものを「ビルド」→「発行」するとsetup形式で作成されますが これを単体のexe形式のみで発行するにはどうすればよいでしょうか?
物理計算でも、抽象度上げてオブジェクト化したいもの結構あるけどなぁ。
>>82 発行しないでbin/releaseの.exeをコピーする
外部コンポーネントとか使ってるとやっかいだけどな
>>81 スパゲッティだって認めてるんじゃないかw
たとえばさ Mathクラスにsin関数ってあるじゃん。 あれって、内部でテーラー展開なのかなんなのかどういう計算してるのかしらないけどとりあえずちゃんと計算してくれるよな。 これもカプセル化の一種なのか?
>>84 ありがとうございます、見つけられました。
ここからコピーするだけで良いのですね。
発行しないとデバッグコード等付属されるのかと思ってました。
学者様のコードなんかオブジェクト指向以前の問題 構造化すらできてないのが腐るほどある
>>80 役に立つかもしれなし立たないかもしれない
規模によるんじゃない?
まあもっとも
物理屋がクラス設計に頭悩ませる必要はまったく無いと思う。
コード書くことでおまんま食ってるわけじゃないしなぁ。 綺麗な設計に頭悩ませるより計算式の組み立てとか結果を取る方に時間割いてるんだろ。 ちゅーわけで学者先生はSEに仕事くれ。
学生の方が熱意があるし安いからなぁ。
学生もコード書いてる暇あったらペーパー書け(´・ω・`)
新しいスレッド必要な場合って結構あるけど 新しいプロセスが必要な場合って例えばどんなとき? 結構ある?
ランチャー作ったときしかプロセス作成なんてしたことない。
COMがらみで面倒なときにプロセス分けることはある
タイマーコンポーネント使って1/60秒ごとにRefresh()をしたら画面がちかちかしてしまうNE
new したときにすでに存在するインスタンスを返すことって出来るのでしょうか? 例えば、引数に文字列を一つとるコンストラクタを持つクラスHogeがあったとします。 Hoge foo = new Hoge("123"); Hoge bar = new Hoge("234"); Hoge baz = new Hoge("123"); // これは foo と同じインスタンスにしたい
>>97 まあ、1/60なもんやるときは XNA とかのゲームフレームワークの方がいいかも。
あと、WinForms の場合、背景の再描画やめるとかいう手があった気がする。
DrawBackground かなんかがあって、それを override して何もしなくする。
newじゃ無理だな Dictionary<TKey, TValue>とかで実装
前から思うんだけど秒60フレーム信仰ってなんか妙だねw ゲームヲタ系固有の信仰かと思ってたけど、ここ数年は例の矢沢wのCMみたいに TVの売り文句まで降りてきてる。 コマが多いと動画が滑らかに見えるって、実際はそうでもないのに。 だいいち映画なんてたった24フレームなんだけど。 NTSCにしても、なんで当時の技術でわざわざ苦労してインターレースなんてものを 実現したのか(その発想は凄いとは思うが)今となっては理解しがたいものがある。
>>98 XLINQのXNameがまさにそういうことやってるんだけどStringからのimplicit演算子をオーバーロードしてる
>>101 実際 XNA の初期設定は 30fps だったりする。
まさにオブジェクト指向って感じのプログラムってどんなのだろう。 C言語とかだと結構難しいのにC#だと簡潔にかけるような状況ってあるの?
.NETそのもの
Cでもオブジェクト指向は出来るぜ念のため。
>>104 GUI プログラミングなんかもろにそうだけども、
CUI でやれるのだと、ファイル階層たどってくとかは?
>>101 くだらん些細なことまでこだわるなんて、プログラマみたいだね。
映画の24コマは映写機だから大丈夫なんだよ。 画面全体が瞬時に写って瞬時に消えるからね。 NTSC出た当時のCRT方式で30コマなんて見れたもんじゃないよちらついて。 走査線が上から下に流れるからね。 最近のTVの高速駆動は液晶だから特に重要なんだよ。 液晶だとそのままじゃ画面が写りっぱなしで消えないからね。 静止した画像が長く写ると人間の目には止まって見えてしまう。 そのせいでコマの移り変わりが滑らかに見えなくなるんだよ。
CRTだと滑らかに動いて見えていたものが、 液晶に映すとががががって感じに滑らかに動いて見えない経験あるだろ。
60fps固定ってのはTVの都合考えてのことだからPCでゲーム作る分には気にする必要は無い
モニタのリフレッシュレートにあわせないと(もしくは1/n倍)ちらつくんじゃない?
信仰とか言ってる奴なんなの? 何も知らないのに偉そうにレスしちゃってw
モニタによってリフレッシュレートが違うからリフレッシュレートに合わせてfpsを調整すればいい
CRTなら違うけど液晶なら60固定だね
突然の質問申し訳ないです DataGridViewの外観を変える設定はどうやればいいでしょうか? DataSetをバインドさせて表示させるところまではできています。 やりたいことは ・DataGridViewの一番左の列にExcelのような番号を付与したい また、現在のレコード数を表の左上に (選択中のレコード番号)/(レコード総数) のように分数形式で表記したい ・また、コンボボックスとボタンを用意して、コンボボックスで選択したものを利用して ボタンをクリックすることでフィルターされたものをDataGridViewに表示させたい ・ForEach()を利用してDataGridViewの各設定をしたい 参考になるサイトでもいいのでご助言お願いします
> ・DataGridViewの一番左の列にExcelのような番号を付与したい > また、現在のレコード数を表の左上に (選択中のレコード番号)/(レコード総数) のように分数形式で表記したい CellPaintingで描画する > ・また、コンボボックスとボタンを用意して、コンボボックスで選択したものを利用して > ボタンをクリックすることでフィルターされたものをDataGridViewに表示させたい DataTable.DefaultViewのRowFilterで > ・ForEach()を利用してDataGridViewの各設定をしたい 各設定って何? ForEachはなんのクラスのメソッド?
アプリケーションの設定(Properties.Settings) ってダイアログで いろいろ型選べるけど、自分で作った class って保存できないの?
C#は明らかに個人で使うものじゃないな 複数の人数で開発するのを前提にした機能が多い。 自分だけで作って、自分だけで使うならまったく気にしなくていいようなことを MSDNではあたかも知らないとプログラミングすらできないように書いてるし。 C++のほうが個人むけだなぁ
C++のほうが個人向け・・・???
>>117 ありがとうございます
> ・ForEach()を利用してDataGridViewの各設定をしたい
>各設定って何?
DataGridViewの全体、行、列をForEach()内で設定するようにしなければならないのですが、
Public void 設定(){
foreach (DataGridViewの全体)
{
表全体の設定
}
foreach (DataGridViewの列)
{
表の列の設定
}
foreach (DataGridViewの行)
{
表の行の設定
}
}
>ForEachはなんのクラスのメソッド?
すいません、勉強不足で何のクラスを使ったらいいのかさっぱりです
課題で使うことになってるからとしか・・・
>>119 最後の一行だけは絶対同意しかねるwww
といいかかったけども、C++ は個人とかチームとか関係なくアレだった。
>>118 参照しているアセンブリに存在している型なら可能
逆に言うとアプリケーション自身のアセンブリに書かれている型は不可能
124 :
118 :2009/11/30(月) 01:33:31
>>123 レスありがとう。確認しました。
アプリケーションの設定を保存するためだけに、
ひとつアセンブリを作るというのも大げさなような気がする
けど、その方法で保存してみることにします。
1から50まで足して合計求めるプログラムできたwwwwwwww for i=1 to 50 A[i]=i; Integer Sum = 0 for i=1 to 50 Sum += A[i]
>>121 > foreach (DataGridViewの全体)
> {
> 表全体の設定
> }
イミフ
全体の何を列挙するのさ?
> >ForEachはなんのクラスのメソッド?
> すいません、勉強不足で何のクラスを使ったらいいのかさっぱりです
> 課題で使うことになってるからとしか・・・
課題出した人に聞くしかないな
宿題スレに行けってことでFA
C#だとC用のDLLとか使うときは いちいちDLLImportだのExternだの書かないとダメなのか・・・ めんどくさいな。
Bitmap等の指定した画像ファイルからではなく アプリケーション等の特定座標の色を取得する方法を教えてください
>>128 どうせそういう外部APIは1つのstatic classで
1つのソースファイルにまとめてしまうので全く問題ない。
ふらっと
スレタイの「ふらっと」ってやっぱ#に掛けて♭なわけ?
DllImport宣言はCのヘッダを正規表現置換しまくればわりと楽に作れる
>>135 APIの宣言部はどうせ手で移植するから置換はあまり使わないな。
ポインタを削ったり、structの名称を変更したりすることもあるし。
どちらかというと、#define定義された定数値をconst intやenumに置き換える作業だな。
数が多いし、単純な変換だからなんとかしたい……。
面倒くせーからpinvoke.netからコピペしてそのままだな
配列は派生できないでしょうか? 委譲しちゃうとインデクサで速度が落ちるんで 何か方法がないかと検討してるんですが・・
無理。 インデクサ呼び出しのオーバーヘッドまで気にするような状況なら そもそもオブジェクト指向とか考えるのが間違い。配列剥き出しでCみたいに書け。
>>101 でも映画館では2倍にして48で上映してるよ。
昔の映画の映像見ればわかるが、さすがに24はちらつく
>>139 もしくは、高速化したい部分を隠蔽しちゃうとかね。
(16+17+17)*20 = 1000 すごい発見したwwww 16.6666…とかやらなくてもwwwこれなら60fps余裕杉ワロタwwwwww 今特許申請してくるwwwwww
ん? つまり3フレームに1回は16msにすれば1秒間中のフレームとしては60フレームになるってことか?
>>142 どうせFPSの計算はfloatやdoubleを使うんで関係ない。
>>143 内部に持ってる配列をinternalメンバで公開してしまうとか
>>146 やっぱそれしかないですよね・・
実行時間のかなりの部分と、書くコードのほとんどに頻繁に
配列を弄繰り回すんで
できればxxx[]って書き方でしかも高速で・・と妄想してるんですが
配列に委譲してインデクサ経由するより
List<T>のインデクサ?の方が早んですよねw
もっとインデクサのパフォーマンス上げてくれ>MS
>>147 というか、そんなローレベルなコード書くなら、
そこだけC++/CLIで書いてDLLにしたら?
フロントエンドは従来どおりC#で書けばいい。
>配列を弄繰り回すんで どんな処理なのかわからんが、できそうならキャッシュしちゃうのはだめなの?
コンストラクタのオーバーロードを行なう時、 引数の値をそれなりに編集してから別のコンストラクタを呼出したいのですが : this() だけだと出来ることが制限されすぎでうまくいきません。 どのように解決したらいいんでしょう? 例) 引数に文字列を取るコンストラクタと、複数のパラメータを取るコンストラクタ class Hoge { public Hoge(string name) { Name = name; LastModified = DateTime.Now; // etc etc.... } public Hoge(string pattern, int no, Huga foo) { Hage baz = new Hage(pattern, no); Hage.doSomething(); if (foo.Bar > 200) this(Hage.Result); /// ダメ! else this(""); /// アウト! }
private methodに分離しろよそんなの
Construct(string)とか別に定義してそっちに移す Hoge(string)の方はそのメソッドに丸投げ
>>148 ,149
速度か書きやすさかどっちか犠牲にすればすむんですけど
なんとかならないのか調べてみるだけでも調べてみようと思いまして
C++/CLIのほうがやっぱり早いんですか?
早速落として実験してみます
>>150 オレはコンストラクタを複数用意するときは、
staticなファクトリメソッド(Builderパターン)を用意して内部的にそれを呼び出すようにしてるよ。
そのファクトリメソッドを公開するかどうかは好みの問題。
>>153 C++/CLIでもマネージコードならC#とほとんど変わらない
ネイティブコードにすれば少しくらいは速くなる可能性はあるが
その境界を越えるコストが馬鹿にならないから大きな単位でガバッとまとめてネイティブコードにする必要がある
まず実装コストに見合った効果は得られないと思う。
>>152 ,154
成程。
コンストラクタは呼出制限があるけどstaticメソッドは制限ないですもんね。
ありがとうございました。
書きやすさとか言ってるのにC++なんか本末転倒だろw
ラムダ式のことと申しますか、string.OrderBy(TSource, TKey)についてご説明いただけますでしょうか。 string[] names = { "DDD", "AAA", "CCC", "BBB" }; var query2 = names.OrderBy(n => n); これは正常にコンパイルでき、文字列がソートされますが、引数は一つしかないですよね? C#はデフォルト引数がないと思いましたが、なぜ省略できるのでしょうか? 引数がn=>nの部分もTSourceに相当するように思えず、要はちんぷんかんぷんです。 救いをいただけたら、幸いです。
ラムダ式は関係ないな 拡張メソッド で調べれ
拡張メソッドだから
うひーリロードしてなかった
クラスに並べるフィールドの順番の標準はあるのでしょうか? private は後にするとか public は前にするとかバッキングフィールドは並べるとかいっそアルファベット順とか・・・
FxCop使ってみたら
拡張メソッドの説明読んでもメリットと使い道がわかない・・・orz
既存のクラスに触らずにインスタンスメソッドを追加したように見せかけることができる だけ 基本的にはLINQを追加する為に追加された仕様だと思っておいていいよ そんなに使わないから
>>165 サンクス
そっか、みんながバンバン拡張メソッド使い倒してるわけではないならいっか
Rotate列挙体を「右に90度回す」「左に90度回す」拡張メソッドを作ったことはある
C#はやりすぎると危険な仕様も結構あるような気はするわ。
つか拡張メソッドのthis objってNullも来るのか あぶねーあぶねー
>>169 ToStringするときのnullチェックがめんどくさくて
static string GetString(this object obj) { return obj == null ? "" : obj.ToString(); }
さあ、暗黒面においでよ
行かないよ><
素直に Convert.ToString(object) 使えって事だろ。
>>164 インターフェイスに実装を持ったメソッドを用意できるというのが大きい
以前はabstractな基底クラスとか、staticメソッドとか使うしかなかった
>>169 例えば hoge.Foo().Bar().Baz() とか書いたときに、
拡張メソッドだとどのメソッドでNull参照になったか分かるという微妙な利点はあるな
ああそうか、インターフェイスにも付けられるのか
質問です 変数の宣言と共に代入しても大丈夫ですか? ex) int a = 0 こんなことやってもいいのでしょうか?
バッチコイ
全然問題無いです。
>>177 >>178 ありがとうございます
一緒に質問したほうがよかったのですが、プログラムの途中で宣言するのもありですか?
>>180 ありがとうございます
これでプログラムが組めそうです。ありがとうございました
これで組めるって質問の内容からしておそらくはじめたばかりだろうにww いったいどんなプログラムなのだろうか?ww
勉強してるやつにそんなこというなよ 一回ごとにプログラム書き直す電卓つくってるかもしれないだろ
珍しくいい雰囲気だな
途中で変数宣言ができないC言語は使いづらい
おっと、delphiの悪口はそこまでだ
コントロールをデザイナに貼り付けないで、コードでインスタンスを作成した場合、コントロールにイベントを追加するにはどうかけばいいんでしょうか?
>>188 例えばClickのイベントハンドラを書きたいのなら、クラス名.Click += とタイプすれば、後はインテリセンスが何とかしてくれる
>>188 コントロール貼り付けてイベント追加して
何とか.Designer.csを見てみるとわかる
それだとイベントについて理解が進まんぜ プログラミングガイドやらでイベントハンドラの仕組みとか読んだ方よくない?
それもそうですね
>>185 スコープ入れば使えたんだけどな。
/* Cでも合法 */
if(.....) {
int value = 1;
...
}
とか
a = 100;
{ /* いきなりスコープ作る */
int value = a + 100;
...
}
とか。
やると変態あつかいだったけど。
MSDNのクソ説明より C#で検索したら出てくるサイトのほうがよっぽど有用だわ 猫でもわかる〜とか未確認飛行CとかいうサイトのほうがMSDNよりよっぽどわかりやすい
GetElementsByNameで見つからなかった場合はどうすればいいんですか? if(GetElementsByName("login"[0] != null) でエラーになるんです。
何だかわからんが、配列を返すなら、Countでみたら?
>>195 そうであるからこそ本も売れるわけでね。
MSDNのイミフなのを解読出来て他人に説明出来れば立派に金稼げるよ。
WinXP SP3, VC# 2005 で開発しています。
■悩んでいる点
pictureBox の背景を透過にした状態で
pictureBox を移動させたときに、チラついてしまう
■試してみたこと
チラつきにはDoubleBufferingが有効のようなので、
Formに対してDoubleBufferをtrueにしてみる
結果、チラつきは直りませんでした。
この原因と解決策をご教授願えないでしょうか。
下記アップローダにUPしましたので、見ていただきたいです。
ttp://www1.uploda.tv/index.php?mode=pass&idd=0052182 受信パスは hoge です。
よろしくお願いします。
200 :
199 :2009/11/30(月) 18:39:18
連稿、申し訳ありません。 timerをセットし、timerのIntervalごとに pictureBox.Location.Left += 4; のようにして移動させています。 よろしくお願いします。
Formのじゃダメよ
ボタンをクリックした時のイベントを追加したのですが、このイベントを他のイベントから実行したいとき button.click( object sender, EventArgs e )の引数2つはどうすればいいんですか?
別にどうするもなくね もちろん、通常のボタンクリックとは違って「なんのボタンがおされたか」 みたいな詳細な(?)情報は取得しづらいが private void button1_Click(object sender, EventArgs e) { MessageBox.Show("ボタン1がおされました"); } private void button2_MouseClick(object sender, MouseEventArgs e) { button1_Click(new object(),new EventArgs()); } みたいにnew object(), new EnentArgs() を引数にすればいいんでね
ありがとうやってみます
どんな処理するのか知らんが、処理の内容を別メソッドにして、それぞれから 呼び出すんじゃダメなのか?
>>199 透過させたPictureBoxを移動させた際に起きるチラつきを無くすのは確か無理。
前に悩んだ結果、自分でバッファ作って描画しないとダメだという結論に至った気がする。
WPFだとちらつきなくなるんだろうかねぇ
せめてPerformClickだろ。 おかしなイベントハンドラの呼び出しは止めとけ。
>>206 この程度の処理ならちらつき抑えられるわ
そのとき居合わせた面子がアホ揃いだったんだろw
>>209 どうやったらいいの?
煽りでもなんでもなく教えて欲しい
211 :
199 :2009/11/30(月) 20:26:17
>>201 レスありがとうございます。
Formのじゃダメ、というのは、
・FormのDoubleBufferを使うのではない
・Form標準のpictureBoxを使うのではない
のいずれかでしょうか?
>>206-210 Formでは可能なのでしょうか?
可能であればご教授お願いします。
158ですが、みなさんありがとうございました。(遅レスすません)
特に165さんの回答は救われます。
しかしながら、未だに理解できない自分が情けない。
最近買ったMSの本もさっぱりわからんし・・・いつまで経っても核心に迫らなくて我慢できなくなり、何もわかった気がしないで激しく落ち込みます。
他の本読んだり
>>195 さんのような意見見るとほっとしますよ。
>>211 ほい。できたぞ。
private int xx = 0;
private void timer_MoveInterval_Tick(object sender, EventArgs e)
{
xx+=3;
this.Invalidate();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
// 右に移動
this.pictureBox1.Left = xx;
}
とりあえずMSDNの珍訳が理解できる人はそこそこ.NETが使えるレベルだと思う 俺がそうだった
タイマーにinvalidateやリフレッシュ、Paintイベントで描写すると 画面ちらついたんだが213ではちらつかないな。 単純に移動するだけならいいんだろうか
217 :
199 :2009/11/30(月) 21:35:34
>>213 ありがとうございます!
>>215 さんのレスが気になりますが、
ひとまずこちらで対応します。
ありがとうございました。
いちいち煽らずに言えば少しはリスペクトされるのに。 正直幼稚なガキが自分より何か知ってても賞賛も感謝も感じない。
>>218 匿名でリスペクトもなにもないだろw
泣いて悔しがってろww
幼稚なガキが自分より物知りだったら (単なる漫画やゲームの知識でなく、ある程度体系的な学問であれば) くやしいだろ、普通w 天才小学生が俺より早くプログラム組んでて、「おじさんなんでこんなんできんの?頭悪すぎwww」とか言われたら自殺したくなるわ。
.Net2.0でSystem.Xml.Linqを使う方法ありませんか? ちなみにLINQBridgeだと駄目だした… Monoプロジェクトはどれをコンパイルすればいいのかわけわかめです
222 :
213 :2009/11/30(月) 21:44:27
>>218 流れ的に俺のことっすかね?
俺は今日
>>213 が初書き込みなんで煽ったりしてないっすよ。
ちょっと心外なので念のためレス。
たぶん方法がわかんなかった奴の中に
>>209 =
>>213 だと思ってる奴がいるんだろ。
プログラマはいつだって下からの突き上げコンプレックスにまいってるからしかたないんだよ。
.net3.5の普及率がちょっときになるのよねぇ…
大変初歩的なことで申し訳ないのですが、 ソース中で使用されていない名前空間をインポートすることは 有意なオーバーヘッドになりえるのでしょうか。
>>225 もうwin7でたんだから素直に.net3.5使っていいよ
>>227 そのシリーズの第2回も読んでてコンプレックス感じた
技術者がキモオタでも許された時代はもう・・・
Collection<T> と List<T>ってどう違うの?
>>227 それってそんなに凄いか?
学生レベルならそりゃ少しはやるねとは思うけどプロからしたらふーんって感じ
つまりRuby開発者のまつもとはプロじゃないわけか。そうかそうか。
>>233 多分そういう反応する人でると思ったよw
中学生高校生時点でそういうレベルなのが凄いんだよ。
まぁ重箱の隅をつついて「ほら早くなった」ってだけだからな
>>233 >学生レベルならそりゃ少しはやるねとは思うけど
こういうこと言っちゃうあたりがコンプレックスの裏返しなんだろなと思う
自分もそうだからよくわかる
C#って他言語パクリマクリ言語じゃね。
ぶっちゃけプロは天才とは違うベクトルの才能が必要だから負けたっていいんだよ。 天才中学生(笑)とか登場しても変に「まだまだだな・・・」とか言ってないで 素直にスゲースゲー言ってればいいのに。
>>238 この業界は清く正しく効率良くパクれる人じゃないと大成しません。
マジで。
>>232 Collection<T>は型指定されたコレクションを作成するための汎用的な基底クラス
List<T>はパフォーマンス重視の代わりに拡張性その他を捨てたコレクション
数ヶ月間、高速化の為に極一部のソース書き換えるだけの作業してたら首になると思う
>>242 ありがとう
Listの方が速いとかメモリ食わないとかそんな感じか
じゃあ特に考えがないならListでいいのかな
そういう仕事ならアリだろ。
どうせ
>>227 みたいなのはすぐメッキ剥れるにきまってる。
顔みりゃわかる。才能ないよ。
大学までいったらただの人wwwww
>>243 そりゃ与えられた仕事が別の内容だったら首になるだろね。
>>243 仕事さぼって仕事とは無関係のソース書き換えてたらクビになるだろうが
ちゃんと仕事しながらやってたらクビにならん。
>>227 は才能無いプログラマーには刺激が強すぎたか
Rubyの高速化って持ちあげすぎじゃね? 高速化なんてちまちまよく頑張ったねって話だろ
これはこれで褒めておけばいいんじゃないの お前らだって何か探せばすごいとこはあるんだろ
>高速化なんてちまちまよく頑張ったねって話だろ なんかこっちまで顔が赤くなりそう・・・
なんでよ ループの外に出すとか基本中の基本じゃん
要するに言語開発者とあろうものが糞コード書くなって事
新人はいってくるとたまに高速化というなの難読化する奴がいるから困る 設計を台無しにするなよ… 俺はそう考えている。
てすと
「クリスマスケーキ 一人用」でググったら悲しくなった件について
おめーらさりげなくまつもと様ディスってんじゃねーよwww
テトリスを1時間で作って見たのもちょっと持ち上げすぎだと思うの 一度作った事あるものなら誰でも出来るとおもうもの…
まつもとは人間としてダメだろ。
こうやって否定をくりかえして生きて行くうち、彼のまわりには誰もいなくなってしまいました。 おしまい。
イソップ物語? いやいや、むしろ彼は彼のまわりには誰もいないからカリカリしてるのかもw
というか 2000 は来年の 7 月に延長サポートすら終わる
ところがどっこい、延長サポートすら終わったVB6やOffice 2000を使っているユーザが ゴロゴロいるから困る
大変だな。MS ですらサポートしないものを、俺がサポートできる訳ねーだろ、 で終わりにしたよ。
車でもPCでもこんなコロコロ買い換えるの大好きな国民性の国が 「日本のもったいない文化を世界に」とかウリナラマンセーしてるんだから 日本人って本当ご都合主義だよな、とネトウヨ君を煽ってみる。 まあそうは言っても、企業ユーザーは案外年代物のPC使ってたりするんだけど。
使ってたりするよね。普通に。 新しいPCすすめるにしても他のそこで動いてるアプリの動作保証までは出来んからなあ まあそれを仕事にしちゃうって手もあるんでしょうけど!
べつにN88BASICに比べたら大したことじゃない
ファイルがドロップされた時って 何のAPから(エクスプローラとか)ドロップされたのか?ってわかる? ドロップを受け入れて、他のAPにもドロップできるListViewを作りたいんだけど 自分自身にドロップしたときは受け入れたくないんだ。 DragEventArgsからわかればベストなんだが…。
275 :
226 :2009/12/01(火) 01:42:11
>>274 自分かどうかの判断なら簡単だよ
DoDragDropに渡すのをDataObjectにして、
そのDataObjectになんか変なオブジェクトを追加すればいい ListViewItemとかね
でDragEnterとかで追加したオブジェクトがIDataObjectに含まれていればアウトにする
277 :
274 :2009/12/01(火) 02:15:33
>>276 なるほど。
やってみるよ、ありがとう。
>>276 つうかsenderが自分じゃないかEqualで判断するだけじゃないの?
おっとEqualsか
おはよう(;´∀`) なんか最近レスの進み具合が激しい気がする・・・・
object sender,EventArgs e
>>278 senderはイベントを起こしたオブジェクトだから、
treeView1_DragEnterなら必ずtreeView1だな、どこからドラッグされようが
MyClassのインスタンスに以下のxmlをマップしたいのですがLINQtoXMLで一発で書けますか? //XML <?xml version="1.0" encoding="utf-8" standalone="yes"?> <items> <item> <name>name1</name> <data> <mydata>data1.1</mydata> <mydata>data1.2</mydata> <mydata>data1.3</mydata> </data> </item> <item> <name>name2</name> </item> <item> <name>name3</name> <data> <mydata>data3.1</mydata> </data> </item> </items>
//MyClass public class MyData { private string data; public MyData(string data){ this.data = data; } } public class MyItems { public string Name; public List<MyData>; } public class MyClass { public MyItems Items; }
>>284 は間違えました
マップするクラスはこうです
//MyClass
public class MyData {
private string data;
public MyData(string data){
this.data = data;
}
}
public class MyItem {
public string Name;
public List<MyData> Data;
}
public class MyClass {
public List<MyItem> Items;
}
こんな感じでやってみたのですが可変な<data>の部分をどう書けばいいのかわかりません… XDocument doc = XDocument.Load(xmlSource); MyClass cls = new MyClass(); var q = from v in doc.Descendants(ns + "Items") select new MyItem{ //出来ればここでnew List<MyItem>();としたい Name = v.(string)v.Element(ns + "Name") Items = new List<MyData>{ } //ここがわからない }; cls.Items = List<MyItem>(); cls.Items.AddRange(q);
マッピングなんてださいよ
>>288 もう一声…
初期化子の所でLINQ使える?
初期化子は関係無いか var q = from v in doc.Descendants(ns + "items") select new MyItem{ Name = (string)v.Element("name"), Data = from a in doc.Elements("data") select new MyData(a) as List<MyData> }; うーん、これも駄目だ…
オブジェクトの参照をそれぞれ入れた配列を完全にcloneするにはどうしたらいいんでしょうか? そのオブジェクトのクラスをIClonable継承したのですがインスタンスレベルではcloneされてないようです。
>>290 var cls = new MyClass {
Items = doc.Descendants("item").Select(
xItem => new MyItems {
Name = (string)xItem.Element("name"),
Items = xItem.Element("data").Elements("mydata").Select(
xMyData => new MyData((string)xMyData)
).ToList()
}
).ToList()
};
>>291 ArrayのCloneかMemberwiseClone使ったんならArrayそのもののClone返すのは当たり前でしょう
実装したのは"Arrayに入ってるオブジェクト"のICloneableであって
ArrayのICloneable実装したわけじゃないんですから
>>292 サンクス
オブジェクトの参照が〜という例外がでましたのでこれを
xItem.Element("data").Elements("mydata").
このように書き前ました
Data = (xItem.Element("data") == null) ? null : xItem.Element("data").Elements("mydata")
うーん、なんか長い…
var d = xItem.Element("data");
Data = (d == null) ? null : d.Elements("mydata")
せめてこんな感じで短く出来ればいいのに…
>>292 これってselect fromで書けないの?
XmlSerializer<こんにちはこんにちは!!
>>295 かいてみたけどDataが常にnullになる件
var cls = new MyClass {
Items = (
from item in doc.Descendants("item")
let d = item.Element("data")
select new MyItem {
Name = (string)item.Element("name"),
Data = (d == null)? null : (
from data in d.Elements("mydata")
select new MyData((string)data.Element("mydata"))
).ToList<MyData>()
}).ToList<MyItem>()
};
×select new MyData((string)data.Element("mydata")) ○select new MyData((string)data) こうしたらOKだったわw
List<string,int>みたいな事はできないのか?
どーいう意味?
List<Tuple<string, int>>? 標準でTupleが提供されるのは.NET4.0以降だけど
KeyValuePairでいいじゃん
もしかすると string と int の混在を許す List か?
>>301 そう、それ。KeyValuePairは知ってるが3つ以上になるとあれだから避けてた
4.0をまたずしても自分で捏ち上げてもよさそうではあるな
三つ以上となると正直クラス作っちゃえよと思う
ToolStripStatusLabel の AutoSize を true にしていいると、 ラベルがステータスバーに入り切らなくなると表示されなくなってしまいます。 ふつうの Label のように AutoEllipsis があればいいんですが、 ToolStripStatusLabel にはありません。 ステータスバーの幅を小さくしたとき、AutoEllipsis プロパティがあるかのように 省略して表示する方法ないでしょうか?
DLRにはこんなものがある MutableTuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50, T51, T52, T53, T54, T55, T56, T57, T58, T59, T60, T61, T62, T63, T64, T65, T66, T67, T68, T69, T70, T71, T72, T73, T74, T75, T76, T77, T78, T79, T80, T81, T82, T83, T84, T85, T86, T87, T88, T89, T90, T91, T92, T93, T94, T95, T96, T97, T98, T99, T100, T101, T102, T103, T104, T105, T106, T107, T108, T109, T110, T111, T112, T113, T114, T115, T116, T117, T118, T119, T120, T121, T122, T123, T124, T125, T126, T127>
リアルにコーヒー吹きそうになったわwwww
>>308 確かにあったwww
return typeof(MutableTuple<, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , >);
なんぞこれw
人間が使うものじゃないからなあ DLRに言語実装するときに必要になるかもしれないから用意してあるだけ
なんかもっとスマートな解決方なかったのかねぇ
可変長ジェネリックでも導入すれば解決するんだろうけど、 もうこれ以上CLRに変更加えるの嫌みたいだからな
眠かったんだろ 俺も納期間近で2徹くらいすると、見栄えとか正直どうでもよくなる
そうかな、俺は納期とかどうでも良くなるが
(初心者用)が付いていない方が初心者が多い気がするのだが
伝統です
文化です
初心者へ教えるには高いレベルが必要ということじゃね。 俺は違うけど。
Dim doc = XDocument.Load(file) From a In doc.<a>.<b>.<c>.<d> //エレメントをたどってる VB.NetのソースだけどこれってC#ではどうやって書くの?
Refactorつかえば?
C#じゃ書けない VBのほうがその辺は優れてる
GUIのプロパティとかを設定する表みたいなのがあるけど、あれを自分で作るにはどうしたら良いのでしょうか?
グリッドを一から作りたいってこと? 死ぬほど大変だと思うけど。 デザイナのグリッドは PropertyGrid をベースに作られてる。
PropertyGridを貼り付けるんじゃだめか?
つか、独自コントロールを作りたいなら新規プロジェクトで Windowsフォームコントロールライブラリとか選んで弄ってみそ
PropertyGrid使いやすいようにしようと思うと結構大変だよな… 単純な連結作業じゃEnumとかがめんどくさいし・・・
>>321 こうかな
from a in doc.Elements("a")
from b in a.Elements("b")
from c in b.Elements("c")
from d in c.Elements("d")
もしくは
from d in doc.Elements("a").Elements("b").Elements("c").Elements("d")
C#4.0になると dynamic のおかげで doc.a.b.c.d が出来るようになるんだっけね
>>321 途中のノードは1つだから、こうだな。
>From a In doc.<a>.<b>.<c>.<d> //エレメントをたどってる
from a in doc.Element("a").Element("b").Element("c").Elements("d")
>From a In doc...<d> //エレメントをたどらない
from a in doc.Descendants("d")
まあこわい
イベントにあるエベントハンドラが追加されているかどうかを確認する 方法はありますか?
イベントは自由に実装をカスタマイズできるから一般には無理 特にコントロールのイベントはほとんど特殊な実装になってる
338 :
324 :2009/12/02(水) 19:48:18
やっぱり、PropertyGridですね。 ググってみると色々事が出来そうで奥が深いですね。 やりたかったのは、ちょっとしたプログラムにGUIを作るのは面倒だから、PropertyGridみたいなので数値を入れて それをアプリに渡せばすむじゃんと思ったからです。 ついでにテキストファイルか何かに、パラメータ名を定義しておいて、それを読み込ませたら、その順番とラベル名でPropertyGridが出てくるように したかったんです。 そんなことはできないでしょうか?
勉強会とかって参加しないとマズいんでしょうか? LTとかとても出来る自信がないです・・・ 先輩諸氏はああいう集りに積極的に参加して何か喋ったりされてるんでしょうか?
プログラマは人脈重要だし、新しい技術の勉強も諦めたらそこで終わりだよ。 別にプログラマに限った話じゃないがw
本読むだけでいいよ。 あんなリア充もどきの集りなんて飲み会開く言い訳みたいなもんだ。
ぶっちゃけ本で十分な気がしないでもない
そんな僻まんでもw
いつからプログラマー業界にリア充どもが蔓延るようになったんだろな マジウゼー
C#で DataGridViewの一番左の列にCheckBoxを追加して、 Checkのあるレコードだけ削除ボタンで消す方法ってどうやればいいですかね? DataGridView上で消せれば、あとはDataReader使ってUPDATEすればいいだけだとおもんですが
昔だって上に行く人はわりとリア充だったと思うけどなぁ。 オタはオタでもひきこもってないオタじゃないとやってけないんじゃない?
人生のコーディングをしていなかったからかorz
>>339 行くべき。
トークする側にまわんなくても顔だすだけでもいいから行くべき。
まったくしゃべらないでお話聞いてくるだけでもいくべき?
>>349 ぜんぜんOK。
そういう常連さんも普通にいるし。
あいつ聞いてばっかで喋らねーうぜーなんて空気は微塵もない。
勉強会ってどこでやってるんだろう 札幌であるのかな?
>>338 PropertyGridはオブジェクトのプロパティを弄るもので
設定ファイルを弄る為のものじゃない。
なのでそんなことは出来ない。
プロパティを定義したクラスを用意すれば出来るけど面倒くさいことには違いないよね。
大規模な開発するんじゃなく 電卓では難しいやや複雑な計算程度なら どんな言語つかっても大して変わらないね。 C#いらね
>>355 その論法だと、お前は大したプログラム作らないという結論に至るが。
三流プログラマの愚痴・雑談は別のところでやってください
.net3.5って無理印のXPにもインスコ出来る?
>>357 初心者用なんだから上級者様()笑が出て行けよ^^
>>354 設定プロバイダをPropertyGridに突っ込めばいけるんじゃね
DataTable使えば簡単にできるぜ。 やらないけど。
ついでに設定の書き込みもDataTableだったら極めて簡単。 やらないけど。
>>338 PropertyGridって自由度が高くて便利だけど、
きちんと作りこむとかなり大変な上に、資料も乏しくて辛いぞ
簡単に済ませるために使うなら絶対的に間違っているのでやめておけ
PropertyGridってカスタムコントロールのデバッグに向いてると思う
C#ってC言語とは互換性ないの? include stdio.hとかやって printfみたいなこと無理?
つ C++/CLI
アイスクr−ムたべたい アイスクリーム作るプログラムつくってうpしる
クラスを作成中に、"override" と入力すると入力支援が働いて オーバーライド可能なメソッドを一覧が表示されますが、 同様に、まだ、実装していないインターフェースのメソッドを 簡単に表示する方法(あるいはメソッドスタブを作成する方法) はありますか?
>>368 継承したインターフェース右クリックして
インターフェースの実装ってやればいいんじゃね
public class Class1 : Interface1←これ右クリック
ショートカットキーは、Interface1 にカーソルを合わせて Ctrl + . (ドット)
usingを追加するのによく使うなそれ
関数とメソッドって同じ意味だと考えていいの?
メソッドじゃない関数もあるんじゃないの?メソッドは関数だけど(´・ω・`)
374 :
368 :2009/12/03(木) 11:51:41
>>372 だいたいそんな感じでいいんじゃないかね。
厳密な言葉の定義ってなるとググった方が速いけど。
DataGridViewにバインドするとpublicプロパティが全てマップされるんだけどこれを抑制する属性とかあるのかな?
そもそも例外処理は多重書きしても良いのでしょうか? try { try { //作業 } catch { throw new Exception(); } } catch { return null;//例外を投げたらここに来る? }
出来るけどフロー制御のためにそういうことするのは パフォーマンス的にもあんまりよろしくないかと。
ここは初心者スレだろ 上級者さまはでていけや
そしたら誰が答えるんだ・・・
初心者が傷の舐めあいをするのでは?
エロイな
Dataset.GetXml();の反対はSetXml(string)みたいなのはないのでしょうか? ストリームやファイルから読み込むのは見つかるのですがstringで放り込めるのがないような?
ReadOnlyObservableCollection の使い方がよくわかりません。 INotifyCollectionChanged インターフェースのメンバが protected になっているため 外部からイベントの登録が出来ないのですが、 どうやって使うものなんでしょう?
>>384 >このクラスは、ObservableCollection<(Of <(T>)>) の読み取り専用ラッパーです。
書いてあるじゃん。
インターフェイスの明示的実装だから、Protectedでもprivateでも
インターフェイス経由なら呼び出せる。
>インターフェイスの明示的実装だから、Protectedでもprivateでも >インターフェイス経由なら呼び出せる。 あえて protected にしているってことは あんまり使ってほしくないってことなんでしょうか? ObservableCollection の方は普通に public で実装していますよね。
読み取り専用ラッパだからイベント追加もできないんだよ。 わざわざprotectedにしてあるのは呼んだら無条件に例外が飛ぶから
ユーザーが直接使うクラスじゃないだろ。 どこかのファクトリーが中身の良く分からない INotifyCollectionChangedを作ってくれる。 ユーザーはそれを使うだけ。
C#を一から勉強したいのですが、どの本が一番お勧めでしょうか?
>>383 ない
が、
string xmlSrc = dsSrc.GetXml();
System.IO.StringReader r = new System.IO.StringReader(xmlSrc);
DataSet ds = new DataSet();
ds.ReadXml(r);
でいけそうな気がする。
すいません、本当に単純な .sdfファイルってどこかにありませんか? 個人テーブル 番号(主キー) 名前 性別 生年月日 クラステーブル 番号(主キー) 所属部署 みたいな簡単なDBがほしいのですが・・・
>>387 INotifyCollectionChangedにキャストしてイベント追加、
コレクション自体への追加は継承したクラス内で行なったところ
イベント自体は特に例外も発生せず実行されました。
これは何かやり方が間違ってるから例外が飛ばなかったのでしょうか??
>>389 他言語経験者?
完全に1からやるなら
C#の絵本ってのがオヌヌメ
394 :
389 :2009/12/03(木) 21:33:17
>>393 いや、UnixでX-window/Motifでガンガン組んでいた。
VCもcppはお遊び程度に使えるかな。
C#は全く初めて
じゃあオライリーでいいんじゃね
他言語経験者ならC#の絵本だと退屈だな。 変数の宣言の仕方。数値にはintとかdoubleとかいっぱいある。みたいな説明されてもアレだろう。 オライリーのC#クックブックとかいいんじゃないか。
オラオラオラオラオライリー
C系使えるなら参考書なんていらんだろ MSDNあるしC#はVB並みにネットの情報が充実してるし
それだけ知ってるなら仕様書読んで言語の全体像把握するほうが早い
Java→C#にくらべると C++→C#は少し戸惑うかもしれないよね もっとも言語仕様なんかより.NETの使い方の習得がメインになるよなぁ
ネット情報の充実度でいえば C、C++言語が最強だな。次Java。次VBくらいかね。
VB.NETはゴミばっかりだからC#の方が充実してる
マジオライリーの参考書最強 C#である程度大規模なプログラミングしたいやつでこれもってないやつカス。死んだほうがいい。
>>403 だな。ここ見れば大体のことは解決する。
>>403 そこの良いんだが
下の「評価」ってのがキモイ
良い:まさにこれを探していました
良い:面白い機能です。こんなことができるなんてきがつきませんでした。
マジきめぇ氏ねや
>>406 そんなとこまでスクロールするお前のがキモイ
>>405 別にdobon氏を貶す意図はないけど、さすがにそれは言いすぎ。
そこ見ても解決しない問題は山ほどある。というより、ぶち当たる問題の大半はそう。
>>376 Browsable(false)で隠せるね
ProperttyGridとかにも出なくなるが
tesu
415 :
389 :2009/12/04(金) 08:36:46
とりあえず、C#の絵本をアマゾンで注文しました。
ホームページ作りたいのですがのですがC言語のなかでもなんかいろいろわかれてるみたいですね。 どれがいいのでしょうか?フラッシュとかのゲームも作って取り入れたいです。
とりあえず動的に出力しないなら必要ない 静的なHPは板違い フラッシュも板違い
ASP.NET で Silverlight も使って作ればいいんじゃないかな。
彼女が外に出して!って言ったので部屋から放り出した
自作の関数に複数の戻り値をメインに渡したいんですが1個しかできません。 調べたところc言語は1つしか戻り値渡せないみたいで… どうしてもx座標とy座標を関数に渡して計算した値をメイン関数にもっていきたいんです。 どうやったらいいですか?
とりあえずここはC#のスレなので、C言語についてはスレ違い
釣りなら他所でやれ
424 :
422 :2009/12/04(金) 11:29:01
すいません、事故解決しました なるほど、こういうときのためにポインタってあったんですねw
ボインだけなら自信あります・・・
おっぱいうp
画像の使用色数を調べたいのですが良い方法はありますでしょうか 一ピクセルずつ調べていくとコードが長くなり、また処理時間も長くなってしまうので避けたいのですが・・
画像の使用色数が一ピクセルずつ違う状況が思い浮かばないが。 色数ってdepthのこと?
>>427 残念ながら1ピクセルずつ調べるしかない
>>428 データフォーマットじゃなくて、その画像に何色使われてるかってこと。
24bitで表現できる色は16777216種類だけど、1枚の画像にはその中の一部分しか使われていない。
何種類使われているかというのを「使用色数」と言う。
>>427 コードは別に長くならんと思うが。
ごく単純なループだろ。
ループでまわすだけだな。
処理時間も言う程長くないし。
だな
色数カウントって昔はめちゃめちゃ面倒だったのに、 今じゃ2Mバイトの配列をポンと確保するだけだもんな。 えらい時代が来たもんだ。
BitmapクラスのGetPixelでやるのが一番簡単。 BitmapData取得してMarshal.Copyでやるのに比べると100倍ぐらい時間かかるけど、まぁ許容範囲だろう。
俺の上についている上司とその上の上司が揃いも揃って booleanのfalseをファルスって言うんです。 注意したほうがいいですか?
おまいは 0 をゼロって発音したりしない?
>>434 ハッシュでやるだろ。
24bppだと16Mだし。
画像本体が数十MBなんてこともざらにあるから、その程度のメモリは大したことないよ
C#クックブックがアマゾンで良書とされているので買ったけど、 書き写したコードがコンパイルすら出来ずに無茶苦茶腹が立っていた。 ソースがWebにアップされていたんだね。
クックブックは見てないが using Systemとか当たり前すぎるものをいちいち書いてなかったんでないの。
>>437 もちろん日本語で話すときは0はゼロと言う。
語源は英語のzeroだが
日本語としてゼロという単語が存在するから
0をゼロと発音するのは日本語圏では正しい。
じゃあファルスもそれでいいな
笑い話がどうかしたか?
何故 じゃあファルスもそれでいいな という結論になるのか分からない
ファルスがダメな理由がないから。 falseをなぜか「ファウスト」といったなら誤解や意思疎通ができない可能性があるが falseなんてファルセでもファルスでもフォルスでもフォールスでもなんでもいいわ。 くだらん。
カタカナに直した時点でもう正確ではない ファルスもフォールスも表記ゆれの範疇でおk
ギョエテと呼んでいた時代もあったしな( ・ω・)y─┛〜〜
カルノー図をカルナウ図ってうちのばっちゃが言ってた。
俺もCharをシャアって読んでた
>>441 かなりもろもろのことを端折っている。
17ページで
いきなり固有のクラス名を使ったコードが出てきて、そのクラスのコードがない、
まで来てもしやと思った。
偽いいだろ偽で
にせ?いつわり?ぎ?
>>451 WEBのソースより本は物理的な制約が大きいし
本題とはあまり関係のない部分のソースは省略されても仕方ないだろう。
省略されてる部分は読者が勝手に補えってことじゃないの。
クックブックは完全な入門書じゃないっぽいし。
小学校1年の算数の教科書で図形が登場すると 5cmの図形はリアル5cmで書かれてて、 2年のテストで10cmって表記の図形を定規で計ったら3cmくらいしかなくて 「問題の図形間違ってる」って先生に講義したことあるのを思い出した。 CookBookとかMSDNなんてそんな感じだろ。 リアルで動くソースだと期待していない。
頭の悪い奴とか仕事できない奴に限って、 「ファルスwwwだせー」とか「デーじゃなくてディーだろーw」とか 「ヌルじゃなくてナルだろ」とか騒ぎ出すんだよな、ホントくだらん
頭の悪い奴とか仕事できない奴に限って、 ものの名前を正しく呼ばない傾向があるな、むしろ。
昔、atoi()を「"あ"と"い"」と読んで大笑いされたことを思い出した。
なるぽ
*を米印みたいな奴と呼んでましたがなにか?(´・ω・`)
printf プリントエフ scanf スキャンエフ malloc マロック void ヴォイド 引数 いんすう int イント enum エニュム
昔DirectXを ダイレクトエックスって言ったら 後輩に「ダイレクトエックス(笑 ディレクトエックスですよ〜」 って馬鹿にされたけど、我慢したことを思い出した。
Dをデーと言うとなぜか勉強できない奴らが大騒ぎして、 勉強できる奴らは何も言わない小中学校の法則 勉強できる奴らはフランス・イタリア・ドイツなどではデーと発音するのを 知ってるのかもな
というかディーはビーと聞き間違えるからな
おれは消防のときは abcdefgはアブクドゥエフグ(発音記号書けないからカタカナで勘弁) って覚えてた。 エービーシーディーって言い方はローマ字習ってから知った。
例えば1024ピクセル平方なら最悪カウントに20ビットいるわけで、 24ビットでカウントなんて事やったらあまり簡単ではなくなるので 1色につき4バイト。 だから64MBの配列がいるな。 えっ?アルファも欲しい? なら16GBだ。
phallusなんて言葉を知ってる人はそんなにいないのでok
一般市民は総理大臣が「漢字間違える」とかどうでもいいくだらんことで騒ぐのが大好きだからなー。
>>465 falseとnullは「正しく」の定義ははっきりしてないよね?
(日本語でのカタカナ表記において)
会議で後輩がイントラネットって言っていたから、「インターネットだろ。社外で間違えると恥ずかしいぞ」って注意してやったよ。 みんな、虚を突かれたように俺の博識さに静まりかえっていた(´,_ゝ`)
C#って、メディアプレイヤーを開くと同時に特定のフォルダに入ってるaviファイルとかを全部メディプレイヤーにつっこむ ってできる?
1)高い政治能力を有するが漢字の読みをよく間違える政治家 2)政治能力皆無だが漢字検定1級所有してる政治家 一般市民が議員に選ぶのは悲しいかな2なんだな だからおまえらも実務能力よりも資格取得を頑張ったほうがいいぞ 会社つぶれても資格持ってりゃ転職しやすいからね
ここは人間の初心者スレじゃないのだが
>>476 そのフォルダ内のファイルを取得して起動時の引数に渡せばいい
WMP以外でも大体は大丈夫だろ
はやくC#4.0のdynamicとかに対応した書籍でねーかな
自由落下の公式
dynamicで追加したプロパティって VSでインテリセンスきくようになるの?
dynamic で追加したプロパティ自体は効くだろうけど そのプロパティから先は無理だろ 何入ってるかは実行時までわからんのだし
関数の呼び出し前で生成したオブジェクトの属性を 関数の呼び出し先で変更することってできますか? private Test() { TextBlock a = new TextBlock(); TextBlock.Text = "変更前"; Button b = new Button(); Button.click += Change(); } private Change() { ここで TextBlock.Text = "変更後" としたい }
> ここで TextBlock.Text = "変更後" としたい すりゃいいじゃん。 言いたくないけど頭悪いにも程がないか
>>486 あっ間違えた
a.Text = "変更後" です
485の > TextBlock.Text = "変更前"; も a.Text = "変更前"; の間違いです
引数について学んでくれ
実際イベントハンドラに任意のオブジェクト送るのどうやんの? フィールドとして持っとくほかない?
イベントハンドラを持ってるクラスがイベントをハンドルするのに必要な情報を持つ ごく自然なことじゃないか
必要な情報は EventArgs と sender でことたりる。
そもそもWPFで画面要素をコードで動的生成とかどうなの
全部XAMLで作るの無理だし
KeyPressEventArgs eでタブキーが取れないみたいなのですが、どうにかできますか?
KeyPressって名前にだまされてるんだよ これは文字が入力されたときのイベント
エンターが取れてもタブはだめなんですね
いわゆる初心者本をやった後どうしたらいいか難民状態です
作りたいモンを作れよ
>>499 マジで
>>500 の言うとおり。
指示されたもんじゃ持続できない。
自分が少しでも楽になる物を作れ
何をしたいのかによるが… 既存のものを模倣したり、改良したりとか あとはアルゴリズムを考えてみたりとか自分のやりたいことをやればいい
>>504 C#を勉強してみたいっていう動機ではじめてしまったのが
間違いだったみたいですw
しいて言えば
「○○という条件のもとで○○という処理をしたい」
みたいな案件が出されたときに、ササっと作れるようになりたい
というなんとも漠然とした考えしかないです
やめてしまえ お前は作らなくてもまったく問題が無い
2chの専ブラ作ってくれ 俺は使わないけど
よくある問題でもやってみたら? 各人物毎、各教科毎、点数合計・平均とかを入力出力するやつとか 設計からむから意外と出来ない人多いし
くさかべ
>>502 残念だがこういうこと言ってるうちはあまり進歩しない。
○×ゲームでも作ってみれば
1時間でテトリスの人に挑戦するとかいいんじゃない? まあまずテトリスが作れるかが問題だけど…
DLLを作ったのですが、 他の人に参照されて使われたくありません。 その場合、
投稿してしまいました、 その場合どうすればいいのでしょうか?
他人に渡さなければいいのです
>>514 ああ、あれw
面白うそうだったんで真似して作り始めたら、
まあ1時間とは行かなかったけど半日でできたよ。
ああいうプログラミング実況というのは意外に役立つものなのかもねぇ。
>>515 おまえさんが心配しなくても、そのDLL使う人はまずいない
質問スレで訊いちゃう自分の実力を過大評価しすぎ
気楽にいこうぜ〜
じゃなくて、知識としてDLLを使われたくない場合どうすればいいか、と聞いてるんです 参照元をチェックすれば出来ますか?
C#って作ったexeのソース逆コンパイル出来るって本当?
それ、DLLにする意味あるの?
>>523 C# に限らず、中間言語吐くタイプの言語は逆コンパイルしやすい。
C# に至っては、フリーで結構出来のいい逆コンパイラーがあるからねぇ。
>>522 本当に使いたい奴はディスアセンブルしてチェック部分を消すだけだから無駄無駄
.NETは全て逆コンパイル出来るよ
そういえば、.NETではアセンブリ同士でGenuineチェックをかけられるが、 あれは流用防止に対して効果はあるんだろうか?
530 :
デフォルトの名無しさん :2009/12/05(土) 01:18:32
特定classのインスタンスが持つプロパティと設定値を2次元配列として取得する方法を教えてください。 例えば、int型のプロパティa,b,cを持つclassのインスタンス(Test)があるとします。 そこで、Testの持つプロパティと設定値を仮に int a = 1; int b = 2; int c = 3; とした場合、 {a,1} {b,2} {c,3} というobject型の配列を取得したいです。配列の行数とプロパティの数はいずれも固定で同数です。
>>530 そういうプロパティを持ったクラスを定義してあげるのが絶対早い。
ヒント:クラス
そんな方法ないから、自分でリフレクションして配列作れ。
>>530 class Class1 {
public int a { get; set; }
public int b { get; set; }
public int c { get; set; }
public Dictionary<object, int> d {
get {
var d = new Dictionary<object, int>();
Type t = this.GetType();
foreach (PropertyInfo pInfo in t.GetProperties()) {
if (pInfo.Name == "d") continue;
d.Add(pInfo.Name, (int)pInfo.GetValue(this, null));
}
return d;
}
}
}
class Person{ int age; string name; } できた!パーソンクラスできたよ!
配列最強!配列があればリストだのスタックだのキューだのいらねー
DLLの関数を呼ぶときにパラメータとしてパスワードも 送るようにすればいいんじゃない?
get;set;
使いたくならないようなDLLを作ればいいんだよ。 ネームスペースに VisualBasic とか入れてみたり メソッド名が全部ローマ字英語だったり。
>>539 SugeeeDQN_wktk.dllとかさ。よけいに興味もつかもな(´・ω・`)
普通にdotfuscatorだけでも使う気は無くなるだろ
>>539 >メソッド名が全部ローマ字英語だったり。
んなもん、日本の商用ソフトのdllなんかでは当たり前ですがな。
clockでもtokeiでもいいけど、kurokkuはヤメいというのがうちのルールだな。
ローマ字英語は気持ちわるすぎだろ Tokeiはまだいいよね
Trojan.dll
akirahorimoto.dll
virus.dll
危険ウィルス.dll
Process.Start(@"wmplayer"); これだけで、C:\Program Files\Windows Media Player\wmplayer.exe を実行できるのはなぜ? C#にはあらかじめwmplayerのファイル情報とか登録されてるの?
スタートメニューの「ファイル名を指定して実行」で起動できるものは 同じように起動できるんじゃない? 例えばregeditとか つまりC#の機能じゃない
regeditはまた別の理由だけどなー wmplayerはシェルの機能 ProcessStartInfo.UseShellExecuteをfalseにするとwmplayerのフルパスが必要になる
シェルって何なのかよく分からないよね
>>516 規約で禁止すればok
技術的にはあきらめれ
実態はネット越しに置いておいてRPCみたいに使うようにして、使用する際に認証が必要にするとか。
C#からC++って移行しやすいですか
うん。でもC#の便利さになれたら不便に感じることが多いはず
>>557 ですよねぇ・・・
インテリセンスだとか、そのあたりの機能面ではVS2010で改善される見込み有るんですか?
簡単にVC++やってみたんですけど、C#みたいにインテリセンスの使い勝手が良く無くて・・・
C++は簡単にやるための言語じゃないからな
MSにはもうC++をどうこうしようって気概はあんまり感じられないなぁ・・・
>>559 いやでもIDEが簡単にしてくれるならそれにこしたことはないとは思う。
補完とか特に。
だってC#はインテリセンスのことまで考えて設計された言語だよね C++のころはそんなのなかったからなぁ
そのうちあえて++使う理由はどんどんなくなってく気はするな ネイティブもC#で書ければいいのになぁ
>>559 インテリセンスの不便さと全然関係ないだろw
>>563 関係あるんじゃない?
C++は言語的にインテリセンスしにくいらしいし
なんかクエリ式がfrom句から始まる理由もそんなんだとか言ってなかったか
>>562 そうなんですよね・・・ネイティブを作りたいからC++やりたいと思いまして・・・
C#でネイティブ書ければいいんですが・・・
ネイティブならdelphiの方が…
DLLを作って、そのDLLが同じディレクトリに入っていないとエラー出ますよね。 そのExceptionはどこで出ているのですか?
マネージドなアセンブリなのかアンマネージドなDLLなのかにもよると思うが
シェルを一言で説明すれば?
魔法防御強化魔法
オランダ資本の(以下略
アンマネージドDLLです
C# で Java の WeakHashMap みたいな他に参照しているものがいなくなったら GC対象になるような Dictionary はないのでしょうか? ないのであれば、どのように実装したらいいのかのヒントをお願いします。 #ファクトリメソッドとかでオブジェクトのキャッシュ等を作ろうとすると必要になりますよね・・・?
MSDNのWeakReference読むといいよ
>>575 ありがとうございます!
そのものずばりの例まで載っていました。
MSDNの例だとKeyはGCされないから ファクトリメソッドなんかで使うとちょっと期待した動作と違うことになるかもな
オブジェクトの管理用なんかにはWeakReferenceいいけど、 キャッシュとかには単純には使わない方がいいよ。
そうそう、
>>577 も言ってるけど、普通にやるとキーは消えないから注意。
580 :
574 :2009/12/05(土) 21:16:08
なるほど・・・。 あと MSDN の例だと WeakReference オブジェクト自体も GC 対象にはなりませんね。 キーを WeakReference にして格納したとしても同じ問題が起きちゃうか・・・
だからたまにキーが死んでる要素を削除するんだよ
582 :
574 :2009/12/05(土) 21:27:42
なるほど、なるほど。 その「たまに」ってのがGCのタイミングだと嬉しいんですけど、 なかなか実現が難しそうですね。
どのみち一般的に実装できるようなものじゃない 使い方次第だ
キーまで弱参照にする場合はほとんどキャッシュ専用になるな。 今そのキーがあるかないかが処理にかかわらないような場合ってことね。 値のみ弱参照の場合はキャッシュの効く Dictionary みたいな用途かな。
物理シミュレーションプログラムを使うのは VC#とVC++とどっちが適してるかな? 似たようなもん?
まあその質問レベルじゃどっちでも似たようなもんだ
なんでJavaには出来てC#には出来無いんだ????
>キーまで弱参照 無理だよそんなの。 まともに使えない。
Given a player move and a specific direction, determines if any opponent discs will be outflanked. Note: For performance reasons the direction values are NOT checked for validity (dr and dc may be one of -1, 0 or 1 but both should not be zero).
キーを弱参照にするのは普通にあるパターンだよ JavaのWeakHashMapはそう キーとして使うオブジェクトに付加的なリソースを割り当てたりするのに使う
>>588 そうか?
- キーまたは値が回収済みの場合はどこぞからか読み込み/格納し、それを返す
- キー/値ともに未回収の場合はそれを返す
って感じのキャッシュが出来るっしょ?
キャッシュというより,static readonly Dictionary<object, ObjectInfo> externalInformation みたいなのが必要な時に使うんだよ この場合キーをWeakReferenceにしないとメモリリークする
その場合でも キーの WeakReference の IsAlive = false な奴を定期的に削除する処理は 必要になるんだけどな
むしろキーの強参照を避けるのが重要で値の方は少々放置してもいいような場合に使う 普通に考えるキャッシュとは違うな
なんか使い方が難しいってことはよくわかった よくわかんない人は使わなくても全然おk?
このオブジェクトが生きている限りは生きていてほしい 死んだらもう不要 ってときに使うの よく,メモリを食うオブジェクトをGCできるようにしておくために弱参照を使うなどと書いてあるサイトがあるけど これは間違い。MSDNにもそういうキャッシュには使うなと書いてある。
なんでそういうキャッシュには使ったらだめなの?
大きい画像を重ねて表示させようとしているんですが(最大1920*1024を4枚) drawImageでは処理が重くて困ってます (TextureBrushも考えたんですが途中で元のBitmapを変更することがあるの で・・・) なにか素早く表示するのにいい方法があればよろしくお願いします
いや、そこで言っているキャッシュってHTTPキャッシュじゃないのか? キャッシュポリシーを作成しろと書いてあって、キャッシュポリシーが 何を指すかと検索してみるとHTTPキャッシュのポリシーだから。
「クリアされても簡単に再作成できるオブジェクト」に使えと書かれていることから、 メモリを食うからって作成コストも考えないで使うんじゃないよ、ということかなと。
クリアされても簡単に再作成できてメモリを馬鹿喰いするオブジェクトが思い付かない 簡単にってのが何を指してるんだろう
関数の引数に関数をいれるのって良くない? hoge( piyo("abcd") ) みたいな
WeakReferenceはGC一発で回収されるからキャッシュポリシーとしてまともに動かない。 だからGC頼りじゃない、別のキャッシュポリシーが必要ってことだよ。
>>588 でおれが書いたのは単に
Dictionary<WeakReference, WeakReference>
見たいのどうやって使うんだよって話だよ。
あくまで実装レベルでの使い方話で、ポリシーや設計レベルの話じゃない。
キーにWeakReference,なんて普通に使えないだろ?ってだけ。
使えるっていうならどう使うか使うとこのコードを書いてみてくれ。
>>605 別に悪くないんじゃない?副作用のあるメソッドを引数で複数回呼ぶときは
誤解うまないようわけた方がいいんじゃないかなとは思うけど。
つまりDictionary<WeakReference, WeakReference> こんなんじゃないってことだろ。 作ればできるのは分かってる。
うん。そうだね。
>>558 2010で多少マシになってる。
けど、C++で本気出すのはその次のバージョンでとか言ってたんじゃないかと。
>>565 そう。
最後がSelectじゃないとインテリセンス効かないから。
よっさ
複数行labelのTextを、中央揃えで表示したいのですが、 どうすればいいですか?
>>614 何を言ってんだ?
どうするもこうするも、普通にできるじゃないか。
普通に・・・といっても、1つのlabelのテキストを中央揃えに出来ますか? 行数の分labelを分割すれば出来るんですが・・・
自分で試す前に質問してるの? 別にプログラミングで意図した結果が出てもPCが爆発するわけでも死ぬわけでも ないんだから先に試せよw そういう性格プログラミングに一番向かないタイプだよ真面目に
答えられないなら書き込まないでくれませんか? 邪魔です
初心者叩いて喜んでるキチガイは無視
>>616 LabelのTextAlign変えたらええやん
結局C#ってVBのC風味って感じなのかなぁ。 .NET Frameworkが言語仕様と切り離し不可能になっているし、 データベース関連が非常に手厚いように見える。 便利だからよかろうと言って一緒くたになっているのは正にマイクロソフトってかんじ。 数年後には整理したくなって、また新しい言語をつくるのかな。 書き捨てごめん・・・
VB6から移行しやすいように作ったのがVB.NET C++から以下同文がC#ってだけ VBでもないしC++でもない MSも誤解を招きそうな言い方をしているが、それらの延長線上にある言語でもない(と、俺は思う) .NETが言語仕様と切り離し不可能ってのも違う C#の言語仕様にCLRのコードを吐けとは規定されてない その辺はコンパイラの自由でありネイティブなコードを吐いても構わない MONOのコンパイラは実際吐ける 書き捨てる前に知識を仕入れろ
便利なのはC#じゃなくてVisualStudioだな VSでしかコード書いたことないやつは他の環境だとまともに書けないことが多い
>.NETが言語仕様と切り離し不可能ってのも違う 厳密には切り離し不可能とはいえないかもしれないけど、事実上対なのではないかなと思う。 Windowsでかなり有機的になって理解が大変だったが、Frameworkで言葉を換えてさらに有機的になったように思う。 ソフトもドキュメントもどんどん抽象的になって、実際具体的にさしているものがイメージしにくい。 知識を入れているが、.NETが大きすぎて全体像がいまだに掴めないんですよね。 >MSも誤解を招きそうな言い方をしているが、それらの延長線上にある言語でもない(と、俺は思う) こういう一言って、C#って何者??という頭になっている自分にはすごく救われますよ、ありがとう。 >書き捨てる前に知識を仕入れろ 書き捨てはTwitterにしていたんだが、間違って掲示板に書いてしまった。不快な思いをさせてごめんなさいね。 全国の浦島太郎、頑張ろうぜ!
AsyncOperationの使い方がよく分からないよママ
BackgroundWorkerかControl.BeginInvokeでよくね?
使ってみたいだけです('A`)
バックグラウンド処理を開始するときに、 まず開始前にCreateOperationで作成してから、処理開始。 処理側から通知したいときにポストとかする。 終わったらコンプリートする。 いま携帯だから詳しく書けない。 .NETの公開されてるソースに、BackgroundWorker無かったかな? それのソースが一番参考になると思うが。 ってか別に普通に実装サンプルあった気がするな…
ああごめん まさに629を読んで既に解決してました
>>623 そりゃまぁ、わざわざ他の環境使う必要ないからな。
フォームをクリックしたときなんかする(MessageBox.Showとか) のは、OnClickをオーバーライドするのと this.Click += メソッド名 ってやるのとどっちがいい?
オーバーライド
どうもありがとう。overrideのほうがわかりやすいしな。
まあ、テキストエディタでC#書いたらJavaより酷いことになりそうだな
C#はインテリセンスも前提として設計されてるから、インテリセンスで書くともはや普通のエディタでは書けない
C#というより.NETのライブラリの方
Ruby始めて最初はスクリーンエディタ使ってたけど C#経験してると補完なしは苦痛以外の何物でもない やむなくNetBeans使い始めたけど、C#と比べたら補完なしと変わらん 動的型付けとかの問題は確かにあるが
スクリーンエディタって言葉を聞いたのは30年ぶりだわw そんな死語まだ使う人いるんだ
ラインエディタがなくなったから、わざわざ言わなくなっただけで、 別に死語じゃないだろ。
インテリセンスけなしてる奴にはEDLINで開発してもらいたいなw
死語って言いたいだけのかまってちゃんだろ
おいおい、またプロ(笑)ならエディタを選ばずメモ帳で プログラミングぐらいできて当たり前とか言い出すぞ
>>639 はWindowsでしかプログラム書かないんだろうな
LinuxでCUI環境ならスクリーンエディタ使うなんて至って普通
初心者スレだからDisposeでOK
Rubyって見た目キモいし微妙にC#っぽくて紛らわしくて嫌い Pythonの方が好き
rubyってbeginとかendがある言語だろ 気持ちワリー
あれは同意。書くのも消すのも面倒そうとしか思えない
Delphiを作ったアンダースおじさんが泣いてる
>>644 Windowsしか知らない人はスクリーンエディタなんて言葉聞いたこともないだろw
「Windowsでしか〜だろうな」
「LinuxでCUI環境なら」
最近Linux触りはじめた人の寒い自慢にしか聞こえないからやめとけ
>最近Linux触りはじめた人の寒い自慢にしか聞こえないからやめとけ あるあるあるあるありすぎてこまる
嫌な思い出がフラッシュバックした
そんなもん自慢して何になるんだよ・・・ 「死語」なんて使う奴のほうがマスコミ脳ぽくってよっぽどキモイわ 少なくとも俺の周りにはそんな化石はおらん
このスレのガーベージコレクションはどういう仕組みですか?
>>653 自己顕示欲を満たしたいんだから何だって自慢の種にはなる
「みなさんはIMEに何を使っていますか?」 突っ込みたくなったら負け。
クラスの中でなんでも自慢したい奴が確かに居たが 何を言っても自分の知らないことは「自慢かよ」って言う ショーもないのも必ずいる
「みなさんはATOKに何を使っていますか?」
IMEをMS-IMEのことだと思っている人ですか?
に って言われると困るな ああ、俺負けだ
みなさんはJapanistに何を使っていますか?
>>657 これも居すぎてこまる
嫌儲とかここらへんの血を引き継いでると思う
コンソールアプリの出力をEclipseみたいに VC#の出力ウィンドウに出力させるにはどうしたらいいんでしょうか?
自己レスですいません、Trace.WriteLineでできました・・ しかし、デバッグしたときにコマンドプロンプト画面を出さないようにするには どうしたらいいのでしょうか?
Windows フォームアプリにすればいい。
できましたw
デバッグならTraceじゃなくてDebug.WriteLineの方を使った方がいい
プログラムから、プログラム(exeファイル)を生成する事は可能ですか?
CodeDOM または流行りのSystem.Reflection.Emit
.netにデフォルトで入ってるdllが 簡単に逆汗できるようになってるのは 初心者がソースをよんで勉強しろってことだろうか。
逆アセンブルなぞせずとも普通にソース公開しておる
Standerd以上だろ Expressは見られないよ
>>670 どこではやってんだw
>>671 リフレクション用にいろいろメタデータ入っちゃってるから。
>>673 reflector for .NET でぐぐれ。
>>670 うーん・・・
どっちが手軽ですかね・・・?
CodeDOMはC#のコードをコンパイルできるけど EmitはIL直書きなので非常に大変 流行ってるというのはIronPythonなどの.NETで動く動的言語に後者が駆使されてる dynamicもEmitがベースになってる
>>676 ,677
どっちも大変なんですかね。。
数行のプログラム(Console.Write程度)で実験しようと思ったのですが、
やっぱりCodeDomにするべき・・・かな・・・?
CodeDOMの方がサンプルが揃ってるのでお勧めしておく。
文字列をC#のコードとしてコンパイルできるから簡単でしょ
Reflection.Emitは
>>674 の考える面倒という概念をはるかに超えてる
il.Emit(OpCodes.Ldc_I4_1);
il.Emit(OpCodes.Ldc_I4_2);
il.Emit(OpCodes.Add);
il.Emit(OpCodes.Ret);
これで return 1 + 2; 相当
>>678 Console.Write程度ならすぐに出来るけど、それ以上のことをやろうと思うとILを真面目に勉強しないと厳しいよ。
>>681 俺言語を作ろうとして電卓完成直後に力尽きたのでよく分かる。
まあILを読めるようになっておくのも悪くない
DLRや.NET4のExpression Tree使えばわりと簡単にEmit扱えるんだけど
>>680-685 どうも。
とりあえず、CodeDOMが無難みたいですね・・・そうしたいと思います。
また、暇な時にILも勉強してみたいと思います。
>>685 いやいや、式木が出たからこそ、もう IL 直吐きなんてしたくないだろ。
>>686 一番無難なのは、今βなのを我慢して .NET 4 使うこと。
CodeDOM とか IL Emit と比べたら、DLR(.NET 4 では標準搭載)の式木は大分使いやすい。
Visual Studioで勝手に作られるC#のソースコードは冗長でダメだな。 いちいちForm.Click += new Eventhandler(なんとか)みたいなクソ長いことしないで ラムダ式とかで書いてくれよな。
自分で書けよ
using System; using System.Windows.Forms; これで、ソリューションエクスプローラの「参照設定」 にSystem名前空間を含めなくてもSystemに入ってるクラス(Consoleとか)を使えるけど Windows.Formsのほうは「参照設定」に追加しないとダメなのはなんでだ? System名前空間はなんか特殊な権限があるのか?
名前空間の名前と参照するDLLの名前は全く関係ない System.Linq名前空間のEnumerableクラスがどのdllに入ってるか調べてみ
質問内容がわかりづらくてすまん。 System名前空間がmscorlib.dllにはいってるのはわかるんだ で、それを使うときに参照設定にmscorlib.dllを追加しなくても使えるのはなんで? FormクラスはSystem.Windows.Form.dllにはいってるらしいからこれを参照設定に追加しなきゃならない。 mscorlibの特権?
ああ、そういうことね その通り それを抑制する/nostdlibオプションもある VS2008ならプロパティでビルドの詳細設定から
ああ、こんなところにあった mscorlibを参照しないとか書いてる。なるほど、mscorlibはなぜか特権階級だったわけか。 なぞが解けた。どうもありがとう
だってこれ参照しないと本当に何も使えないんだぜ。
mscorlib.dllを参照しない場合とは、mscorlibそのものをビルドするときだけだとひそかに思っている。
697 :
デフォルトの名無しさん :2009/12/07(月) 08:01:02
ある大規模団地の賃貸管理システムを考えています。 物件ごとに入居者や賃料、入居日や契約期間を一覧にします。 その中で、 ・賃貸管理表(家主宛)と ・賃貸管理表(内部経営者用) の2帳票を作成したいのですが、内容は一部の相違点があるものの、95%は打ち出す項目が同じ(約200項目)なんです。 なので、印刷内容を項目ごとに先頭のパブリッククラスの中で共通ワーク変数に格納して、プリントドキュメントの中でその変数を参照したらいいかなと思っていますが、 皆さんはこのような、大量項目を類似2帳票に印字する場合、どのようにプログラムを組まれていますか? よろしくお願いします。
賃貸情報クラス、賃貸情報項目クラスを作って、 ・賃貸情報項目クラスに出力する帳票とその順序などのデータを持たせる ・賃貸情報クラスで項目と値を関連付けてコレクションに入れる ・帳票への出力時に必要な項目を取捨選択する あとは現状のシステムとか要件が分からんとなんとも
699 :
デフォルトの名無しさん :2009/12/07(月) 10:06:47
>>698 ありがとうございます。
2つのクラスを作るとのことですが、すみません。
まだクラスを作った経験がありません。
実際に各項目のDrawはどのタイミングで行うのでしょうか。
プリントドキュメントのプリントページイベント内で2つのクラスを呼ぶイメージでしょうか…。
C#勉強してたらほかの言語を勉強するのは楽だな。 ちょっとした文法の違いを学ぶだけでオブジェクト指向とかメソッドとか変数の型とか概念そのものを勉強する必要性がないな。 C#やってからRubyに移行したほうがいいな。
つ F#
イベントハンドラに登録するとき、 form.FormClosed += new FormClosedEventHandler(Form1_FormClosed); でも form.FormClosed += Form1_FormClosed; でも どちらでもコンパイルが通ってしまうんだけど、何か違いはあるんだろうか?
ない。完全な省略。
C# 2.0から省略可能になったはず。
705 :
デフォルトの名無しさん :2009/12/07(月) 12:31:39
社員1:200,200 社員2:200,000 社員3:240,000 … 社員320:180,000 と、社員1〜320までの毎月の社員給与を計算して、インスタンス変数に取っており、これを別々の2つのパネルのデータグリッドビューに表示させています。 しかし、インスタンス変数を300も1000も定義するのは間違いなのではとも思います。 こういう場合、社員1〜320までの給与を計算するサブルーチンを用いて、get、setなどの命令で参照するようにすることはできますか? 全くの初心者で、ズレた質問かもしれませんがよろしくお願いします。
データベースをデータグリッドビューにバインドするだけ ほとんどコード書かずにできる
707 :
デフォルトの名無しさん :2009/12/07(月) 12:49:36
データセットやインスタンス変数を使わずに共通ワークエリアから引用する方法はあるのかな。 COBOLの経験しかないので、ワーキングストレージセクションみたいなのがあって欲しい。
ないかもね
709 :
デフォルトの名無しさん :2009/12/07(月) 13:00:30
コレクションって何? ワーキングストレージセクションみたいな印象。
COBOLなんかさっさと忘れてしまえ
COBOLを忘れられない君に、COBOL.NET
最近の言語使う上でCOBOLの知識は役に立たないどころか有害
あと10年したらひとまわりしてまたCOBOLの時代がくるよ
ひまわりの時代はまだかな
716 :
デフォルトの名無しさん :2009/12/07(月) 14:42:35
1.データセット「DataSetShop」をデザイナ上で作成しました。 2.「DataSetShop」の中に「food」というテーブルを作成しました。 3.メインフォーム「shopsearch」のデザイナ上に「DataSetShop_standard」を配置しました(参照先は「DataSetShop」)。 4.「shopsearch」のコードの中で DataTable shop = DataSetShop_standard.food(); と記述して、foodテーブル内の項目を参照することができましたが、 5.「shopsearch」内に public class shop_address というクラスを作り、 その中で「DataSetShop_standard」を参照することができません。 public class の中で、定義済みデータテーブルを参照するにはどうすればよいでしょうか。 よろしくお願いします。
ああなるほど。 hoge.HogeEvent += new HogeEventHandler(Hoge_Event); って hoge.HogeEvent += Hoge_Event;って書けるから hoge.HogeEvent += (s, a) =>{ //Hoge_Event }; って書いてもコンパイル通るのか。 デリゲートでラムダ使う場合一回キャストしないとダメなのに、 なんでイベント登録では通るのか謎が解けたわ。
718 :
デフォルトの名無しさん :2009/12/07(月) 18:46:04
>>718 無理。仕様。
そのインナークラス(だと思うが)のコンストラクタにでも参照渡してやれ。
というか、店の住所が店じゃなくてフォームに紐付いてる設計を疑問に思え。
画面サイズ1024×768にあわせたフォームForm1と 画面サイズ1600×900にあわせたフォームForm2があって それをProgram.csの中でスクリーンの横サイズを判断して 切り替えたいのですがうまくいきません。。。 Form2はフォームが大きさ分、Form1より表示項目を追加しています。 よろしくお願いします。
お前はその文を読んで意味が分かるのか?
722 :
720 :2009/12/07(月) 19:50:08
たしかに変だわ。訂正します。 画面サイズ1024×768にあわせたフォームForm1と 画面サイズ1600×900にあわせたフォームForm2があって それをProgram.csの中でスクリーンの横サイズを判断して どちらかをフルスクリーン表示したいのですがうまくいきません。。。 Form2はフォームが大きい分、Form1より表示項目を追加しています。 よろしくお願いします。
こんな感じ? if (Screen.PrimaryScreen.Bounds.Width < 1600) Application.Run(new Form1()); else Application.Run(new Form2());
Screen.PrimaryScreen.Bounds
726 :
720 :2009/12/07(月) 20:01:22
クリップボードに文字を送りたいと思い、このコードをCSC.exeでコンパイルしたのですが using System.Windows.Forms; class Test { static void Main() { Clipboard.SetDataObject("クリップボードへ送る", true); } } 作られたexeを実行すると下のようなエラーが出てきてしまいます。 何が悪いのかもわからないのですが、基本的に何か間違っているのでしょうか? ハンドルされていない例外: System.Threading.ThreadStateException: OLE が呼び出される前に、現在のスレッドが Single Thread Apartment (STA) モードに設定されていなければなりません。Main 関数に STAThreadAttribute が設定されていることを確認してください。 場所 System.Windows.Forms.Clipboard.SetDataObject(Object data, Boolean copy, Int32 retryTimes, Int32 retryDelay) 場所 System.Windows.Forms.Clipboard.SetDataObject(Object data, Boolean copy) 場所 Test.Main()
class Test { [STAThread] static void Main() {
アプリケーションショートカット(.lnk)を取得して、 そのリンク先を取得したいのですが、どうすればいいでしょう・・・?
>>730 .NET 1.1の頃はこれでも行けたのではないかと。
STA/MTAの属性指定をしないと、とりあえず中立の状態だったので。
>>730 記事の日付を見てやれ。
.NET1の頃とこの辺動作が変わった。
ってことはSTAThreadの説明見りゃ書いてある。
つまり教えてもらった通り写しただけでヘルプ見る気もないだろw
>>732 >>733 あっ、と納得しました!
こっちの環境にどこか問題があるのだろうと勝手に思い込んでました
どうもありがとうございました
インスタンスのprivateフィールドって外部から絶対にアクセスできない?
コンストラクタからならアクセス可能
class A{ private int x; public void func(){ x=10; } } こうやれば間接的にアクセスできる
あ、ゴメン。変なこと書いた。
コンストラクタはインスタンスメンバだからインスタンス外部かインスタンス内部かという話なら内部だ
そういう話ならクラスのstaticメンバからはそのクラスのインスタンスのprivateメンバにアクセス可能
これは正真正銘インスタンス外部からのアクセスだ
でも
>>736 の言ってるのはそういうことじゃなくてたぶんクラスの外部からprivateフィールドに
アクセスできるかどうかという質問だろう
リフレクションを使えば可能
絶対ってどういう絶対だ? 言語仕様の範疇では直接アクセスは無理だけど、 リフレクションでも使えば何でもできる。 パーミッションは要るけど。
>>740 やっぱりリフレクションを使えばいけるんですか?
とりあえずリフレクションで拾うところまではできたんだけど
そこから先もできるのかな?と
>>741 すいません、質問の仕方が悪かったです
できることがわかったんで感謝です
>>736 using System;
using System.Reflection;
namespace ReflectionTest {
class test {
private int i;
public test(int val) {
i = val;
}
}
class Program {
static void Main(string[] args) {
test obj = new test(5);
FieldInfo[] flds = typeof(test).GetFields(
BindingFlags.NonPublic | BindingFlags.Instance);
foreach (FieldInfo fld in flds) {
Console.WriteLine("{0} : {1}", fld.Name, fld.GetValue(obj));
}
}
}
}
>>745 おーーー超感謝
それで fld.SetValue(obj, 3); みたいなのがしたかったんです^^
ただし自己責任ね ある日実装が変更されて動かなくなっても文句言うなよ
リフレクションは別に非公式でもなんでもないから 動かなくなるってことは無いと思うけどなぁ。
リフレクションする対象の実装が変わったら、ってことだろ。
「実装が」って言ってるのに「リフレクションは」とか 日本語能力がヤベェですね 日本語能力初心者スレ
日本語能力低すぎワロス
日本語読めない人の集るスレかここはwwww ダセーwwwwwww
ここはC#初心者のスレであって日本語初心者はおよびでないんだが
>>748 お前は消えて無くなった方がいいな
とりあえず[Obsolete]属性を与えよう
話の通じない人は嫌いです
>>748 はまず日本語の勉強をしたほうがいいんじゃない?
しつこいwwwwwwwwwww
「実装」と「リフレクション」が同じ文字にみえるなんて・・・ 眼科いったほうがいいんじゃないか?
一人でがんばってんなw
>>748 そうだね、リフレクションは動かなくならないね。
でも private な部分は書き換えられることがあるんだよ。
まあ君にはわからないかもしれないけど。
平和ですね
初心者にリフレクションがなんなのか理解しろってのは無理な話。
そういう意味では
>>748 もある意味しかたがなかったんだよ。背伸びしただけのこと。
お前らしつこすぎ。
属性というのが裏でなにをやってるのか見えなくて気持ち悪くて仕方がない
実はテレ隠しで連投してるのが
>>748 というオチ
プログラマは苦労に見合わないバカみたいな給料で働いてる人が大多数だから こんな初心者スレで他人をバカにするくらいしかストレス発散の方法がないのだろう。
俺は750、759、764しか書いておりません
気を取り直して次の初心者さんどうぞ
まあ、馬鹿にするのも(ウィットとまではいかんでも)何か皮肉が利いてるとかなら それも面白いかなとも思うんだが、どうもやり取りが単に幼稚臭いというかガキ臭いんだよなあ。 命令口調でしか口が聞けない(真面目に精神病んでるんじゃないかと思うが) 奴もやたらと多いし、この精神年齢の低さはいったい何なんだろうなとは思うな。 安月給(A)がストレス(B)の原因という因果分析(A⇒B)は恐らく間違ってる。 そうではなく、無能な人格破綻者だから(C)安月給でストレスが溜まる(C⇒A、C⇒B) というのは恐らくより正しい物の見方だろう。
何か必死なのが二人ぐらいいる気がする
とりあえず
>>748 にアンカー付けてるのは2人だと思う。
勘だけど。
命令口調なんてここでは別に何とも思わんが、
>>773 みたいのが一番うざい。
ってか最近やたら命令口調に噛みつくやつがいるが、
2ちゃんで命令口調って普通に話してるくらいの感覚なんだがな。
>>748 はここまで苛められるほど酷い発言だったのか?
お前ら安月給でプログラムしかできない連中はいちいちバカにせず黙って日曜プログラマに技術を教えていればいい。 そのくらいしか存在価値がないんだから。
>>748 馬鹿にしてるのせいぜい1人だろ
幼稚すぎる
ある意味
>>748 の想定通りの展開になったと思うw
十日で800弱レスとか早すぎないか?
テキストファイルの中から、指定したテキストを検索し、その行数を高速に取得する方法を教えてください。 今は単純に1行目から検索していって、改行コードの数で行数を取得してるんですが、対象データが680万行もあるので、非常に時間がかかります orz
その対象データによる 固定ならあらかじめ検索できるようにシステムを組むとかね
鯖100台に割り振れば6.8万行で済む
CRLFとすると改行だけで13Mw データの持ち方から検討するレベルだな
>>783 スレ違いだが、Unixのコマンドを使えば
cat LOG | grep キーワード | wc
で出るよ。
LOGがログのファイル名、キーワードがヒットさせる正規表現。
どうしてもC#でやるというなら、テキストストリームで1行ずつforeachで回すんじゃないかな。
1ファイルに680万行て一体何のデータだ。
せめて法則性があれば。 行の頭に1,2,3,4,5・・・と数値を付けておいて、その数値が最初に出てくる行数(n)をあらかじめ規定。 検索するときはn行目から検索、とか。
790 :
789 :2009/12/08(火) 01:28:07
言葉足らずだった。 行の頭に数値を付けて、あらかじめソートしておくってことで。
>>783 汎用機から持ってきたデータとか言うのをもらったことがあるけど
そんな感じのでかいテキストデータだったよ
で?
俺も、webアクセスログを解析するソフトを一応作ってみたが、 ログデータが渡されるのは1ヵ月毎。 アーチンという解析ツールを使用している。 アーチンはログファイル渡すと、遅くても20分位で解析結果を出してくれる。 高機能なんだけど痒いところに手が届いておらず、 そこんところを自作してみたんだが 多くて800万件(行)ぐらいのものだったけど、 それでも読み込む(データ解析含め)のに3時間くらいかかってしまい、 あえなく挫折。
テキストエディタで出来たりしないかな
俺ならもっと速くできる
StreamReader#ReadLineで1行ずつ読んでるなら、それ以上速くならないだろう。 せいぜいバッファサイズを増やすくらい。 ReadToEndを使ってるならページングで時間を食ってるわけだが、 そんなことはやってないよね? あとは、同じデータを繰り返し検索するならデータベースを活用するとか。 これも最初のロードに時間がかかるから再利用の頻度によるけど。
ReadToEnd じゃ OOME 出るだろ。
readallでいいんじゃない
キャー富豪的!
LogParser
どんなソースか書いてみそ。 ファイルサイズはどのくらい? で、どのくらい時間がかかってるの? 単にファイルをディスクから読むよりもずっと遅いんだよね? そうでないなら速くなる余地はない。 頭から調べるやり方を変えられないなら。 1回しか検索しないんならそういう方向で工夫する意味はないしな。 何度も検索するものならやり方を変えてしまうのも手ではある。
質問です ButtonコントロールでボタンクリックはOnClickで取れますが ボタンを凹ました瞬間の適切なイベントは用意されていますか?
>>804 それでは考慮不足です。
スペースキーで凹ますとイベントが起こりません。
まだ、OnKeyDownやその他ボタンを凹ませる標準的な挙動の
すべてを把握して処理を入れることはやりたくありません。
ボタンが凹んだことを知る適切なイベントを求めています。
よろしくお願いします。
>>805 少なくともボタンクラスにはそのようなイベントはない。
継承するなりなんなりで自分でつくれ
>>805 なんでそんなに上から目線なんだよ?笑
>>806 ありがとうございます。
カスタムコントロールで対応します。
spy++とかでボタンが凹んだときのウィンドメッセージ調べて WndProc overrideしてイベント起こすのが楽だと思うが。 と解決した質問にマジレスしてみる。
質問いいですか? アプリケーションのウインドウがアクティブになる度にそのプロセス情報を取得することを考えています。 それで、ウインドウがアクティブになると発生するイベントみたいなものはあるんでしょうか?
別プロセスのメッセージ拾いたいならグローバルフックしかない→C#じゃできない
× C#じゃできない ○ .net frameworkじゃできない
俺は他人に教えるの下手だ このくらい言わなくてもわかるだろ って思って簡潔にしか説明しなかった部分が、意外とわかってもらえなかったりする。 やっかいだな
エクスプローラ ライクにフォルダをツリー表示出来る出来合いのコントロールで いいものありませんかね? できればシェルのメニューがそのまま使えるものがいいです。 codeprojectのwillsonprogrammingなどを試してみましたが、どうもVSのデザイナと 相性がわるいらしく、エラー続出で今ひとつです。
そういうのも才能いるだろうしなあ。 ある分野で有能な人間が必ずしも有能な教師とは限らない、その逆もしかりってやつじゃない?
説明するのが面倒な部分は理解も実装も面倒だから聞いた側もなんとなくわかってても省略したくなる だから一番重要な部分は伝わらないの法則
プロジェクトリーダの理解→プログラマのコード みたいだな 紙にするのが一番だ
819 :
デフォルトの名無しさん :2009/12/08(火) 18:24:21
画像を同じ色のピクセルごとにいくつつながってるか調べるのにぷよぷよの消去アルゴリズムのように再帰関数使ったらネストがどーたらこーたらっていう問題がでてきました。 ネストって調べたんですがいまいちピンときません。 ただの繰り返し作業だと思うのですが何がいけないのでしょうか?
abstractクラスとinterfaceをどう使い分ければいいかわからん。 自分でクラスをつくるとき抽象クラスかインターフェースかの違いって重要?
>>820 本に書いてあることだけで理解できないなら、
実際に動かして考えればいいじゃないか。
目の前のパソコンは何のためにあるんだ。
>>821 インターフェイスはクラスじゃないよ。
違いは分かるね?
>>821 (抽象)クラスは複数継承出来ない。そのかわり実装を継承することが出来る。
インターフェースは複数継承出来る。そのかわり実装を継承することは出来ない。
825 :
820 :2009/12/08(火) 21:29:10
>>822 いや、実際目の前のパソコン使いましてプログラム組んだのですがクラッシュするんですよね
まあ原因は"深度が深くスタックオーバーフローを起こしたから"っていってしまえばそれまでですが、言葉でまとめただけで理解しきってないような感じがして…
なので何か理解の助けになるようなわかりやすい話しをだれかしてくださらないかなというわけです。
>>825 じゃあ、文字通りの意味じゃないか。スタックを積みながら無限ループしたら、そりゃあスタックがあふれる。
末尾再帰でも調べてこい
class A{ int x=10; } と class A{ int x; public A(){ x=10; } } は同じですか?
>>827 C#は末尾再帰の最適化は(勝手には)行われないんじゃなかったっけ。
ILを弄らないと駄目だったような気がする。
だからそのググレ指示はいまいち意味がない。
>>820 再帰なんて高度な話をここの人たちにふっても答えられないよ
>>827 みたいな取り敢えず思い付いたこと返答するようなのまでいる始末
>>826 なるほどスタックが積み上げられるからっていうとなんかイメージわきやすいです。どうもです。
>>827 ぐぐってみましたがよくわかりませんでした/(^o^)\
>>829 おお!これはわかりやすいですね。ありがとうございます
検索スキルあげたほうがよさそう
言い換えただけで現実は何も変わっていない クリックを年寄り向けに”1回押す”と表記したようなもんだな
再帰が高度ってさすがにそれは・・・ オッサンの俺の世代だって学部一年生のプログラム実習で習った内容だぞ
最近よくわかんないくせに回答しようとするやつ増えたね
(…つーかこんな程度で図解がないと分からないとかもうね…)
結局のところ末尾再帰は何が言いたかったんだ?
再帰だネストだって言ってるけど単に無限ループしただけだろ
再帰のロジックを末尾再帰まで持っていけたら、 自分でループに変換するのはそんなに難しくはない。 32bit版ではサポートしてないが、 64bit版の.NETではJITレベルで末尾再帰の最適化をやってくれるらしい。
だろうけど、聞きたいのはそこじゃないし
ググるとたくさんでてくるな 「インターフェース 抽象クラス 使い分け」 みもふたもないけどググる先生の方が優秀だよな・・・
無理してエスパーしようとするから恥かくわけだな
どうでもいいが初心者に厳しいのはなぜだw。
普通の無限ループでスタックオーバーフローなんか起きないぞ 再帰の無限ループなら起きるが
初心者にはおおむね優しいだろ 常駐してる約数名のバカが、すぐ「ググれ」とか「そのぐらい調べろ」とか くだらないレスしてるだけ
良質な解答者が居ないときにあたるとかわいそうだよな
Windowsにある「ごみばこ」ってあるしょ。 削除したら送られて、もとにももどせるやつ。 C#でゴミ箱にあるすべてのファイルを元に戻すプログラムはどうやればいい?
普通のアンマネージC++で別のexeとして作ってそれを呼び出すだけにした方が 簡単ですっきりする気がする
あほくさ。 くだらないことばっか言ってるとまともな回答者まで離れていくぞ、うざくて。
ゴミ箱から戻す API があるわけじゃないからな。 ゴミ箱のアイテムを列挙して、InvokeVerb() なんてのもありだな。
>>860 もうだいぶいなくなったよ
せいせいしたわ
とは言いつつも 昔に比べて質問の頻度は上がってんだよなあこのスレ
>>860 ナルチシズムを満たすことが出来るから回答者がいなくなることは*絶対に*ありえない
>>865 「まともな」って前置きされてるのが見えないのかね。
経験上自己陶酔タイプにまともな奴がいるとは俺は思えんがね。
というか、もうとっくにだいぶいなくなってると思う。
>>866 いるから心配すんな。
お前がいなくてもここはまわるから。
こんなやり取り今までに何回あったと思ってるのやら。 昨日今日始まったスレじゃないのよ。 こんな調子で50スレ弱も続いてるのよ。 もうとっくにだいぶハイハイワロス
この手の話になるとスレが無駄に加速するんだよねw
>>819 これも試してみたんですけれど、今ひとつ使い勝手が悪いですよね。
エクスプローラをそのまま表示出来るのはいいんだけれど、たとえば*.jpgだけ
表示させたいとかフィルタを掛けたりするのがどうしたらいいのかよくわかりません。
検索フォルダ使えってことなんですかねえ…。
どんな時にいったい使うのかよく解らんコントロールです。
初心者用となってる割にそうでない質問も多いよな もっとあっちの相談室も使えよ
相談室だとマッチョな人が多くて怖いんだもん。
相談室の話はやめれ また初心者スレいらね、相談室に統一しろって暴れ出すから
Visual Studio2008でC#4.0の機能(dynamicとか)使う方法ある?教えて VS2010はVS2008Expressより重くて使いづらい。
正式版で軽くなることを願う
ない 今回はCLRもバージョンアップしてるから無理 dynamicも.NET4のライブラリに依存してるし
>>875 まあ、まだβだから。
軽くなってるところもあるのよ。
スタートページがらみとか、参照の追加窓とか。
まさかオンボードじゃないだろうな WPFだからどう頑張ってもグラボ積んでないと話にならない
>>830 末尾コール最適化はJITコンパイル時に行われる
いいえ
プロパティ=変数ではないが、変数みたいな何か インデクサ=配列ではないが、配列みたいな何か デリゲート=メソッドではないが、メソッドみたいな何か イベント=デリゲートではないが、デリゲートみたいな何か インターフェース=抽象クラスではないが、抽象クラスみたいな何か 参照型=ポインタ型ではないが、ポインタ型みたいな何か string型=配列ではないが、charの配列みたいな何か
余計分かりにくくなってないか?w
デリゲート=関数ポインタではないが、関数ポインタみたいな何か
885 :
デフォルトの名無しさん :2009/12/09(水) 02:20:43
XmlSerializerの使い方をいろいろと試しています
・MSDNには「Listの配列をシリアル化・逆シリアル化できない」と書いてありますが、
(
http://msdn.microsoft.com/ja-jp/library/system.xml.serialization.xmlserializer (VS.80).aspx )
List<自作クラス>で試してみたところシリアル化も逆シリアル化もうまくいってるみたいです。
MSDNにこう書いてある理由、無視して使った場合の制限・落とし穴などはありますか?
・例えばList<自作クラス>をシリアライズした時、
<ArrayOf自作クラス (XML宣言略)>
<自作クラス>…
<自作クラス> …
<自作クラス> …
と出力されます。
<ArryayOf自作クラス>部分の名前を変えるには
XmlSerializerのコンストラクタにXmlRootAttributeを指定すればいいことが分かりました。
<自作クラス>部分の名前を変えるにはどうすればいいでしょうか?
たぶん自作クラスの上に↓のように書けば行けると思う [XmlType("自作クラス")] クラス内の特定のフィールドやプロパティを独自の名前にしたい場合は [XmlElement("自作クラス")] こんなんだったかな うろ覚えだからちょっと試してみてよ
HAVAL、RIPEMD128等のハッシュ関数を網羅したライブラリありませんか?
.NET Framework にはないんじゃね そんなハッシュ関数危ないから今後は使われることもないだろうし オープンソースとかで求めてるのなら自分でググれ
>>885 そりゃList<T>はListであってListの配列じゃないだろ
int型の2次元配列があります。その中で数字が1のデータを取り出して、 その中からランダムに1つ選んで0にするという処理をしようと思います。 1. すべての要素をチェックして1のデータの数を数える(例:50個) 2. その中からランダムに1つ選ぶ(例:23番目) 3. 要素の先頭からチェックして1のデータの23番目を0に変える 1についてはLINGとかFindメソッド?なんかを使えば簡単にできそうです。 問題は3で、もう少しスマートにやる方法はありませんか?
var q = ( from y in Enumerable.Range(0, a.GetLength(1)) from x in Enumerable.Range(0, a.GetLength(0)) where a[y, x] == 1 select new { X = x, Y = y } ).ToArray(); var rx = q[randomIndex].X; var ry = q[randomIndex].Y; a[ry, rx] = 0;
1行コピり忘れ。 var randomIndex = rnd.Next(0, q.Length - 1);
どうせなら、rndの宣言もコピってやれよw
894 :
890 :2009/12/09(水) 12:41:55
LINQは便利なんだろうな・・・とは思っていましたが、そこまで「使える」ものだとは思っていませんでした。 それで試してみます。ありがとうございました。
LINQ使うつもりなら2次元配列なんか使うな 相性が悪い
LinQはなんか暗黒面すぎる
2次元に無理矢理LINQ使おうとするから
>>891 はわかりにくいんだよ
>>890 の例に限って言えば素直にforで回すべきだ
三項演算子の覚えたてとか なんでも一行で書きたい病みたいにならないようにな。
複数の文を無理やり一行にしちゃうとわかりづらいが 一行でかけるものは一行でかくほうがいいけどな if(なんとか){ なんとか } else(なんとか){ なんとか } ?演算子で一行でかけるものをこんな風にかくやつはアホ
「なんとか」による 何でもかんでも?:に入れようとするのもアホ
>>899 うわぁ
それ典型的な三項演算子覚えたて病
三項演算子が気持ちいい人はたぶんPerl覚えた方が幸せになれると思う
えー? むしろ、 if (...) a = ...; else a = ...; が、典型的な三項演算子使えない病だろ。
>>903 だから「a = ...;」によるつってんだろ
そりゃまぁifの中にifがあったりelseifがいっぱいあるような複雑な条件分岐をするなら?使うより良いこともあるが まさかそんな当たり前な例で「場合による」とか言ってるの?
初心者スレなんだから こんな状況になったらこれを使え みたいに形式的にやらせりゃいいんだよ。 覚えたてでなんでもかんでもそれを使う?いいじゃないか別に。 上級者様のテクニックを初心者に薦めるなよ。
それくらいしか想像できない君にはそれでいいよ
C#で使える時間ってmillisecondが最小単位? DateTime構造体をみるとミリ秒が最小単位らしいがもっと細かい時間のクラスとかある?
evet に += でデリゲートを登録できますが 登録を解除するには一個一個 -= していくしかないのでしょうか? すべての登録をクリアする方法とかありますか?
新しく何も入ってないのを作ってそれを代入すりゃいいんじゃね
>>905 if (a)
{
b = 1;
}
else
{
b = 2;
}
こんな感じでaの部分や{}の中身が単純なら三項演算子でもいいけど、
それが長くなるとか複雑ならif文の方が見やすいんじゃない?ってことだとおもうけど。
>>911 event を定義してるクラス内で
イベントメンバ?に null を代入できました
ありがとうございました
どうでもいいことで相手を病気とかののしったりする割りに
>>909-910 みたいな初心者の質問にはまともに答える人がいないスレ。
>>909 DateTimeやTimeSpanの最小単位は100ns。Ticksプロパティで取得できる。
MicroSeconds とかとして取得するのは計算が必要だな。
>>909 精度の話なら、最も正確なのはStopwatchクラス
>>916 StopWatchより上の精度ならAPI使って工夫して自分でやるしかなかったと思う
一応マイクロ秒程度までは取れないことはなかったはず
僕は胸の大きな女性よりも、きれいな形をしてればふつうの大きさのおっぱいのほうが好きです
おっぱいがでかくてきれいな形をしていた場合はどうなるんだ?
その場合は考えていませんでした。 プログラミングをするものとして失格でした。
それはそれでもっと好き
おっぱいにしろプログラミングにしろ想定内に収めなきゃ。
その文おかしいですね おっぱいは想定内に収めるって意味わかんないですよ
わざと、変な文にしたんだが・・・・
ここまで俺の自演
そうだったのですね。僕はとてもこだわる人なので。 ちなみにクリスマスの彼女のおっぱいはDカップです 去年はFカップのカップラーメンでした その前の年は一人オナニー大会でした
貧乳の良さがわからんとは
Stopwatchが一番解像度は高いんじゃない? ただ、こいつは取得がちょっと重いので注意。 ってもせいぜい数マイクロ秒以下だったとは思うが。
賢人のみなさんに質問です。 NPlotで散布図を作成しました。 これから折れ線グラフの様にポイントを順に繋げたいのですがどうすればいいでしょうか? 以下は散布図作成ソースです。 NPlot.PointPlot PointPlot1 = new NPlot.PointPlot(); int[] intData = {98, 99, 120, 110, 100, 99, 122, 97, 96, 100}; DateTime[] dateAbs = {Convert.ToDateTime("2007/5/1"), Convert.ToDateTime("2007/5/2"), Convert.ToDateTime("2007/5/3"), Convert.ToDateTime("2007/5/4"), Convert.ToDateTime("2007/5/5"), Convert.ToDateTime("2007/5/6"), Convert.ToDateTime("2007/5/7"), Convert.ToDateTime("2007/5/8"), Convert.ToDateTime("2007/5/9"), Convert.ToDateTime("2006/5/10")}; PointPlot1 .Label = "Line1"; PointPlot1 .DataSource = intData; PointPlot1 .AbscissaData = dateAbs; //-- (6) //PointPlot1 .Pen.Color = Color.Green; this.plotSurface2D1.Add(PointPlot1 );
画像をアスペクト比で分類するというプログラムを作りたいんですが、 解像度の取得方法がいまいちわからないので教えてください
doubleって小数をいっぱいたすと(+0.05を10万回やるとか)誤差がでるが 整数のしか計算しない場合でも何万回もやると誤差でることってある?
>>930 Image.FromFileで読み込んでWidthとHeightを取得
>>930 >>932 せめてImageInformation.FromFile()を使うようにアドバイスしてあげようよ。
ああ、確かにすまん。
>>931 精度を気にしているのにdecimalを使わない理由は何なんだ?
ImageInformationとかいうのは標準ライブラリにないし
>>931 いっぱい足すまでもなく0.05自体に誤差があるが
15桁ぐらいまでの小さめの整数値なら誤差なく表現できる
>>936 ああ……すまなかった。
てっきり標準ライブラリだと思ってたら、SlimDXの機能だった。
じゃあ、これならどうだ。
Microsoft.DirectX.Direct3D.ImageInformation TextureLoader.ImageInformationFromFile(String)
Managed DirectXなら、DirectX Redistでインストールされる。
Vista以降なら標準で入ってるんじゃないかな。
標準で、ってことになると、やっぱり一旦Imageにするしかないんだろうか?
>>917 Stopwatch以上のものはない
内部でQueryPerformanceCounter使ってるからAPI使っても無駄
>>329 サンプルくらいあるだろ?
いくらC#だからといってサードパーティのライブラリの使い方はスレ違いだ
タイマーの精度は言語じゃなくてOSの仕様。「C#で使える」物は他の言語でも使える。 で、XPよりはVistaの方が精度の高いAPIが用意されてるそうだ。
941 :
930 :2009/12/09(水) 17:15:25
>>932 ,933,936,937
返答ありがとうございました
やってみてダメだったらまた相談させてください
>>909 誰も言わないのであえて言うけど、
タイマーの物理的な精度が仮にnsとかμsのオーダーであっても、本当はあまり意味がないんだよね。
どうせOS上のプロセスなんて普通はmsオーダーでタイムスライスされてるんだから。
せいぜい100ms程度しか意識できない人間にms単位で計れるストップウォッチ
持たせても意味がないのと同じ意味で。
リアルタイムOS上で動くCLRとかあるんだろか?
>>943 WindowsCE無視しないで下さい
無視しないで下さい
無視
>>886 ありがとうございました
望み通りの出力をさせることができました
>>889 List<T>[] ってことなんですね
>>942 人間の短距離走でms計っても意味ないよね。
まあ計りたいこととタイムスライスは関係ないこともあるわな。
意味ないことはもちろんあるけど。
ちなみに100ms程度までしか認識できないというのは 何か科学的根拠ありますか?
パチンカスなんて、驚く精度で反応するしな
科学的根拠…?
科学的根拠wwwwww
科 学 的 根 拠 ! ?
俺も童貞という言葉に光の速さで反応します
w科学的根拠w w科学的根拠w w科学的根拠w w科学的根拠w w科学的根拠w w科学的根拠w w科学的根拠w w科学的根拠w w科学的根拠w w 科 学 的 根 拠 w
反応しすぎだろJK
ん?悔しかったの?
しかし、ディスプレイのリフレッシュレートをベースにしたら、 60FPSの場合で16.6ms。 最近出始めてる120Hzの液晶ディスプレイなら8.33msだ。 それなのに、System.Threading.Thread.Sleep()だと1ms単位でしか待てないんだよな。 微妙に処理が速く終わって次のvsyncを待たないといけないとき、 時々乱れることがあるのが今悩んでることのひとつ。
仮想リストビューの残像は酷い
>>957 空き時間を空ループさせなきゃならなくてCPU使用率が半端なくなる
これは俺のせいかな?
>>957 大昔のMZ-80(CRTの走査線が最終ラインからホームに戻る時間内にVRAMにアクセスする必要があった)
でもないだろうに、そもそも画面のリフレッシュに同期して処理する必然性が
本当はないんじゃないかと思うんだけど。
っていうか、ダイナミック点灯してるわけでもない液晶を120Hzで更新ってのも
なんだか必然性が怪しいな。
液晶の業界も飽和状態で意味のないスペック競争に突入してるのかな。
C#も言われてるほど遅くないな わりと複雑な微分方程式とか一瞬で解いちゃったよ
帰線区間にしか出来ない操作があるわけじゃない、っていうか、 そもそも帰線区間自体がないしな。
しかし120hzだなんて中途半端なFPS選ぶとは… 100hzでいいよね
>>960 懐かしいなおいw
画面に _ みたいなノイズが乗るんだよね
C#は遅く無いとかいって 遅いと思ってた時期があったのかと思うと笑いが止まらん
初回起動は遅い
多変量解析等の統計関数を扱ったフリーのライブラリってありませんか? それかRをC#から使う方法がわかれば教えてもらえないでしょうか?
>>968 100HzなんてCRTでしか聞いたことないんだが。
>>961 数値計算系はネイティブと比べて9割以上のスピード余裕で出るよ。
遅くなるかもしれないのはやたらとガベコレ働くようなコード書いたとき。
あと、初回起動時。
>>970 どうでもいいけど、「なぜ」(120Hzという数字が選択されている理由は何か)を問うているんであって、
「何があるか」(現実の製品のリフレッシュレートのラインアップはどんなか)
の話をしているんじゃないでしょ?
一次方程式を自動で解くプログラムを作るには どうプログラムすればいいですか?原理だけ教えて貰えませんか
>>972 そりゃ簡単な話、60Hzの2倍だから。
>>973 1元なら単なる四則演算。
2元以上なら線形代数の問題じゃないの?
単純な陽関数を積分するプログラムを考えてみた。 f(x)=x^2とかf(x)=x^3+3x^2+4x-2 みたいなの。 積分クラス 二つの実数とひとつの関数を引数にしてリターンで積分を戻すメソッド たとえばx=-1からx=3まで積分するんだったら sekibun(-1, 3, x^2+3x^2+4x-2) みたいな感じでできないかなぁ だれかやり方しらん?
VC#2008を使い始めたのですが、 コードエディタのしおりのCtrl+B + Ctrl+Tなどが使いにくいので キーをカスタマイズすることはできないのでしょうか? よろしくお願い致します。
あと、編集中の行の背景色を変える 編集した行の行番号の色を変える ということはできないでしょうか? よろしくお願い致します。
ツールメニューのオプションに[フォントおよび色]というのが出てくるからそこで変えられる。
981 :
デフォルトの名無しさん :2009/12/10(木) 08:19:21
C#で業務システムを製作しています。 メインのフォーム内に、必要に応じて開閉するパネルを置き、その中でデータグリッドビューを配置していますが、マウスのホイールが効きません。 私のパソコンはWindowsXPです。 ただし別のWindowsVistaのパソコンではホイールが効きます。 .net3.5を使用しています。 なぜでしょうか。 よろしくお願いします。
>>957 Sleepの時間指定なんて大枠でしか意味ないよ。
1ms待つんじゃなくて、最低1msスケジューリングを止めるだけだから。
他にスケジュールされてるスレッドがなけりゃほぼすぐに再開できるが。
止める時間もtimeBeginPeriod 呼ばなきゃデフォは15ms単位くらいだし。
なんでmathクラスとかには複素数のクラスや構造体がないんだよ どうでもいいクラス作るくらいなら複素数つくってくれよな
C#にはC言語の#defineみたいなこと機能どうやんの? いちいちmath.PIとかかくのめんどうだからdefine PI math.PIみたいにしたいんだが。
public static readonly double PI = Math.PI; マクロは絶滅しろって設計者が切れてたから無い
使いたいクラスでスタティックもしくはインスタンスフィールドとして実装しなおす以外に無いです 不便だと思うのならCを使い続けるかVB.NETの利用を検討してください
using System.Math.*; とか出来たらいいのにね。
いちいちMathとか付けないといけないの ださいよね
俺はクラス名もthisも省略しないので別にどうとも思わない
まあ設計者の趣味の問題だからどうにもならない。 そういうもんだと思っておけばいいさ。 もしくは、C#用のプリプロセッサでも作ったらいいかもね。 あれも一応汎用性あるプログラムだし。
>>990 もともと #define とかは存在するわけだが
##defineとかやるのか?
VS使えなくなるじゃん 冗談じゃない
>>992 だからそういうの作る人がいないわけだと思う。
インテリセンスのこと考えると記述量がちょっと増えるぐらいヘでもないんだよな。
次ぎ立てて来るからシャラップ
ume
うめなので雑談・・ Mathなどが省略できるようにとJavaではstatic importが使えるようになったが、 使ってるところ見たことないよ(笑
>>983 .NET4でComplexクラスが追加される
>>997 他人に見せるソースでそんな事したら見にくくて仕方ないだろ・・・
>>979 編集した行は黄色いマークが付かない?
編集中の行を強調表示するのは無いから
SlickEdit Gadgetsを使ってみるとか・・・?
Expless版では使えないけど。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。