ふらっとC#,C♯,C#(初心者用) Part79
1 :
デフォルトの名無しさん :
2011/09/21(水) 21:34:56.61
乙 codepadはC#に対応してないぞ
そう思ってideoneしか貼らなかったのにな おせっかいちゃん
IEの全クッキーを削除したいのですが どういうコードを書けば良いでしょうか? 出来れば、Windows API 的な物は使わずに .Net Framework 内の機能だけで実装したいと思います。
XPならシステム情報からクッキーを置いてあるフォルダを調べて ファイル削除でいいだろうけど、UAC関連でシステムフォルダに 対するアクセスが厳しくなってるアプリはどうだろう・・・
API使わないといけないので諦めます
なんでやねん 簡単にAPI呼び出せるやろ
9 :
前スレ979 :2011/09/22(木) 23:56:02.01
>>前スレ997 すいません、MouseDownの中身だけでいいので書いてもらえませんか? ちょっとTabプロパティについてはわからないです。
>>8 この際、全ユーザのクッキーを削除してもOKです。
嫌、寧ろクッキーをまるごと消し去るプログラムを作りたいです。
エロい目的ならスキルアップに最適
>>9 TabControl1_DrawItem()の
string text = tab.TabPages[e.Index].Text;
の前に
if(e.Index >= tab.TabPages.Count) return;
を入れればArgumentOutOfRangeExceptionは出なくなる
これで全部解決できるかは分からない
>>12 ありがとうございます。それで解決しました
BinaryReader.ReadInt32のstatic版みたいなものはありませんか? 一箇所だけ必要なのですが、その為だけにBinaryReaderをnewするのは無駄な気がするし Stream.Readで読んでBitConverterで変換するのもごちゃごちゃして嫌だなぁ、と思いまして。
いちいちそんなこと気にしてたら何も作れないでしょう ループ内で秒間数千数万回呼ばれるようなもんでなければ BinaryReaderのnewくらい全くどうでもいい
16 :
たつろう :2011/09/23(金) 15:10:29.75
WindowsFormアプリケーションを作成しています。 そこで行き詰ってしまいました。 (1) DataGridViewのセルにImageListの画像を表示させることはできるでしょうか。 該当セルのcolumnsのデータ型はイメージ型にしています。 (2) DataGridViewのセルにアニメーションGIFを表示させることは可能でしょうか。 すみませんが、よろしくおねがいいたします。
起動するだけで数千だか数万のインスタンス作ってるのに今更よね
18 :
デフォルトの名無しさん :2011/09/23(金) 19:52:40.40
>>13 コントロールの切り離しは最終的にユーザーの
操作が終わってからの方がいいんじゃね?
Firefoxなんかでもタブ移動できるけどユーザーの操作が
決定するまでタブは移動しないままだしな
掴んだらいきなり切り離すっていう危なっかしいのはいかがかと
.Net Framework 上で動いている C# と VB.net ですが いずれかの言語でしか実装(利用)出来ない機能とかってあるのでしょうか?
20 :
デフォルトの名無しさん :2011/09/23(金) 21:16:03.55
ポインタ操作はC#のみ。 あとyieldもC#のみ。LINQ to XMLみたいなのをyieldのないVBで作ろうとすると死ねる。 ちょっと前まではExcel操作なんかはVBの独壇場だったけどC#4.0で差がなくなった。
VBの言語レベルでのメリットならXMLリテラルとかクエリ構文のキーワードの多さとかか まあある機能が言語限定って言うのはあるが それはコードを書きやすくなるかどうかというレベルの話であって 最終的に実現可能な物に有意な差はない
Myやフォームのデフォルトインスタンスを忘れてるぞ On Error Resume Nextもあるし静的クラスのメンバをグローバル変数やグローバル関数のように使えるし
3.5のラムダ式界隈だと ・VBではActionが作れない ・VBには3項演算子が無いので遅延評価の分岐が組めない って酷い差があって、自分でクロージャ型を定義したりしないといけない
If演算子はVB9で追加されたはずだが SubとかステートメントとかはVB10からだけどさ
トータルすると C# が VB.net をリードしてる? という判定でよいですか?
何度も同じネタを繰り返して喜んでる奴はルーピー、でいいよ。
元々はコンセプトが違っていてそれぞれのユーザー層のニーズに合わせていくはずだったけど 今はVBの開発チーム無くなって「C#と同じにする」方針になった
28 :
デフォルトの名無しさん :2011/09/23(金) 23:20:24.81
好みでいいだろ それにVB.net関連の機能もC#で使えるし
>>18 どうやってそれを実装するか、思いつかないんですよね。TabControlのD&Dも探して拾ってきたやつです
x軸とかy軸を取得してなんかがわからないんです。参考になるHPとかないでしょうか?
byte a = 1; byte b = 2; byte c = a + b; a + bの所でintからbyteに暗黙的に変換できないと出るのですが intより小さい型は全てintに格上げされて演算されるという理解でいいですか?
>>32 cだとintが一番早く実行出来る基本型だって本で読んだから、c#もそうなんじゃ無いか?
36 :
デフォルトの名無しさん :2011/09/24(土) 01:22:31.38
>>32 格上げされるというよりbyte同士で四則演算できるようなってないってことじゃないの?
38 :
デフォルトの名無しさん :2011/09/24(土) 01:26:55.70
39 :
デフォルトの名無しさん :2011/09/24(土) 01:27:47.38
格上げの話は明示しないでも勝手にやってくれる場合に言う
40 :
デフォルトの名無しさん :2011/09/24(土) 01:28:26.39
バイトが格上げされて正社員になったと聞いて
何でもいいけど、俺様用語や俺様言い回しで発言しておいて「〜だろ」とか、 俺の言った意味で理解するのが当然みたいな言い方は馬鹿っぽいしみっともない。
個人的にはintに揃えるより2つのオペランドの大きい方の型にそろえる仕様の方が 直感的かなと思うけど、それだとshortとushortの演算のような場合には迷いが生じるのは確かだな
どうせ演算は32ビットか64ビットで行われるんだから、 結果がshortやbyteになる仕様ならその都度縮小しないといけないでしょわざわざオーバーフローの可能性を増やさなくても
ストリームやSQLのクラスで、CloseとDisposeの両方があるクラスが多いと思いますが、 そのようなクラスの場合、使わなくなったら両方呼ぶべきですか?それとも片方だけでいいのでしょうか。
C#歴半年くらいなんですが、クラスの作り方とか、 コンストラクタとかインスタンスとか継承とか・・・ いわゆるオブジェクト指向な設計方法を実例を挙げて解説してる参考書でお勧めありませんか? 雑誌のバックナンバーでもいいです。 JAVAだとそういう記事をよく見かけますがC#で無いですかね? JAVAの記事でも概念的には参考にはなるんだろうけど・・・ やっぱC#のほうが具体的なTipsも学べるからC#がいいな。
@ITとかにあると予想 C#はデリゲートがあるせいかJavaほど語ることが無いんだよな・・・
Javaで必要なデザインパターンがC#だと言語レベルで実装されてて必要無かったりするからね
>>48-51 みなさん、ありがとうございます。
参考にさせて頂きます!
LinqのInsertOnSubmitってテーブルを自動的に作成してくれないのでしょうか?
ttp://d.hatena.ne.jp/griefworker/20090918/linq_create_delete_database を参考にSystem.Data.SQLiteでやってみると例外が発生します(SQLite error no such table
DataContextのメソッドにテーブルを作成するようなものがないので自動的に作られるのだと思ったのですが。
CreateDatabaseはデータベース自体を作るメソッドのようですし
(CreateDatabaseも例外起こしますがコメントアウトしてもデータベースは作られるので一応何とかなっています
ちなみにSQLiteのコマンドでテーブルを先に作ると例外は起きません。
55 :
デフォルトの名無しさん :2011/09/24(土) 19:42:06.86
>>54 >// テーブルも一緒に作成される
>context.CreateDatabase();
って書いてあるじゃん
一般論として通常の更新メソッドで勝手にテーブル作られたら困るでしょ
久しぶりにLINQ to SQLやってる人見た もう絶滅したと思ってた
何度でも蘇るさ
>>56 あorz
ということはCreateDatabaseで例外起こすからコメントアウトした所為ですね
"SQLite error
near "DATABASE": syntax error"という例外でイミフです…
>>57 最近データベースを使おうと思ってたどり着いたのがこれなのですけど
最近の主流はどんなやり方なのでしょうか?
>>59 Entity Framework
つーかLINQ to SQLはSQL Server用
デリゲートって何?
型安全な関数ポインター。
63 :
デフォルトの名無しさん :2011/09/25(日) 00:06:52.02
おなかがゆるいときにするデート
ゲリデート…
デリゲートゾーン
クロコダイルを知っているか? 同じようなものだ。
シーユーレイター、アリゲーター
インナ・ホワイル、クロコダイル
windowsプログラム作るのを勉強するのにいい本か何かありますか。
ここはC#のスレだよ
>>69 質問がザックリしすぎ。
上手な質問が出来る程度にまでは勉強しようぜ。
とりあえず雑誌買えば?アスキーとか日経ソフトウエアとか。
それの「今日から始める○○」みたいな記事読みなよ。
多分分からないことばかりだろうけど、何が分からないのかが見えてくる。
俺も最初は、CもC++もC#も区別が付かなかった。
ペゾルド本薦めようかと思ったけどおまえら親切ですね
自分でD&Dでタブ移動できるTabControlを作っているんですが、マウスのx座標とy座標から その座標にTabPageが存在しているかどうか判別するメソッドか何かないんでしょうか?
IntPtr.Zero と (IntPtr)0 は同じことですか?
キャストすると方変換が生じるので意味は等価だが内容は等価ではない
何のこっちゃ
真っ直ぐ向かうか迂回するかくらいの違い
79 :
デフォルトの名無しさん :2011/09/25(日) 23:00:50.47
定数を実行時にキャストするだと!
.method private hidebysig static void Main(string[] args) cil managed { .entrypoint // コード サイズ 8 (0x8) .maxstack 8 IL_0000: ldc.i4.0 IL_0001: call native int [mscorlib]System.IntPtr::op_Explicit(int32) IL_0006: pop IL_0007: ret } // end of method Program::Main ちなみにこんな感じになります
そりゃプリミティブ型でないのに定数もクソもないわな JIT後の扱いは知らんが
でもこれ見るとnative intをそのままIntPtrと読み替えてるんだな それなら実質Int32のようなプリミティブ型と扱い変わらないのにop_Explicitは必要なのね
何言ってるのかわからん。 MSIL知らんけど、普通にSystem.IntPtr::op_Explicit(int32)というサブルーチンを コールしてるだけに見えるけど....
戻り値がnative intになってるだろ コンパイラが特別に同一視してるんだよ プリミティブ型と同格の扱いだ
IntPtrをInt32に変換するルーチンなんだから当たり前でしょ。 本気で何言ってるのかわかんない
C#仕様にないIntPtrをMSILの都合で追加したけど、必要以上の特別扱いはしないって事なんでしょ
ていうか言語仕様だけ見るとIntPtrはvolatileでだけ出てくる正体不明の型だな
>>85 普通の値型はvaluetypeってなるから
>>85 native int=IntPtrと解釈されてるってこと。
native intは実行環境でのポインタと同じサイズをもつ整数で、CILの組み込み型。
Int32のようなプリミティブ型はコンパイラが特別にCILの組み込み型として扱う。
>>86-87 ごめん、何か変なこと書いてるな俺。
疲れてるな....
std::dequeのような先頭と末尾への挿入がO(1)になるようなコレクションってありませんでしたっけ?
LinkedList
どなたかご回答お願いします。 現在自作のソフトウェアで 1.「処理開始時にスリープを抑止」 2.「処理完了時にスリープ抑止を解除」 をしようとしています。 Vista・7ではSetThreadExecutionStateを使った方法で 1と2どちらも期待どおりに動作します。 しかし、XPでは1の「抑止」はできるものの、2の「抑止の解除」ができず、 OSを再起動するまでスタンバイにならなくなってしまいます。 基本的に下記のサイトの処理をコピペしています。 こちら解決策をご存じの方いらっしゃったらご教示ください。
大事なところが抜け落ちてしまいました。
基本的に下記のサイトの処理をコピペしていて、
http://d.hatena.ne.jp/aont/20100121/1264089608 ・1の時には
SetThreadExecutionState(ExecutionState.SystemRequired | ExecutionState.Continuous);
・2の時には
SetThreadExecutionState( ExecutionState.Continuous);
としています。
>>90 すいません。
インデックスで各要素にO(1)でアクセスできる、という条件が抜けてました。
それは無いと思う
動的配列を配列の真ん中から始めて両端に伸ばすやつでしょ それくらい自作すれば
一昨日あたりからMSDNに繋がらない。なんで?
毎時00分(3時00分とか、4時00分とか)に、ある処理を行いたいのですが、 Timerは間隔でしか指定できないので、どうやったらいいのでしょうか UNIXのcronやタイムスケジューラようなものと考えてもらえば 分かりやすいかと思います
タイマイベントが発生したときに何時何分かはわかるだろw
そうです、そういう方法は考えました しかし、たとえば1秒ごとにイベントを発生させて、時間を調べても もし00分でなかったら、その処理は無駄なCPUを使ってることになります だから毎時00分に呼び出してくれるような方法はないかと考えてるんです
OSのタスクスケジューラに登録するってのは?
101 :
デフォルトの名無しさん :2011/09/26(月) 15:24:21.69
>>99 試しにプログラム作って負荷みてみなよw
どんなマシンで運用するか知らんけど誤差のレベルだよ
無駄なCPU・・・って コンピュータの動作原理を勉強しろよ
cronなんてcron deamonが代わりにタイマ刻んでるだけや
ヾ〃ゞ/ヾゝゞ'~ヾゝゞ ゞヾ〃ゞ- '、~ ┌┐ _,ノノ_ヾゞ, -、ヾゝゞ| ̄・│ 丿 ,.'_-ーヾゝゞヾゝゞ、...  ̄| .│ iiii/ νゞυ `-ヾ. ││ ./ ││ キリンで比較すると i| ││ 韓国の方がメシウマだということがわかる i| ││ ii i| ││ 0)|. ┌┐ ││ i| | ̄・│ ││ ii i|  ̄| .│ │└──┐ ii|. ││ ├┬─┐│ ;ii| │└─┐ ││ ││ iii0)|. ├┬┐│ ││ ││ iiii|. ││││ ││ ││ ,,_,ヽ, ││││ ││ ││ "i´"=R───────────── 1$=76円 1$=1192ウォン
タイマー処理はしたいけど、待ってる間に1クロックの動作もさせたくないとか そういう事?
106 :
デフォルトの名無しさん :2011/09/26(月) 18:04:45.09
どうでもいいが、一日一回をチェックするのに一秒のタイマーはあり得ないだろ
1時間間隔のタイマーではダメなの?
108 :
デフォルトの名無しさん :2011/09/26(月) 19:49:18.53
そもそも1日一回のタイマーが、問題が起こるほどずれるとも思えん 今の時間と起動時間の差をIntervalにセットしたらOKな気もする(実験必要だが) スリープなどが気になるならタスクスケジューラしかないが
109 :
デフォルトの名無しさん :2011/09/26(月) 19:55:11.06
まあ起動時に時間取得してそこからタイマーにセットする時間を計算すれば いいだけなんだけどな〜
.NET Remotingというのは非同期で通信できないの?
ラムダとかLINQとか勉強しようと前々から思ってるんですけど 実際どういう時に使うのかがわからず躊躇してます LINQはXMLだとかSQLだとかデータ処理だと思うんですけど相変わらずSQL文ベタ書きなんですが 特にラムダは"これこれこういう処理する時はこれだよな!"みたいなのはあるんでしょうか
>>110 どういうのを想像してるのか分からんけどできるよ
このコードでちゃんと
Hoge.method()
が表示され続けるんですが、
デリゲートでメソッドを登録していれば、
ガベージコレクションの対象にはならない、というのは正しいですか?
ttp://ideone.com/KMUnH
はい actがhogeへの参照を持っています イベントでメモリリークの原因になったりするので注意
>>116 ありがとうございます。
なるほど、これはちょっと気をつけないと・・・
>>111 まず、LINQ 全般でいうと、データベース問い合わせ以外でも、
「チェックボックスでチェック入れた項目だけ抜き出したい」とかいうときに
items.Where(x => x.IsChecked); とかやると便利。
データベースに関しては、型安全で静的チェック効くことが大事。
文字列で SQL べた書きだと実行してみるまでその SQL が正しいかわからないけど、
LINQ 使うとそれがビルド時チェックになる。
まあ、ビルド時チェックの価値がよくわからないってなら SQL べた書きでいいと思う。
LINQの中でもOrderBy、ThenByを使ったソートは代替がないから覚えといたほうがいい
ttp://msdn.microsoft.com/ja-jp/library/bew39x2a%28v=vs.80%29.aspx ここの
// Get the rest of the data.
client.BeginReceive(state.buffer,0,StateObject.BufferSize,0,
new AsyncCallback(ReceiveCallback), state);
これがわからないんですが、
StateObject内のBufferSizeを溢れた分はこのstateを引き継いで、
state.sb.Append(Encoding.ASCII.GetString(state.buffer,0,bytesRead));
これで継ぎ足されていくという認識で良いんですか?
>>121 どういう認識なのかよく分からんが
bufferはBeginReceive毎の使い捨て、sbは受信結果全部ということ、
で回答になってるのかよく分からん
DateTime.Nowプロパティで取得できる時間って、50mSまででしたっけ? 1mSまで取得するにはどうしたらいいのでしょうか? MSDNがCGIエラーで表示されないので調べられないで困ってます。
Stopwatchクラス使えばDateTime.Nowよりはだいぶマシ APIのQueryPerformanceCounterと同じ
>>124 ありがとうございます。勉強してきます。
>>125 最終的には複数ポイントの累積経過時間(ラップタイム?)を取りたいのですが、
Stopwatchクラスって、1回1回止めないと取得できないようですが、
リスタート→加算を繰返すと誤差は生じないのでしょうか?
コルーチンってどういうものなんでしょうか?
>>126 もろにStopwatchの仕事じゃないか
Stop/Startで中断再開できるぞ
>>127 通常の関数は一度実行したら最後まで実行するまで制御を戻さないが、
コルーチンは途中で止めて別の機会に中断点から再開したりできる。
>>129 ありがとうございます。
よくわかりました。
>>126 double timeSec = (double)Stopwatch.GetTimestamp() / Stopwatch.Frequency;
132 :
131 :2011/09/27(火) 12:55:47.05
doubleにしてから差を取るのはは精度的に良くないかも long time1 = Stopwatch.GetTimestamp(); // 処理1 long time2 = Stopwatch.GetTimeStamp(); double elapsed = (double)(time2 - time1) / Stopwatch.Frequency; こうかな
>>124 クッキー、一時ファイル、IEのプロパティから選択できるものは全部削除してみたけど
MSDN表示できません・・・orzなんでだ・・・
>>128 RESETなんていうメソッドもあるんですね。
ということはRESETするまでは最初のスタートから時計は継続して動き続けてると言うことなんですかね。
>>131-132 GetTimeStampなんてのもあるんですね。これはストップしなくても取得できると言うことですか。
ありがとうございました。
まずMSDN復活に取り組みます・・・(~~;;;
134 :
デフォルトの名無しさん :2011/09/27(火) 16:51:29.64
C#2010にてWindowsFormアプリケーションを作成しています。 ここで、Labelのフォントを「小塚ゴシック」にしたいのですが、Fontプロパティに「小塚」シリーズのフォントが出てきません。 AdobeのIllustlatorをインストールしており、PCには「小塚」シリーズのフォントが入っているはずです。 (EXCELなどのOfficeアプリケーションでは「小塚」シリーズのフォントを使用できます。) (1) なぜ、VS2010上で、「小塚」シリーズが出てこないのでしょうか。 フォントを追加する方法はあるのでしょうか。 (2) この「小塚」シリーズのフォントをアプリケーションに埋め込む形で取り込み、 「小塚」シリーズのフォントが入っていないPCでも正常に表示させることができたらと思っています。 どうすれば良いのでしょうか。ご教示ください。
OpenTypeフォントはGDI+じゃ使えないはずだが 小塚とやらがどうかは知らんけど > この「小塚」シリーズのフォントをアプリケーションに埋め込む形で取り込み、 > 「小塚」シリーズのフォントが入っていないPCでも正常に表示させることができたら ライセンス違反にならね?
>>118 遅レスですが111です
>LINQ 使うとそれがビルド時チェックになる。
非常に有用だと感じます
ありがとうございました
ならんでしょ 型付けるだけならTypedDataSetでも出来るし、LINQでも実行するまでスキーマが正しいかどうかは分からない
Dictionaryみたいなかんじで?key=value&key2=value2の形式で取り出せるクラスがあったように思うんだけど だれか知りませんか
いっぱいあるからもっと具体的に
えっ 具体的にはOAuthで使いたいです oauth_consumer_key=1234&oauth_nonce=13345&oauth_signature=1234&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1234 みたいな文字列を得たいのですが、 hoge.Add("oauth_consumer_key", "1234"); hoge.Add("oauth_nonce", "12345"); ... string result = hoge.ToString(); といった使い方ができるクラスがあったようにおもうのです
それ以前にOAuthのライブラリを使えば解決じゃないの?
OAuth部分はほとんどサンプルソースからの流用でして .netにクラスが用意されてるのならそっちに書き換えようと思った OAuthのライブラリ使えば解決というのは その通りです
opencvSharp、WPFについてもこのスレでいいdすか?
SortedList<T>の挙動がわからないんですが、 SortedList<key, value>で、UnionWithメソッドを呼び出す時、 ユニオン後にコピーされるのってkey及びvalueが共に異なる要素だけですか? keyあるいはvalueの一方だけ同じ要素があった場合、どうなるかわかりません
145 :
デフォルトの名無しさん :2011/09/27(火) 23:51:49.22
禁止ではないがWPFについては専用スレで聞くのが無難
>>137 何のための LINQ to Entities だと…
>>144 Unionの間違い?
SortedList<,>はIEnumerable<KeyValuePair<,>>を実装しているので
識別比較の挙動はKeyValuePair<,>の仕様に依存する。
KeyValuePair<,>はEqualsをオーバーライドしていないので、ValueTypeのEqualsの実装が使われる。
ValueType.Equalsはリフレクションを使ってすべてのフィールドの値を比較する。
基本的には、IDictionary<,>をはじめとするIEnumerable<KeyValuePair<,>>には
識別比較を行うようなクエリ演算子は使ってはいけない、でいいと思う。
148 :
147 :2011/09/28(水) 00:03:59.67
すまん識別比較じゃないな、等値比較の間違い
急に作成してるアプリのMainFormまでの起動が遅くなったんだけどなんでだろう 特別そんな重くなるような処理を加えたわけではないのに
151 :
デフォルトの名無しさん :2011/09/28(水) 00:33:26.90
>>146 .edmxのメタデータが正しいかどうかは保証されてないだろ
152 :
デフォルトの名無しさん :2011/09/28(水) 13:49:33.82
ASP.NETで以下のようなサイトをつくりたいと思ってます ヘッダー ------------ メ| ニ| コンテンツ ュ| ー| メニューはWebユーザーコントロールを使って作ろうと思ってます。 ヘッダー、メニューとコンテンツの指定はマスタページで行って、コンテンツを子ページで作る予定です。 レイアウトの指定はどうやったらできますか? divを使って、メニューの位置とコンテントプレイスホルダーの位置を指定すればいいでしょうか
C#と何の関係があるんだ?
155 :
デフォルトの名無しさん :2011/09/28(水) 17:00:02.81
>>152 その辺はC#関係ないな
htmlとかweb系の話
156 :
デフォルトの名無しさん :2011/09/28(水) 17:23:38.29
webプログラミング板のASP.NETスレかなあ。ただASP叩きしかしてないけど。
メニューとコンテンツを同じdivに置いてfloat left
ああそういうことか ほれ /* --- コンテンツ ----------------------------------------------------------------------- */ #content { width: 650px; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; float: left; background-color: #ffffff; } /* --- メイン ----------------------------------------------------------------------- */ #main { width: 500px; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; float: left; background-color: #ffffff; } /* --- サイドナビ ----------------------------------------------------------------------- */ #sidenav { width: 150px; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; float: left; background-color: #ffffff; }
160 :
デフォルトの名無しさん :2011/09/28(水) 20:02:14.91
大抵floatだけどパディング指定じゃ駄目なんかね #A{ position:relative; padding-top:aaa; padding-left:bbb; } #B{ position:absolute; top:0; left:0; width:100%; height:aaa; } #C{ position:absolute; top:aaa; left:0; width:bbb; } <div id="A"> <div id="B">ヘッダー</div> <div id="C">メニュー</div> <div id="D">コンテント</div> </div>
161 :
デフォルトの名無しさん :2011/09/28(水) 20:04:08.08
もうあと一桁レス以内で収めてくれよ
Whileでループしてる子スレッドに、 メインスレッドから任意のメソッドを実行させたいんですが ループ内に条件分岐つけてフィールド変数を条件にして実行させるくらいしか思いつかないんですが、 もっとスマートな方法ってありませんか? このイベントを発生させるとこのスレッドの上で動く的な
>>162 なんで「その」スレッドに拘る必要があるの?
何かスレッドのこと根本的に勘違いしてるんじゃないの?
>>162 メインスレッドで他のスレッド立ち上げても次の瞬間にJoinしてたらほぼ意味が無い。
設計としては、スレッドにキューを持たせてそのキューに分岐変数をガシガシ突っ込みつつ、
スレッドは頑張って関数を処理するという感じだと思うんだが。。。
並列化したいんであれば、そういう処理を書いて、ワーカースレッドを増やすのがいいだろうね。
>>162 待機はループ回したりしないでWaitHandle使う
.NET4ならBlockingCollection<T>使えば超簡単
Dispatcherじゃ駄目なのか
167 :
162 :2011/09/28(水) 22:01:20.44
MSDN見てたら余計わからなくなってきた 整理して出直します
168 :
164 :2011/09/28(水) 22:03:47.06
>>166 ダメなことは全くない。
っていうか不勉強で知らなかった。申し訳ない。Orz
C#では参照型・値型と参照渡し・値渡しは別概念 C++のポインタ付きとポインタなしが参照型と値型に大体重なる 参照渡しはC++にあった引数で(Hoge& hoge)って書く奴と大体同じ C++だと参照&はローカル変数とかでも使えたがC#では引数のref/out限定
>>169 C#で参照型を引数に渡すのは参照渡しじゃないよ。上のサイトにも参照渡しとは書いてないだろ。
変数の場所を渡すのがC#やC++でいう参照渡し。
変数の中身をコピーして渡すのがC#やC++でいう値渡し。
で、値型と参照型の違いは、値型は変数の中身そのものがオブジェクトなのに対して
参照型はヒープ上にあるオブジェクトの識別番号(ハンドル)が変数の中身になる。
>>170-171 ああっ、参照型と参照渡しは全くの別物なのですか。
ところどころ「参照」「ポインタ」とだけ出てくるので混乱していました。
・変数のアドレスを渡す:参照渡し(参照型=アドレス=ポインタの位置のコピー)
・変数の中身を渡す:ポインタ渡し(ポインタが指定した場所の値を渡す)=値型の渡し
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1320144958 で、大体良いのですね。
ありがとうございました。
>C++ の参照型(&がつくやつ)は、本当に参照です。
>元の値をそっくりそのまま渡すというのが一番しっくりくるイメージです。まさに「参照」。
>#実際は、ポインタの特殊系と言うべき代物ですがw<怒られそうだw
>ちなみに、.NET の参照型と、Native C++ の参照型は、日本語にすれば同じですけど、意味(実装)はまったく違いますw
>#で、こういうこと言うと知らない人は頭抱えてしまうんだwww
>まず、C++でいうと、関数呼び出し時の渡し方って3パターンなることになってる(コーディングスタイル上)。
>・値渡し
>・ポインタ渡し
>・参照渡し
>で、イメージで言うと黒龍さんの言う通り、値渡しとポインタ渡しは結局はものをコピーで渡しているので、「渡し方」において違いはない。
>でも、参照渡しはそれでは説明がつかないので、私の場合は「同じ領域に別名がつくんだよ」と説明します。
http://blogs.wankuma.com/kokuryu/archive/2007/07/25/87015.aspx
ポインタと考えるからややこしくなるんだよ。 参照型の変数にはオブジェクトのIDが入っている。渡すときにはその値が渡る。それだけ。
クリックしたつもりがダブルクリックになった時にウインドウが切り離されてしまい困ってます ソースのタブのフローティングを切る設定はどこですればいいですか?
175 :
デフォルトの名無しさん :2011/09/29(木) 15:17:17.26
値型・参照型の話になると、すぐC++やCと比較して説明する奴多いけど、 余計ややこしいだけだなwww
まあ質問がそういう感じだったからな C#やるならC++の記憶は消した方が楽かもね
177 :
169 :2011/09/29(木) 15:51:41.42
すいません、ちょっとC++のライブラリを使うことになったので、 ポインタ渡しを直接使えるかC++/CLIでクロスライブラリを作るか考えてみたとこだったんです
横槍ですまんが >参照型はヒープ上にあるオブジェクトの識別番号(ハンドル)が変数の中身になる。 って事実上は参照渡しじゃないの? アドレスじゃないから厳密には違うんだろうけど
参照渡しというのはC#において別機能として存在してるのでその表現は不正
無理やり「○○言語で言うところの●●」と考えるの止めようよ
>>178 ポインタや参照渡しの引数が指してるのは場所。
.netのハンドルが指してるのは場所じゃなくてオブジェクトそのもの。全然違う。
用語がめちゃくちゃw
オブジェクト参照のトラッキングハンドルの値渡しとでも言って欲しいのか?
ref StringはString^%だからStringオブジェクトのハンドルの追跡参照の値渡しになるのかな
>>172 C++で、「ポインター変数の参照渡し」って言われてちゃんと理解できる?
>>185 C++には参照はあるけど参照渡しなんて用語はないでしょ。
何が「ちゃんと理解できる?」だよ。
後ろ向きに鏡指差してるAA貼られるぞw
暇だから以下のようなコードを書いてみた。ポインタ変数の参照渡し。 あくまでジョークだからな。 #include <iostream> void f(int *(&p)){ *p = 100; } int main(){ int i=0; int *p = &i; f(p); return 0; }
>>187 それはでも、「C++ には抽象メソッドはない」(やってることは純粋仮想関数と一緒)という程度の話では。
>>190 C++、書きやすいのは確実に参照渡しの方だけど、
呼び出し側が値渡し(& なし)と区別つかないから、
呼び出し側が気づかずに関数内で値書き換わって嫌だって話も多々ある。
それが結局、関数の引数に参照使わない文化生んでた。
もうC++のことは忘れろよ
>>191 呼び出し側が気づかない、っていうのは普通はないでしょ。
そんなことが起こるとしたら、関数の命名もしくは仕様そのものが腐ってる場合だけ。
っていうか、参照で渡すことを「参照渡し」って言うか? 聞いたことないけど
195 :
188 :2011/09/29(木) 23:18:48.94
>>190 あらあらあら、実用してる人いるのか。へぇー。
書き換えないときは参照で書き換えるときはポインタ。っていう感じでしか考えたこと無いな。
まー、引数でやってきたポインタを書き換えるのあんまりスキじゃないのだけどね。
>>191 んー、値渡しの対象がオブジェクトだったりすると、コンストラクタが裏でうごめくのが嫌、というのと、でもポインタを渡すのも嫌、というのとで
int &f(const someclass &a, const someclass &b);
というなんだかよくわからない(わけでもないけれども)やりかたがスタンダードなんですね。最近知りました。
>>194 C++では変数参照をポインタの値のように扱えるから事情が複雑だけど
参照渡しはごく一般的な言葉だろ
VBのByRefとかまんま
>>193 ライブラリ使う側はほんと底辺だと思って作ったうえで、
さらにその斜め下をいかれるものよ。
でなきゃ、気づかないなんて心配しない。
>>196 そうそう、const 付きなら何の問題もない。
それはそれで、const に対応するようにクラス書くのが大変なんだけど。
あと、その const& な引数を COM Interop とかで C# から見ると、
ref だらけになって悲惨なことに。
VB2005の本を5冊くらい読んで結構理解したつもりの人が C#を勉強するのにお勧めの本は何?
VB.NETを完全に理解しているなら勉強する必要なし MSDNを見ながらいきなり作れるはず
まっさらな人がC#理解するよりハードル上げたね ご愁傷様
細かい文法の違いと、VBにあってC#に無い機能(=VBでも使ってはいけない機能)を知るだけだな 本とかいらん
204 :
デフォルトの名無しさん :2011/09/30(金) 22:53:12.49
C++とかJava、phpなんかのC言語系ランゲージ触っているなら大丈夫だけど VBのみだとどんなもんなのかな?
BUILDのアンダースのセッション面白かったな 一応C#とVBの新機能の紹介のはずなのにVB完全無視どころかdisってた
LINQ to Objects好きでとにかく使いまくるんだけど、なぜか急にパフォーマンスが気になった。 例えば↓みたいなLINQと2重ループで地道に探すロジックとどっちが処理早いんでしょう? var ret = from a in hogeAList join b in hogeBList on a.Id == b.Id select a.Name
2重ループに決まってるでしょう
C#がいくら進化したって要件がいつまでも2.0だもんげ
>>207 1・2割、LINQ の方が遅い。
けども、ループで回す方が早いからって、一時配列作ってそれにコピーを作ったりしたら、
今度はメモリ効率悪くなるし、データ量多いと性能も落とす。
繰り返し頻繁に呼ぶ処理ならループとLINQとか小手先の最適化じゃなくて ToLookup使うとか考えるべき
>>207 俺の感覚ではほとんど変わらないと思うけど
微妙に興味があるんで実際に測ってみてくれ
やっぱりLINQのほうが遅いのか。
でも
>>210 の言うようにループだと、結果を溜めるための一時配列が必要なんですよね。
結局はLINQは万能ではなく場合によって使い分けろということですか。
だがFindAllメソッドだけはクソ便利すぎるのでどんな時でも使うのをやめない!
JavaもLINQパクって標準仕様にすればいいのに。
214 :
デフォルトの名無しさん :2011/09/30(金) 23:44:08.68
ASP.netとか巨大アプリじゃない限り メモリ効率や速度より読みやすさが一番大事だったりするよな
FindAllってLINQ導入で要らなくなってSilverlightで削除された遺物だよ
>>215 へ?
Listクラスからなくなったことですか?
Silverlightは必要な機能までごっそり削除してるから比較にならん
設計ミスだから削除したっていうのもあるよ ICloneableとか
オブジェクトのコピーはJavaでも失敗機能の槍玉に挙がってるが どう設計するのが正しかったんだろうか
コンストラクタに渡すのが正解
>>212 1000件のリスト2つでの結果。Stopwatchクラスで計測。
LINQ:00:00:00.0002997
ループ:00:00:10.4558394
LINQのほうが圧倒的に早いんだけど、何か間違ってるのかな・・・。
必要ならソースはりますが。
>>221 LINQの方、多分クエリ作っただけでクエリを実行してないだろ
>>222 うあ。その通りです。しにたい。
LINQの結果のToList()メソッド呼べばクエリ実行されますよね?
でもLINQのほうが早い。謎です。
LINQ:00:00:00.0027321
ループ:00:00:00.1062660
Joinは辞書使って二重ループにならないようにしてる 要するに馬鹿の考え休むに似たり、ある物はどんどん使うべきということだな
なんか変だと思ったら a.Id equals b.Id だろ それなら最適化されるのはわかる ==と普通の式みたいに書いてあると素直にラムダ式に変換されてしまって最適化されなそうに見える
>>224 へ〜。なるほど。ありがとうございます。
>>208 ,210は嘘ってことですか。
やっと寝れる。
>>225 あ、そうです。equalsです。
勢いで書いたので == って書いちゃった。
なんかぐだぐだになってすみません。
>>226 嘘じゃあなくてさ、Joinのやっているようなことをちゃんと再現すれば、
余計なオーバーヘッドがなくて速い。
でも、ちゃんと色々考慮して正しく書ける人って存外少ないんだろうね、
だから、色々考慮してメソッド化されたLINQ to Objectsを使うのが大体正しい。
このスレIDが出ると面白いのにな 同一人物が連投してるだろう
>>228 ちゃんと色々考慮したものとLINQを実際に測定してみてくれ
乙 つか両方とも十分な速さだから、これが律速になることは無さそうですね・・・
IDなら一意だろうからLookupよりDictionaryの方が速いんじゃないの
あるスレッドが終了の指示がくるまで
whileし続けるありふれた挙動をさせたいとき、
bool is_thread_must_running = true;
と用意して
while(is_thread_must_running)
{
}
というスレッドを外部からis_thread_must_running = false
で終了させるコードをネットで見つけましたが、
単一の変数への読み出しのみ、
書き出しのみはアトミックであると保障されていますか?
(javaはたしかそうだったような気がしますが)
また、is_thread_must_running はここを見る限り、
http://msdn.microsoft.com/ja-jp/library/x13ttww7.aspx volatile にすべきですよね?
参照型と32ビット未満のサイズのプリミティブ型の変数の読み出しと書き込みはアトミック volatileは必要
236 :
235 :2011/10/01(土) 20:21:54.60
32ビット以下に訂正
Javaのcomparaterに該当するメソッドってなに?
IComparer<T>インターフェイスかComparison<T>デリゲート
非同期ソケット通信でタイムアウトを実装したいんですが Timerなんかで定期的に監視して、指定の時間経ったらSocket.shutdown()とClose()したら良いんですかね それとも同期ソケットを別のスレッドで実行する形が定石なんでしょうか
後者だろうなー
namespace N1 { namespace N2 { class C {} } } という名前空間の中のクラスを、N1だけ省略して N2.C と書いて使いたいです。 ソースコードの先頭に using N1; を書いたのですが、ダメでした。 完全に N1.N2.C と書くか、using N1.N2; として C と書くしかないですか?
using n2 = n1.n2;
ランダムで+1か−1を返すメソッドってない?
245 :
デフォルトの名無しさん :2011/10/03(月) 00:09:01.36
>>244 ランダムで数値作って奇数は-1偶数は+1とかやれば?
random.Next(2) == 0 ? -1 : 1とか スクリプト言語っぽく(new[]{-1,1})[random.Next(2)]とか
引数が2なら0か1の一様分布
EventArgsオブジェクトとかのイベントオブジェクトあるじゃん たとえば、イベントオブジェクトを大量に発行するプログラム(ゲームとか)動かすときにメモリ使いすぎてボトルネックになるってことはないの? メモリ食って動きが鈍くなるとか、ガベージコレクションが頻繁に起こって動きがカクカクするとかしないのかな?
そういうオブジェクトは一瞬で不要になるので0世代GCで回収される 第0世代のGCは頻繁に動くけど非常に高速 重いのは中途半端に長生きするオブジェクトが引き起こす上の世代のGC
へ〜 知らんかった
253 :
デフォルトの名無しさん :2011/10/03(月) 20:43:15.87
Visual Studio 2008 にて、Click Once マニフェストを使用して、 Windows Form アプリケーションを配布していました。 その際、必須コンポーネントに Visual Vasic Power Packs 1.2 を加えていました。 そして、Visual Studio 2010 が登場し、 そのアプリケーションもVS2010用に変換して改修を行っていたのですが、 いざClick Once マニフェストで発行しようとすると、 必須コンポーネントに Visual Vasic Power Packs 1.2 がなく、 Visual Vasic Power Packs 10.0 しか列挙されていません。 これだと、ユーザがClick Once マニフェストの利点を享受できず、 結局、サイトからVisual Vasic Power Packs 10.0 を落としてもらうしかなくなってしまいます。 この回避方法はありますでしょうか。 VS2010でも、VS2008時代の Visual Vasic Power Packs 1.2 をコンポーネントに加えることはできないのでしょうか。 よろしくお願いします。
VV.Net
ハートも.netで動いてるのか。 ミッションクリティカルすぎて怖いんだが。
256 :
デフォルトの名無しさん :2011/10/03(月) 20:54:10.31
>>255 さん
>>253 ですが、やはりVS2008で開発したものはVS2008を使用し続ける方がよいのでしょうか…。
その結果が今のVB6
258 :
255 :2011/10/03(月) 21:07:26.57
>>256 ボケが通じないとはヤルナ!!というのは置いておいて。
有る考え方だが、
開発スイートってお作法が有るわけよ。バージョン変わるとお作法も変わるわけだ。
それをよしとするならバージョンアップすればいいと思うし、嫌ならそのまま使うしか無い。
しかし、古いお作法はどこかで淘汰されるので適度に切り替える必要はあるが、君にとって今はその時かな?
どうだい??
っていう詭弁・・・。
正直、クリックワンスを発行したことが無いのでわからん。
ただ、プロジェクトの開発環境をアップデートするなら、根本から治すくらいでやらないと割りに合わないと思う。
小手先でやるなら、保守大変だよ。
259 :
デフォルトの名無しさん :2011/10/03(月) 21:20:07.25
>>258 さん
ありがとうございます。
何とか、Power Packs 1.2 をVS2010に連れてきたかったのですが、
Microsoft社は、それを許してくれないのでしょうか…。
ただ、おっしゃるとおり、新しいバージョンと世代交代して衰退するバージョンを
いつまでも抱きかかえても、いずれ行き止まりがくるでしょうね。
260 :
255 :2011/10/03(月) 21:36:57.73
静的な型ってcでいうポインタ変数の型、動的な型は実態の型みたいな認識でおk?
静的ってstaticのことじゃないの? 動的な型はヒープに確保される型じゃないの?C#だとClass型??
263 :
デフォルトの名無しさん :2011/10/03(月) 22:36:54.88
2010で「リソースの追加と編集」の使い方についてですが・・・ リソースとしてZIPを登録してみました。 そのZIPの取り出しをしたいのですが・・・ネット上に圧縮ファイルの取り出しなんかやっている人はいないですね・・・ リソースファイルを取り出して指定した場所にコピーする方法はありますか?
>>263 プロパティでバイト配列だったか、ストリームがとれたと思うのでそれをコピーするっていう話かな?
266 :
261 :2011/10/03(月) 23:11:40.59
>>262 解決した、ここでいう静的てのはインスタンスの入れ物を指すみたい
動的ってのは262のいったとおり
説明不足だったwエスパーさんくす
267 :
デフォルトの名無しさん :2011/10/03(月) 23:32:53.44
大昔、スタティックはプログラムをロードしたメモリー上とかに確保されていたこともあったけど 今はヒープに確保されるけどね
Thread.Sleep(5)入れただけでぴたっとソケットエラー出なくなった いままで悩んでたのがあほらしくなった
270 :
デフォルトの名無しさん :2011/10/04(火) 18:22:51.54
iTextSharpを使えばPDFファイルに書き込んだり1からPDFファイルを作ったり出来ますが、 既存のPrintDocumentをPDFに出力することはできませんか? 出来れば無償で。
PrintDocumentで何にプリントするかはユーザーが判断する部分だと思うけど… 出力をPDF出力したければPDFプリンタ入れるだろ 素直にPDFとして保存するでいいじゃねえか
272 :
デフォルトの名無しさん :2011/10/04(火) 19:12:43.92
WindowsFormアプリケーションを作成しておりますが、 下記のアクションを経た時にエラーとなってしまいます。 @ メインフォームから、モーダルで別のフォーム(フォームA)を呼ぶ A フォームAが前面に立ち上がっている状態で、フォームA内にコードを記述しテキストファイルの読み込みを行う B テキストファイルの読み込みが終わった時点で、フォームA内のコードでフォームAをCloseする C メインフォームにてフォームAのDisposeを行う。ここで次のようなエラーが出ます。 ↓ 「コレクションは変更されました。列挙操作は実行されない可能性があります。」 上記のエラーについてGoogleで検索しましたが、 Foreach文で回しているときに起こりうるエラーであると記述しているサイトを多く見かけました。 しかし、メインフォームでもフォームAでも Foreach文 は使用していません。 なぜDispose時にエラーとなってしまうのでしょうか。 ご存知の方、教えてください。よろしくお願いします。
273 :
デフォルトの名無しさん :2011/10/04(火) 19:17:01.93
>>272 ですが(連投すみません)、
VS2008で動作していた頃からこのロジックの部分を変更していないのですが、
CS2010に変換してから起きるようになりました。
コンポーネントの問題もあるのかなと感じてもいます。
>>271 現在印刷出来る帳票を特定の場所にボタン一つで保存したい
↓
PDFプリンタだとダイアログが出てそのフォルダまで自分で移動しないといけない。
また、それがAcrobatのようなものなら、たぶんAPIが公開されてるので
細かい指定も出来るだろうけど、安っぽいやつだとそこまで出来ない。
↓
iTextSharp.NETを使えばPDFを作成して書き込むことが出来るけど、
現在ある帳票をiTextSharp用に作り直さないといけない。
そして、新規帳票も2種類作らないといけない。
↓
じゃ、PrintDocumentからPDF出力する方法があればいいんじゃね?
という流れで上の質問に行き着きました。
Accessの時は標準の機能でPDF化が出来たのですが、Accessには戻りたくない・・・。
275 :
デフォルトの名無しさん :2011/10/04(火) 20:22:23.94
>>264 >>265 ありがとうございます。
とりあえず動くものは出来ました。でも、開発環境と別マシンでテストしたら
「UnauthorizedAccessExceptionは、ハンドルされませんでした。」
と蹴られました。
ソースはこんなソース
Byte[] data = Properties.Resources.Z;
using (System.IO.Stream srm = System.IO.File.Open(@"D:\\Z.zip", System.IO.FileMode.Create) )
まずDに書き込む権限あるんかい
>>275 他のマシンでプログラムに読み込み権限か書き込み権限がない、または両方だとおもう。
278 :
デフォルトの名無しさん :2011/10/04(火) 20:34:04.95
>>276 >>277 早速ありがとうございます。
お二方に頂いている内容は、プログラムを動かしているOSのドライブの
フォルダにそもそも権限が無いのではないか?
という意味で捉えてよろしいでしょうか?
ドライブのプロパティを確認したのですが、フルコントロール状態にしてみても
同じエラー出ました・・・
仮に権限がない場合は、プログラムで対策しなくてはいけないのですか?
279 :
デフォルトの名無しさん :2011/10/04(火) 21:27:22.46
>>272 です。、
ご存知の方、教えていただけないでしょうか(>_<)。
>>279 問題が再現できるコードをイデオンに貼らないのは何故?
例外と関係あるかどうか不明なプログラムの動作を書いても意味ないでしょ。
世の中にエスパーは存在しないこと分かってる?
>>279 フォームをCloseしたらDisposeしなくていいんだけどな
Disposeメソッドとかで余計なことしてるんじゃない?
関係なかったらごめんね
>>279 デバッグの仕方は分かるけど原因は分からんな
とりあえず例外の型(InvalidOperationException?)を調べて、エラーの出る直前までデバッグで実行
そしたら「デバッグ」の「例外」でCLR例外かから問題の型を探して「スローされるとき」にチェック
んで例外を発生させて、呼び出し履歴をチェックすればどのインスタンスが問題なのか分かるはず
どう直すべきかは判断できないので自分で考えて
283 :
デフォルトの名無しさん :2011/10/05(水) 00:56:09.59
passという配列にリソースファイルのファイル名(mona.jpg)が入っており、 それをpictureBox1に表示させたいのですが、下記のように記述してみたもののエラーが出ます。 どのように記述すれば良いのかご指導頂けませんでしょうか? pictureBox1.Image = pass[0]; 型 'object' を 'System.Drawing.Image' に暗黙的に変換できません。 明示的な変換が存在します。(cast が不足していないかどうかを確認してください)
地図ファイルは用意した?
286 :
デフォルトの名無しさん :2011/10/05(水) 02:30:25.06
>>283 >pass[0];
配列なのはわかるけど何の配列なのよ
Bitmap?
287 :
284 :2011/10/05(水) 02:32:27.82
お返事ありがとうございます。 ページに書いてあるサンプル「みんなの地球地図プロジェクト」から 「bnda.zip」と「hydrol.zip」を入手しました。 プロジェクトのShapeFilesフォルダに配置すると書いてありますが ソリューションエクスプローラーに「ShapeFiles」フォルダーを作り デスクトップに解凍したbnda.zipとhydrol.zipの中身をドラッグ&ドロップで 持っていったのですがこの方法で合ってますか? あと、2ページ目のプログラム部分で(省略)って書いてあるのも気になります
288 :
デフォルトの名無しさん :2011/10/05(水) 02:37:52.73
プロジェクトがローカルのどこにおいてあるかしらんけど プロジェクト一式が入ってるフォルダの中に配布用とデバッグ用の exeが入ってるところがあるのでその辺に実行に必要なファイルを置くしかないよ
>>283 本質的な事じゃないけどファイル名ならpassじゃなくてpathじゃないのか?
>>281 ダイアログの場合は呼んでね、Dispose
292 :
デフォルトの名無しさん :2011/10/05(水) 20:07:52.01
>>272 です。
皆様、回答くださりありがとうございます。
>>281 さん
ShowDialogにてFormを呼び、そのForm内でClose()を実行し、呼び出し元のFormでDispose()をしています。
いくつかのPCで試してみた結果、
VisualStudio2008(または2010)がインストールされているPCではエラーとならず、
インストールされていないPCのみ、Dispose()時にエラーとなることが分かりました。
また、Dispose()の記述を外したら、エラーとなっていたPCもエラーとならなくなりました。
パソコンの環境によってエラーとなる場合とならない場合があります。
VSが入っているPCではエラーとならないことを考えると、
何かコンポーネントが足りないのかなとも思いました。
また、Dispose()を外したらエラーとならなくなったのですが、
本当にDispose()しなくて良いのかどうか不安です。
何が原因なのか分からなくなってきました。
PanelコントロールのAutoScroll=trueでスクロールが実現するのはいいのだけど スクロールバーをドラッグしてる間はPanelの内容が全く動かず ドロップ時にスクロール先に瞬間移動する ちょっとなにいってるかわからんがもしれんが 普通のスクロールバーの挙動と違う 解決策教えてください
ListViewに動画ファイル一覧があり、それを選択すると Process.Startで動画ファイルに関連付けられたプレイヤーを起動するようにしているのですが フォームはアクティブな状態を保ちたいのに、プレイヤーの方がアクティブになってしまいます TopMostをtrueにしたり、this.Activate();にしてもアクティブ状態を維持できませんでした どうすればいいでしょうか
ProcessStartInfoとかでどうにかならんの 知らんけど
296 :
デフォルトの名無しさん :2011/10/05(水) 20:35:31.84
乱数を10個選んで昇順(小→大)に並び替えるプログラムを組みましたが、実行するとエラーになります。 数字は選べているのですが、どうも並び替えるほうが問題のようです。どこが悪いのでしょうか。 for( i = 0; i < 10; i++){ for( j = i+1; j < 10; j++){ if(a[i]>a[j]){ min = j; } tmp=a[i]; a[i]=a[min]; a[min]=tmp; } } for( i = 0; i < 10; i++){ printf("%d\n", a[i]); } return 0; }
297 :
デフォルトの名無しさん :2011/10/05(水) 20:38:14.28
エラーはなんてでてるの? あとa[]の宣言は?
298 :
デフォルトの名無しさん :2011/10/05(水) 20:41:16.97
a[10]で初めのほうに宣言しています。 エラーというか、乱数を選んだあと、プログラムが停止してしまいます。
299 :
デフォルトの名無しさん :2011/10/05(水) 20:42:17.75
いやだからそのエラーコードは何って聞いてるのw
minが初期化されない場合があるんで、tmp云々はifの中に入れないと …と思ったがprintf?
>>296 printf?質問するスレ間違えてないか?
302 :
デフォルトの名無しさん :2011/10/05(水) 20:45:36.39
不慣れですいません。 エラーコードといいますか、 実行すると、「問題があるので解決策を探しています」→「問題が発生したため、プログラムが正しく動作しなくなりました。」としか表示されません。 ちなみにさっきの前のコードはこうなっています。 #include<stdio.h> #include<time.h> int main (){ int a[10]; int i; int j = 0; int min; int tmp; srand((unsigned)time(NULL)); for( i = 0; i < 10; i++){ a[i] = rand () % 10; printf("%d\n", a[i]); } printf("\n");
スレチ
C言語スレでどぞう
305 :
デフォルトの名無しさん :2011/10/05(水) 20:46:55.05
C#じゃないじゃんw
釣れた釣れた
307 :
デフォルトの名無しさん :2011/10/05(水) 20:48:02.00
わ、Cはこちらだと思って書き込んでいました。 お邪魔しましたすいません
>>294 ShellExecute/ShellExecuteExでなんとかなるかも
>>309 WinAPIを使ってやるしかないみたいですね
ありがとうございました
311 :
デフォルトの名無しさん :2011/10/05(水) 21:13:17.58
>>292 ですが、お心当たりのある方、どなたか教えていただけないでしょうか(>_<)。
>>282 は試したのか?
ソース一式とスタックトレースを見られる人間にしか原因調査できないと思うよ
ふらっとC#,C♯,C#、C井、C丼
>>311 だから、問題を再現できるコード出せよ馬鹿
バチーンバチーンしてやりたい><
インで草がどうたらこうたら
Dllimportでアンマネージコードの呼び出しをしますが そのアンマネージコードからコールバックされる関数の引数にポインタが渡されてくる場合 C#側ではどうやって参照すればいいんでしょう?
>>317 PtrToStructureとかなんかそんな名前の奴
>>317 GetFunctionPointerForDelegateとかじゃないの?
初心者だから詳しくは知らないけど、ググればサンプルはたくさんありそうだよ。
マーシャリングは難しいねぇ。
>>317 渡されてくるポインタが構造体なら
それと同じ構造体を作ってやってPtrToStructure
323 :
デフォルトの名無しさん :2011/10/07(金) 14:47:35.64
string型に"を入れたいときってどうすればいいんだっけ? """とか3つ重ねてみてもうまくいかなかったんだが
"\"" または @""""
325 :
デフォルトの名無しさん :2011/10/07(金) 14:52:54.92
326 :
デフォルトの名無しさん :2011/10/07(金) 15:31:52.63
Flowlayout内に動的に並べたボタンの順序をユーザーがD&Dで変えられるようにしようと思っています 一応、それぞれのボタンにマウスイベントを追加して、マウスの移動量に合わせて ボタンのインデックスを変更して移動させるようにはできたのですが これでよかったのでしょうか ぐぐってもD&Dで順序を変える方法が見つからなかったので不安です
もろShowDialogにある
インターフェースについてよくわからないので教えてください ・publicな抽象メソッドだけを持つクラスのようなもの これについてですが、実際publicな抽象メソッドだけを持つクラスではだめなのですか?いまいちメリットがわかりません あとIDisposableインターフェースなんですが、自作クラスに実装しただけでusing文が使えるようになるんですか? class MyClass : IDisposable { 〜略〜 } こんな感じに書いて他のクラスからこんなことをやってみたんですが、うまくいきません using(MyClass myclass = new MyClass()) { } どうすればIDisposableインターフェースを実装してusing文を使えるようになるでしょうか? 例としてソースを貼ってもらえると助かります
継承だけしてDisposeを実装してないんじゃなかろうな
>publicな抽象メソッドだけを持つクラスではだめなのですか?いまいちメリットがわかりません クラスは多重継承できない どこからか継承してきたクラスにIDisposableを追加したい場合を考えてみる >あとIDisposableインターフェースなんですが、自作クラスに実装しただけでusing文が使えるようになるんですか? 使えるようになるよ どうせVSが古いか、: IDisposableと書いただけで中身を実装してないか、どちらかだろ
むしろお前の「実装」を出すのが筋やろ 何が下さいだ
・IDisposableがSystem.IDisposableではない ・MyClassにpublic void Dispose(){}またはvoid IDisposable.Dispose(){}が定義されていない
>>330 1について、
インターフェースの宣言は何も実装してないことが美徳なのですよ。
あるフレームの手続がこんな感じ。ということを示せればそれでいいからです。
実装の際には未実装があるとコンパイルエラーになりますし、
半端な初期実装を持つよりも、奇妙な動作をしなくなります。
class MyClass : System.IDisposable { public void Dispose(){} } これで動かなければ、誰も分からん
ただし、マーカーインターフェース使うくらいなら素直にAttribute使ってください 今はね
Bitmapオブジェクトをピクセル単位でなく、 メモリのかたまりとして一気に、高速に比較できないでしょうか
339 :
デフォルトの名無しさん :2011/10/08(土) 22:31:16.71
LockBits
Bitmap.LockBits
342 :
デフォルトの名無しさん :2011/10/08(土) 22:38:14.15
Mapped これってマップトになるの?w
344 :
デフォルトの名無しさん :2011/10/08(土) 22:49:44.64
>>343 IT業界ってまあ日本人が発音したのだろうけどマップドが多かった気がするんだよな
俺はマップトと読んでたなあ AdvancedWindowsの目次が確かマップトになってたせいで
Steve Jobsは? ジョブス? ジョブズ
アイアムノージョブズ
アウトー!!
I'm know Jobs now
すぐこういう馬鹿みたいのが湧くな。 どうせスレと無関係のこと書くならせめて他人の心を動かすこと書けよ。 面白いとか、いい事教えてもらったとか思えるようなこと。 そんなオッサンのオヤジギャグ以下の1行レス書いて何が楽しいの?
駄目なオマイラにモノ申す! 駄目駄目言ってるだけじゃ駄目なんだぜ?! ってくらい駄目なレスだな
だめなやつは なにをやっても だめ
strにはUnicode文字が入っているんですが this.label1.Text =str; this.toolStripStatusLabel1.Text = str; labelには表示されてけどもう一方には表示されない 何か制約があるんでしょうか?
Unicode文字なんて.NETが扱えるすべての文字じゃねーか フォント違いとかどうよ
>>353 です
先頭からいくつかの文字を抜き出して表示したらちゃんと行けました
どうやら末尾に何かの文字列?があってそれが表示されない原因のようです
labelの表示で見た感じでは普通に英文字なだけなんですが
何か調べる方法はありますか?
\r\n\tこれらはついていませんでした。
>>353 です
なんとなく原因がわかってきました
dllを利用してそこから返してくるバイト文字列をbytes[512]を
Encoding.Defaultで変換しているんですが
文字数を調べたら見た目はは10文字程度なんですが、str.Lengthは512文字になっていました
ああそらそうよ dllの方はnull終端文字列のつもりで返してるんだろうけど C#の文字列にはその概念が無いから\0にしてしまう
dllにバイトで渡すのやめて、new StringBuilder(512)を使え
>>357 そういうのがあったんですね
str=str.TrimEnd(new char[]{'\0'});
とすることでいけました
ありがとうございました
humm...
361 :
デフォルトの名無しさん :2011/10/09(日) 15:35:23.33
DataGridViewにボタンの列を追加したのですが、 行の値に応じてボタンの可視・不可視を制御することはできますか?
自分でそういう処理書かないとできませんね WPFはそういうの得意だけどね
C#でマルチメディアプレイヤーを作りたいと考えているのですが、シークバーやボリュームコントロールの方法、また、曲情報の読み込みなどその他具体的に必要になってくる処理の書き方に悩んでいます! サンプルや、Webサイト、書籍ご存知のかた教えて下さい。
そんな貴方のために誂えたような本があると本気で考えているか
つまりマルチメディアプレイヤーに必要なものが何もわかっていないと
>>353 です
あれから
>>358 のやり方をやってみようと
格闘しているのですが、マーシャルエラーばかりでてうまくいきません
やろうとしているのは
"Sinku.dll を使う"でぐぐった一番上にあるサイトのソースと同じなんですけど
作ったことのある人のブログを見るか,オープンソースのソフトを探してみるとか
368 :
デフォルトの名無しさん :2011/10/10(月) 00:26:27.14
wfpでやるなら、MediaElement使えば割と簡単にできるしサンプルも見つけられる winformなら、wmpを使うのが簡単で、他にはDirectShow.netやVLCのライブラリが使える tagはtaglib-sharpが割と使えた
世界食糧計画
あと、逆再生とか、倍速とか、ピッチを変えない倍速とかもやりたいんです!><;
分かるよ。自分もVC#風に使えるテキストエディタ作りたい。
小生も作業用BGM動画を分割してタグ付けアートワーク割り当てまでこなせるツール作りたい。
>>366 [ StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
public struct StrParam
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
public byte[] str;
};
これを
[ StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
public struct StrParam
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
public String str;
};
こう
374 :
366 :2011/10/10(月) 03:10:25.81
>>373 ずっと悩んでました
public StringBuilder name;
とやっていてもマーシャルエラーが出て
どうやってsbを渡せばいいのかと悩んでました
それで試してみます
ありがとうございます
375 :
デフォルトの名無しさん :2011/10/10(月) 03:15:56.46
Niceguy 俺 = new Niceguy(); ナンパしまくる; 俺.Dispose();
俺はnewされてDisposeしかしてないな
377 :
366 :2011/10/10(月) 04:06:05.77
>>373 Uni版でやってため最初うまくいきませんでしたが
Ansi版でできました!ありがとうございます
378 :
デフォルトの名無しさん :2011/10/10(月) 20:42:38.21
Windowsのファイルやフォルダの名前を変更する際、英大文字を英小文字に 変更したい場合、System.IO の Move()メソッドやMy.Computer.FileSystem の Rename〜()メソッドではできないようです。これはどう解決していますか?
379 :
デフォルトの名無しさん :2011/10/10(月) 20:44:47.65
そもそもMS製のOSってファイルネームで大文字小文字の識別ってしたっけ? DOSのころから大文字だろうか小文字だろうが同じファイル名称とみなすはず なのでAPIも・・・
地味に不愉快な仕様だよなぁ〜
381 :
デフォルトの名無しさん :2011/10/10(月) 20:49:12.77
>>379 a123.txt→A123.Txtなどの変更は、Explorerでは可能でした。
できれば同じようにならないものでしょうか。
382 :
デフォルトの名無しさん :2011/10/10(月) 20:51:58.87
>>381 それはあくまで表示が違うだけだからなあ・・・
細かい話になるとファイルシステムの仕様を理解しないとできないかもしれない
383 :
デフォルトの名無しさん :2011/10/10(月) 20:54:07.27
>>382 ということは、Explorerでは個々のファイル名を個別に覚えている、ということ
でしょうか。
何らかの方法で可能だとしてもその方方が一般に公開されているとは限らないしね
385 :
デフォルトの名無しさん :2011/10/10(月) 21:02:36.52
>>383 いや
DOSのころのファイル名称っていうのは8.3形式なんだよね
ファイル名称8文字と拡張子3文字
でwindowsのいつごろからか忘れたけどロングファイルネームっていう
拡張が行われてて大文字小文字を覚えてくれてるのはおそらく
8.3で収まるファイル名称であってもExplorerがロングファイルネーム扱いで
やってるんだと思う
なのでこの辺のファイルシステムにアクセスする方法もしくは
アクセスしてる関数もしくはアクセスさせるためのパラメーターが
わかればできないこともない
ただC#のファイル関連でそこまで気にしたことないのでC#の中で
できるのかわからん
APIを呼び出せば確実にできるだろうけど(OSやOSに関連するExplorerがやってるんだし
一旦別のファイル名付けてリネームし直せばいける気がする
行けるよ 前作った時はそうした
388 :
デフォルトの名無しさん :2011/10/10(月) 21:12:24.38
なるほど すでに管理情報はあるしそこにファイル名称はあるから (windowsにおいてはa123.txtもA123.Txt同じファイルとして扱われる) ロングネーム(ロングファイルネームというのは一般的ではないようだスマソ)の 方は書き換えされないんだな
389 :
デフォルトの名無しさん :2011/10/10(月) 21:14:45.49
おお、なんか知らんがWin7だとFile.Moveで大文字小文字のリネームができた
391 :
デフォルトの名無しさん :2011/10/10(月) 21:24:17.31
392 :
デフォルトの名無しさん :2011/10/10(月) 21:28:13.68
>>391 ごめん
もしかするとAPIでどうにかなるものではなく
>>390 の発言から察するに
OS依存かもしれないw
おまいら適当な推測でレスしすぎ
394 :
デフォルトの名無しさん :2011/10/10(月) 21:38:20.86
放置されるよりマシだろw
395 :
378 :2011/10/10(月) 23:36:21.47
396 :
デフォルトの名無しさん :2011/10/11(火) 00:21:27.97
その辺はわからん 日本のこんな偏狭スレの人間が知ってるとも思えないしw
ダウングレードかどうかは立場の問題でしょ。 ドトネトは、恐らくパフォーマンスのために元の名前とファイルシステム上 等価の名前が与えられた時は無視する仕様になってるんだろう。 これは低レベルの操作をしたい場合には余計なお世話だけど、 ライブラリとしてはまあ妥当な仕様じゃない?
先日プログラミングを学び始めた初心者です。 再帰関数を用いて二分探索を作ろうと思うのですが、 再帰関数をうまく用いる方法が思いつかず困っています。 用いなければ以下のように作ったらうまく作動すてくれたのですが・・・ 優しい人教えてください。 Int nibuntansaku (int x, int v[], int n) { int p, q, m; p = 0; q = n – 1; while (p <= q) { m = (p + q)/2; if (x < v[m]) q = m – 1; else if (x > v[m]) p = m + 1; else return m;
>>398 再起関数はスタックを食いつぶすので深い再起は避けるべき。
むしろ、ループでどうにかなるならソッチの方がベターだな。
大昔のポケコンでもあるまいし、スタック食い潰すて
いやー、穴掘り法で迷路作ったときに、128*128位のマップ作ったらスタックオーバーフローでプログラムが死んでた。 ネスト数は大体200くらいだったような気がする。
>>399 >>400 レスありがとうございます。
使っている資料の演習に
再帰を用いて作ってみろ
とあるので解いてみたいので、よろしければご教授お願いします。
資料は昔兄が大学で貰った資料なので答えがないです。
403 :
398 :2011/10/11(火) 01:46:59.05
この程度の問題も解けないのかよks お前らに聞いたのが間違いだったわww
>>403 ’この程度の問題’をなぜ質問したのか・・・。
数分で音を上げて勝利宣言とかどうなんだろうね。
なりすましですし・・・
どう見てもなりすめしてまきずし・・・
半角英数でないところがアホさをより一層際立たせている
おすし
410 :
デフォルトの名無しさん :2011/10/11(火) 07:38:51.04
IDは付かないもんかねえ
ほんと。IDがつけばノイズが減るのにね。
ID付きで見たいな 管理者うらやましす
413 :
412 :2011/10/11(火) 09:13:24.73
なりすましや自演なんてみんなやってんだろ? 全然バレないしな
ム板は他より悪意少な目な人が書き込んでると思ってた。
>>395 自動化厨御用達のSendInputすら無いんだぞ
期待するだけ無駄
自動化厨初めて聞いたw
417 :
398 :2011/10/11(火) 13:11:00.67
はやく自動化プログラムさせろよ
LabVIEWでも使ってろ
フラットした気持ちがシャープに
420 :
デフォルトの名無しさん :2011/10/11(火) 22:39:16.87
c#でexcelのシートを操作してるんだけど 結合セルの動作がよくわかんない。 3×3の結合セルから3行ってのを取りたくて mergearea.rows.countってやっても 1が帰って来ちゃう。 どうやったら3行って取れるの?
>>420 あんたの質問こそよくわかんない。
日本語でお書きください。
ボタンを押すたびにコントロールを動的に作成しているんですが 描画がちらつきます。 ちらつかないようにするにはどうしたらいいでしょうか? private void button1_Click(object sender, EventArgs e) { while (true) { foreach (Control con in panel1.Controls) { panel1.Controls.Remove(con); } if (panel1.Controls.Count == 0) break; } for (int i = 0; i < 10; i++) { TextBox tb = new TextBox(); tb.Top = i * 20; tb.Left = 10; panel1.Controls.Add(tb); } }
とりあえずSuspendLayoutとResumeLayoutを試してみれば
424 :
デフォルトの名無しさん :2011/10/11(火) 22:46:42.33
>>422 フォームのチラつき制御で調べるとでてくるとけど
winformの場合完全にチラつきを排除できないよ
もしかして:ダブルバッファリング
ちらついたっていいじゃないか Windows Formだもの
やはりチラツキはしかたないですよね。 XNAで作り直します。
>>420 cell.MergeArea[cell.MergeArea.Count].Row - cell.Row + 1ってな感じかな?
>>428 意味はよく飲み込めないけど
明日試してみるわ。
ありがとう。
メソッドのコードが20行40行ってどんどん増える 他の人のコードみると驚くほど短い 何がいけないんだ・・・
431 :
デフォルトの名無しさん :2011/10/12(水) 02:10:41.85
クラスに分離したりとね・・・・ というかそれなりの処理してればコードは増えるよ 気になるならMSのSystem.xxxのソースコード見てきなよ
マーチン ファウラーのリファクタリングの本を読むといいよ
System.Xml.Serialization.XmlSerializer ser = new こうするのと、usingディレクティブを使用して XmlSerializer ser= new こうするのだとコストが違ったりするの? 開設サイトは分かりやすくするために修飾子つけているだけ?
>コストが違ったり しないよ
435 :
デフォルトの名無しさん :2011/10/12(水) 08:48:20.99
>こうするのだとコストが違ったりするの? ビルドして出来上がる物はかわらない コードの見た目の問題とか入力の問題とか usingで使うところを指定しておけば XmlSerializer ser= new・・・ ではじめれるからねえ usingを書いてなければその都度 System.Xml.Serialization.XmlSerializer ser = new・・・ と書いていかなきゃいけなくなる いくら支援があるとはいえね・・・ >開設サイトは分かりやすくするために修飾子つけているだけ? そうだと思う using ・・・・ と XmlSerializer ser= new・・・ ってコピペする場合は書く位置が違うからね そんなの説明するくらいなら解説サイトは System.Xml.Serialization.XmlSerializer ser = new・・・ とusingで分離しない方が簡単だし
ずっと疑問だったのですっきりしました usingをどんどん使っていきます
DataGridViewに入れられている数値を元に折れ線グラフを画像出力ってのをやりたいんですが どういったものを使えばできるようになるでしょうか?
.NETを4.0にしてChartコントロール使え もしくは3.5でChartコントロールをインストール
>>430 オレもそうだ。
条件分岐なんかしてると、それぞれにメソッド作って分けて書けばいいんだろうけど、
ついつい、そのままifとeise ifの間にズルズル書いちゃう。
こういうのスパゲッティっていうのだろうな。
そういうのはスパゲティーコードじゃないよw
3層以上ネストする様なら別の方法を考える
4層以上だた
速度考えるとスパゲティコードになるw
??
設計段階での発想と言うか、アルゴリズムというか、 いいプログラムって出発点から違うんだろうな。 おれなんか逐次的な処理のコードしか書けん。情けないorz
447 :
デフォルトの名無しさん :2011/10/12(水) 18:26:44.33
慣れですよ それにオブジェクトだってそれほど大きく逸脱した物でもないし
長いからなんて理由でクラス分割されると、 役割りの不明瞭なクラスが量産されて大変な事になりそう
クラスは分割しないけどメソッドは分割することある。 privateなメソッドが増えていく
csファイルが長くなりすぎて、何処に何があるのか探すのが大変なので、 機能別にまとめてpartial classをいくつか作ることが多い。 1ファイル500行くらいが限界?みんなどう?
>>450 そんなもんで大体収まるから、
収まらないのも例外として認めてるかな
>>450 メソッドは全部畳んでおく。
あとエディタじゃなくて一覧から探す。
453 :
デフォルトの名無しさん :2011/10/12(水) 19:54:07.14
regionだっけ? あれも使えばいい
どうせクラスビュー使うし
そういう便利技、まだ知らないんだよな。 VS2010EEかなり力技で作ってるからwww 誰か教えてよ。
456 :
デフォルトの名無しさん :2011/10/12(水) 20:17:55.81
クラスビューって無料版についてない機能だろ
457 :
デフォルトの名無しさん :2011/10/12(水) 20:55:27.71
クラスビューすらなかったら他のソフト使うわw
C#はエディタの上のリスト使うことのほうが多いかなあ VC++ではクラスビュー使いまくるんだけど
クラスビューはアクティブなファイルに同期する機能があればもう少し使いやすいと思うんだが、 なぜかないのが謎。
461 :
437 :2011/10/12(水) 21:26:21.28
462 :
デフォルトの名無しさん :2011/10/13(木) 01:35:05.63
Form1を継承したクラスで、Form1のbuttonやpictureboxを変更することは出来ますか? 変更しても、反映されない
463 :
デフォルトの名無しさん :2011/10/13(木) 01:36:44.11
意味がわかりません
コード見ないと分からん
465 :
デフォルトの名無しさん :2011/10/13(木) 01:52:03.83
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; static class Program { static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); Draw draw = new Draw(); draw.change(); } } class Draw:Form1 { public void change() { button1.Enabled = false; } } 実行すると、button1はfalseになるはずなのですが、実際にはtrueです。
466 :
デフォルトの名無しさん :2011/10/13(木) 01:54:43.02
アプリが動いてる間は Application.Run(new Form1()); のところでずっと処理してるんじゃないの?
初心者の割に変なコードに手を出したもんだな
468 :
デフォルトの名無しさん :2011/10/13(木) 01:59:04.11
pictureboxを継承したクラスで、管理したかったのです。 Form1上でやれば済む話なのですが
Form1≠Drawってのも説明しなければならんのだろうけど面倒だな。
>>443 .netはほとんどが参照渡しだから
メソッドやクラスを作りまくってもいけるんだけど
VBとか昔のに慣れているから、おれもついそういう感じにしちゃう
471 :
デフォルトの名無しさん :2011/10/13(木) 02:00:26.91
といかどういうものを作ろうとして何でそんなロジックにいたったのかがわからん
とりあえずそこに書いてもどうにもならないから Form1の中に書くように
473 :
デフォルトの名無しさん :2011/10/13(木) 02:04:27.52
private void Form1_Load(object sender, EventArgs e) { Draw draw = new Draw(); draw.change(); } こうですか?できません
474 :
デフォルトの名無しさん :2011/10/13(木) 02:06:14.50
やっぱり何か勘違いしてるねw
Form1の中にbutton1あるんだろ? private void Form1_Load(object sender, EventArgs e) { button1.Enabled = false; } あとその場合の尋ね方は 「こうですか?わかりません><」 が正しい
476 :
デフォルトの名無しさん :2011/10/13(木) 02:09:45.97
buttonをform1を継承したクラスで、管理したいのです。 無理なようなので、諦めます
まぁ好きなようにするといいよ 飽きるだろうし
478 :
デフォルトの名無しさん :2011/10/13(木) 02:13:32.38
それは実装のレベルの話で本当はどういうことをやろうとして そういう実装をしようと思ったのかとか説明できない時点であれなんだな・・・ Application.Run(new Form1()); Draw draw = new Draw(); draw.change(); これを Draw draw = new Draw(); Application.Run(draw); draw.change(); ってやればいいよ でもそれで本当に正しいかどうかは何をやりたいのかという 本筋が説明されてないのでわからんけどw
見やすいようにボタンのインスタンスだけ集めたクラスを作りたかったとか
Fromはデータの受け渡し処理だけ書くようにしている ListViewで項目が削除されたイベントが起きたら データを管理しているクラスにイベント内容を送り それを元にデータ管理クラスが項目を削除して Formに削除実行したとイベントを発行する それを元にListViewの項目を削除する 物凄く遠回りな感じだけど、Formでデータ管理も削除判定も 全部やってた頃より、見た目がすっきりした気がする
481 :
デフォルトの名無しさん :2011/10/13(木) 02:18:29.70
>>479 そういう最終的な仕様を想定した中でこの部分はこうしたいっていうのは
あるのはわかるがそのなんで
>>465 になったのかがわからないと
対処療法的な回答しかできないだよな
本当はそんなことしなくてもいいことなのかもしれないのに
でも過程を答えてくれない以上は対処的は話しかできない
しかも教える側としても気持ちの悪い対処方w
完全にV-コードビハインド-VM(M)ですね ハンドメイドとは恐れ入る
>>465 コントロールを直接いじるクラスを別に作りたいなら
継承じゃなくて、Form1のインスタンスを管理するクラスに丸ごと渡すしかないんじゃないかな
継承してもそれはform1とは別のボタンだよ
こういうことじゃなくて?
484 :
デフォルトの名無しさん :2011/10/13(木) 02:23:08.84
これ以上は周りがあれこれ説明してもムダでしょ 仕様の説明を聞くことで本人の理解度もわかるかなあと思ったけどそれすら しないってことは・・・・
>>482 ハンドメイドじゃないやり方となると
やっぱりWPFになるのかな?
DataGridViewについてなんですが、ユーザーに入力させその値を配列として取り出したいんですが for文使ってDataGridView.Rows[i].Cells[i].Valueでループさせて取り出していくしかないんでしょうか? 何かいい方法があったら教えて下さい
487 :
デフォルトの名無しさん :2011/10/13(木) 02:31:54.03
つーかFormなんて扱いにくい物で管理しなくても Panelとかのコンテナで管理させてもいいのにね でもやりたいことの大枠を教えてくれないことにはアドバイスのしようもない
WinFormsならイベント使うよりフォームがインターフェース実装して そのインターフェースを通して操作する方が楽だよ MVPてやつ
>>486 配列っていうかDataGridView自体[row,column]のインデクサ持ってなかったか
BackgroundWorkerを使って、高解像度画像を読み込むとき時間のかかる処理を非同期化したんだけど、 BitmapFrameを生成中に(bf = BitmapFrame.Create...の行)他の画像を読み込ませたくて、中断したいときどうすればいい? CancellationPendingプロパティで判断したくともできないし。 あと、高解像度画像を扱う場合の定石みたいなのある?MemoryStream使うと良いとか。 ds = Dispatcher.CurrentDispatcher; bw.DoWork += (s, e) => { BitmapFrame bf; using (var st = File.OpenRead(((string[])e.Argument)[0])) { bf = BitmapFrame.Create(st, BitmapCreateOptions.None, BitmapCacheOption.OnLoad); bf.Freeze(); } ds.BeginInvoke(new Action<BitmapSource>((bs) => ImageData = bs), bf); };
>>488 今ある程度アプリが出来て
よりわかりやすいようにコードを修正している段階なんだけど
インターフェースってものを今まで使ったことが無かった
この機会に調べてみます、MVPについても
ありがとう
Streamのラッパー用意して中で失敗させたれ
ツール>拡張機能マネージャーって便利だなぁ 入れてない人のためにオススメ書いとく タブの表示状態をいろいろ変更できる productivity power tools プロジェクトが保存されているフォルダを開くことができる powercomands インデントのラインをひいてくれる Indent Guides 左にコード全体を簡略化して表示 VS10x Code Map v2
中断可能ストリームを
>>492 の方法で作った
コンストラクタでコールバック食わせて
Readメソッドをオーバーライドして
バッファサイズ×100読んだら1回くらいの割合で問い合わせる感じ
WinFormでのデータとListViewの同期はどうすればできますか データがソートされるとListViewもソートされるようにしたいんですが
そもそもListViewがバインディングサポートしてない 相手がDataViewならListChangedイベントで再構成するぐらい?
497 :
486 :2011/10/13(木) 18:50:27.65
>>489 DataGridViewってインデクサ持ってたんですね。
でもやっぱりfor文でループさせて1個ずつ取り出すしかないんですね。ありがとうございました
>>495 データのポインタをListViewItemのTagにセットしておけば・・・
newとoverrideの違いがよくわかりません どうやって使い分ければいいんでしょうか?
>>499 new -> メモリを確保して機能を使えるようにする。
override -> すでに定義されているメソッドを上書きして機能を変更する。でも元機能がoverride可能でないと不可能。
なぜそこをまとめて質問するのかちょっとわからん。
>>500 おいおいw
C#のnewには、他の言語でいうシャドウイングの機能もある。
newはオーバーロード(オーバーライドではない)。 ちゃんとした開発でのバージョン管理のための機能なのでわかんないなら使わなくていい。
504 :
500 :2011/10/13(木) 21:04:32.69
すまん。不勉強だった。シャドウイングって暗黙的っていうか副作用的な意味の再定義なのかな?
>>502 の言葉を信じるなら、すでに使われてる名前の別の機能のメソッド定義って感じか。
この別定義は継承元のオブジェクトの機能とは全く関係がない。
ってことだよね??
シャドウイングは、派生クラスを作った後で派生クラスで定義したのと同名のメソッドが 基底クラスに追加されたときに、前からその派生クラスを使ってたコードが誤動作しないようにするのが目的 最初から使うもんじゃない そういうのをC#の言語仕様の中ではバージョン管理と呼ぶんだよ
506 :
500 :2011/10/13(木) 21:12:16.19
>>505 すでに継承済みの実装があるときに、根っこを変えた時の副作用を抑制する感じか。
でも、なるべくそういう機能は使わないで基底は最初からスーパーセットにしておくのが理想だよな。
なるほど。一個賢くなったよ!=D
507 :
505 :2011/10/13(木) 21:14:01.39
誤動作しないように、ではなくて修正が必要にならないようにするのが目的と言うべきか
>>505 の状況になる→派生クラスをコンパイルしたときに警告が出る→問題ないことを確認したらnewで警告抑制
という流れになる
自前のToString()を作るとき、元のToString()に無関係につくるなら、 overrideではなくnewすべきなのかな?
名前を変えるのが親切かと
全く新しくメソッドを定義するときにはnewは基本禁止でいいよ インターフェイスを実装する場合に必要になることはあるけど
>>505 が胡散臭かったんで言語仕様を確認したが、
書いてあるのは「new修飾子を付けずに同名のメソッドを定義してもエラーとならない理由」だな
513 :
500 :2011/10/13(木) 22:11:06.17
>>512 その文章を読んでバージョン管理という命名の意図が読めたきがする。
継承の世代管理と互換性の切り分けがうまく仕組みに入ってるんだな。
まだモヤっとしてるから、実験してみるよ。うむ〜。
あんまり難しく考えなくても 「newだとポリモーフィズムできないよ」 でいいんじゃないの?
515 :
500 :2011/10/14(金) 00:04:50.35
次のようなコードをかきながら実験して納得した。が、変なキャラ付けしたからはじめてこのコードみたらわからん気がする。
http://ideone.com/1Exdn しかし、納得しても説明するのが難しいな。
newはnewで宣言したとある継承世代以降の同名の実装を切り替える。基底には触れないし実装後の名前をしらないと基底から呼べない。
overrideは基底にあるvirtualを上書きするから、基底世代が構築したフレームワークを書き換えるまたは上書きする。
世代の概念があるからバージョン管理。かなぁ。。。
newは
>>502 が正解のような気がする。気がする・・・。
さて、そろそろ名無しに戻るよ。戻るよ!!ノシ
継承の問題点を念頭に置いておかないとわかりにくいんじゃないかな。 Javaでは、派生クラスが存在する可能性のあるクラスに対して、既存のコードが絶対に誤動作しないように パブリックメソッドを追加するということはできないの。 派生クラスに同名のメソッドがあったら勝手にオーバーライドされてしまって、派生クラス作成者が意図しない動作になるから。 C#ではそうならないようにするためにシャドウイングをデフォルトの動作にしたりoverrideを明示的に書かせたりしてるわけ。
コーディングルールとかクラスとかメソッドの 命名ルールの観点で参考になるc#の オープンソースなんかない?
Freameworkのソースってどこで見れるの?
Express版より上位のVSで見るか、NetMassDownloader辺りのツールを使ってDLする。
>>518-519 public な部分に関しては、ソースなくても見れるじゃん。
private な部分はあんまりとやかく言わないってのは MS ガイドライン。
定めると不満が出るからね 定めなくても枠に嵌りたい人から不満が出るけど
なんかアナーキーな人みたいだ (MSみたいな所が)規約を定めると です 集団に規約が存在することは大事だと思いますよ
>>496 >>498 大変そうなのでDataGridViewでやったら簡単にできました
ありがとうございます
gotoを使ったら周りから文句を言われるかな?
周りの人によるでしょう
氏ねや
実装したいものにもよる 状態遷移図とか、gotoの方が書きやすい場合もある
http://ideone.com/X4RvM DataGridViewにバインドしたList<自作クラス>をソートしようと
いろいろ調べた結果ラムダ式が簡潔みたいなのでやってみたんですが
こんな感じになっちゃいました、項目が増えると同じようなコードが・・・
普通はどういうことをするんでしょうか?
自作クラスをIComaparableにしたり、IComparerインターフェースを作る方法が思うのですが。
データの量は10列の一万行ぐらいです
普通は表示に合わせて元のデータをソートしたりはしない 違ってていい
>>523 その場合、MS のソースコードを参照するってあんまり役に立たないのよ。
private フィールドはおおむね _hoge なんだけど、規約違反も多いというか。
MS は最大で10人程度のチームが最小単位で、その中で自由にやっていい(テストさえ通れば)。
その外側でレビューされるのは public メンバーだけなんじゃないかな。
panelのautoscrollをtrueにしてマウスホイールでスクロールするように したんですが、パネルがフォーカスを得られないのでいまいちです。 マウスがパネルの上にいるときにマウスホイールが効くように するにはどうしたらいいでしょうか?
533 :
デフォルトの名無しさん :2011/10/14(金) 13:03:06.17
コンテナをPanelからLabelに変える
534 :
529 :2011/10/14(金) 13:03:10.21
>>530 表示に合わせてというのがどういう意味かよくわからないんですが
バインドしないとなると、データの受け渡しと、DataGridViewに追加削除する
作業などを自前でやらなくてはいけなくなると思うんだすが
それにDGVでソートされたアイテムと同じものをDBから削除する場合
idxが変わってしまっていてどれを削除すればいいか、項目と一致するものを
探さないといけなくなると思うんですが
535 :
デフォルトの名無しさん :2011/10/14(金) 13:05:58.17
>>534 インデックスでやらないでデータの中でキーに使えそうな物で検索すればよくね?
>>532 面倒くさいから親フォームでWM_MOUSEWHEELが来たら
メッセージをリダイレクトしたら
537 :
529 :2011/10/14(金) 15:44:22.88
538 :
デフォルトの名無しさん :2011/10/14(金) 15:49:47.87
なぜっていうか追加したり削除したりするってことはすでにインデックスなんてあてに ならないって言ってるような物だろw
539 :
529 :2011/10/14(金) 16:07:14.34
>>538 バインドじゃだめな理由になってないですけど
540 :
529 :2011/10/14(金) 16:09:46.81
ソートについて聞いているのに何で誰もそこから逸れた事ばっかりいうんだ? ソートについて教えてくれよ
541 :
529 :2011/10/14(金) 16:11:31.03
ちょっとここは、ラムダ式もバインドも理解してない人しかいなさそうですね 529の質問は取り下げます
久々に池沼を見た気がする 仕事の合間に和ませてもらったよ
ロジックとコントロールの分離とかそういったオブジェクト指向を勉強したい javascriptならjQuery読んどけ!ってなるけどC#にコールドリーディングの定番はないかな ないならTwintailを読む 作りたいものがTwintailに近いからなんだけど
読めばいいじゃん・・・
前に読んだけどあれはお世辞にも綺麗でないな 他に薦めるものもないから止めないけどね
綺麗じゃないのかー 今気づいたけど設計の勉強と割りきってしまえばJavaでもいいんだよな。。。
Javaは、ただ、サーバー側のコードばっかりで。 いわゆる MVC 的なものって、HTML アプリを想定するか、クライアントアプリを想定するかで全然パターン違うんで、あんまり参考にならないかも。
.NET で何か参考になるコードっていうと、 アプリケーションアーキテクチャガイドで出してるやつか、 Code Recipe で MS が公式提供してるサンプルかかなぁ。
アプリケーションアーキテクチャガイドよさそう!ありがとう
550 :
490 :2011/10/15(土) 03:10:07.35
>>492-494 ありがとう。
しかし実際に試してみたけどストリームの読み込み自体は時間かからず、
ネックになるのはデコードとImage.Sourceへの適用だった。
デコードはBackgroundWorker上で可能だけど、Image.Sourceへの適用は
どうしてもUIスレッド上で行わなければならず、UIのフリーズが避けられない状況。
中断自体も困難ぽいのでまたほかの方法模索してみる。
public int Number { get; set; } このようなC#の自動プロパティってどんな時に使うんですか?クラス継承した時とかですか?
インターフェイスっていいね Publicだとどのクラスからでもアクセスできる可能性があるけど インターフェースを利用することで特定のクラスに向けてトンネルを作るような感じ 必要ないPublicなメソッドやプロパティを見えなく出来るのはわかりやすい
>>522 あのー、そのアクセスレベルについて便乗質問なんですが、
時々「公開するつもり無いからpublicは使いたくない。てことでintarnal使ってる」
とか、「公開」にこだわってる人見かけますが、どういうことなんでしょ?
privateで無理なアクセスならpublicでいいじゃん?と初心者なオレは思ってしまうんだけど、
publicにすることでどんなデメリットがあるんですか?
初心者にも分かるよう、具体的に教えていただけるとうれしいです。
publicだらけだと、別のクラスから触っちゃいけないメソッドを使ったりして データを書き換えられちゃったら困る場合がある だからインターフェース使うなりinternalにするなりして見えなくしてしまう 全体像を覚えているうちはいいけど、規模が大きくなっていくと忘れてしまう 忘れててもいいように、もしくは複数で開発してもいいように作ってる
555 :
デフォルトの名無しさん :2011/10/15(土) 07:51:10.59
>>553 理由の一つは、非公開の変数は内部でどのように使おうが自由だって事もある
拘束される部分が出来るだけ少ない方が作るのもメンテナンスも簡単になるでしょ
>>554-555 ありがとうございます。
外部アプリからいじられちゃうんですか?
それって、namespace名やclass名、変数名をオリナリティなものにしたら、
ほとんど回避できませんか?
それでも可能性はゼロじゃないということですか?
それとも意図的に解析して進入してくることに対するセキュリティってことですか?
いずれにしても、すごーく確率の小さいことを言ってるわけですね?
でも大きなプロジェクトになるとそういう配慮が必要なんだろうなあ。
オリナリティ →オリジナリティ 進入 →侵入
publicだろうがprivateだろうが外から調べようと思えば簡単にわかる。 名前が独自のものだとか、そういうものは関係ない。 わざとわかりづらい名前に変える難読化というのもあるが、それは別のお話。 誤って操作しなくていいものを容易に操作できないようにするというのは、 例えば非常用ベルを誤って操作しないようにガラスの中に入れておくとかそういうイメージ。
独自な名前付けても関係無いのですか・・・すみませんでした。 複数の人間が一緒に作ってるときは効果的かなと思ったのですが。
あ、独自の名前付けても関係無いというのは、逆コンパイルに対して 「そんなことしても無駄だ」ということか。
>>559 一人でやっていても作りこんでいくと
どのクラスが何をしているかを忘れるでしょ
そんなことはないって思うのは1000行未満の小規模だから
例えばform1にファイルへのアクセス、Viewの応答、データの処理など
1つのクラスのコード書いているときにあらゆる可能性を意識しながら
書くなんて疲れると思わない?
ファイルに安全にアクセスできるクラス、データに安全にアクセスできるクラスを作るなどして
クラスが増えてくると、ありがたみがわかってくる
>クラスが増えてくると、ありがたみがわかってくる なるほどー。まだそういうレベルじゃないから実感できないんだな。 大きな規模になったときの保険みたいなもんですかね? ありがとうございました。
とりあえずすべてpublicで作っていくといいよ そしたら確実にどの変数は弄ったらだめなのかなど わからなくなるから そういうことに実際に出会わないといくら説明しても納得いかないもんなんだよ
public int hyakkai=100; public int tasizan() { for(int i=0;i<hyakkai;i++) { count++; } return count; } 上のようなクラスAがあったとして 別のクラスCでやっぱり1000回ぐらいがいいと思って 面倒だから同じメソッドを利用したいと思い、hyakaiに1000を代入して利用する その後、別のクラスBが100回の足し算をさせるために同じクラスA利用する クラスBは戻り値が100以外はエラーを吐くようになっている
565 :
デフォルトの名無しさん :2011/10/15(土) 09:33:26.02
具体的には namespace Foo{ [DataContract] class Hoge{ (略) } } ↑を DataContractSerializer でファイルに保存して、 ↓(ネームスペースだけ変わったデータ構造はかわらず)に読み出す方法ってありますか? namespace Bar{ [DataContract] class Hoge{ (略) } } DataContractResolver を実装すればいけるかと思ったのですが、 なぜか、DataContractResolver は呼び出されませんでした。
この場合、クラスAのhyakkaiの変数はいじってはだめだということを忘れていたために起こった 分かりやすくエラーがでるならいいけど、エラーが出ない場合気づかなかったりする ここは絶対触られたくないところならprivateにしたり 一部のクラスだけが使えるようにしたいならinternalや明示的にインターフェイスにしたり 事前にしておけば、変な事をしなくて済むし、エラーも出てくれる 実行後よりコードを書いているときにエラーが出る方がいいんだよ
ひとつのクラス(もしくはひとつのファイル)で使うusingの数って 目安みたいなのある? usingだけで10行超えたら多いだろ、とか。
privateにする意味は他から弄られたくない、が主体だろうけど インテリセンスで候補としてあがらなくなる点も大きいと思う。 インテリセンス便利すぎる。
3行以内に収めないとスパゲッテー
>>551 ほぼ常時それ使う。
あとから自動実装じゃないプロパティに書き換えても、
利用側の再コンパイル必要ないから。
>>566 privateのありがたみは非常に良く分かるんだけど、
それより上、intarnal、protect、publicの使い分けとかがよく分からない。
動けばいいの
>それより上、intarnal、protect、publicの使い分けとかがよく分からない。 だから、private以外は全部publicになっちゃうw
>>569 mjd
いま平均7〜8個+別名using2〜3個くらいあるわ 見直そう…
usingなんて使わずフルパスで書けばおk
>>571 internal はわかりやすいと思うけど。
ライブラリを作る側と使う側分けたときに使えるわけで。
protected はそれこそ継承時限定機能で、継承自体そんなめったに使うものじゃないんで。
勉強に集中したくてカウントダウンするソフトが作りたいんですけど ヒントをください
ヒント: カウント減らして表示
Itemsってプロパティですよね? なのにItems.AddやItems.Removeができるのはなじぇ? 自分でこういうもの作ろうとするにはどうすればいいの?
プロパティ化したものにも大元の型があるのでその型を参照してメソッドなどを引っ張ってくる。
obj.GetItems().Add もしくは var items = obj.Items; items.Add(); こう書けばわかるか?
ちょいと端的すぎたか。 まー、プロパティ書くときにIntとかListとかの型を指定するのでそれを参照してる。
Setはできないプロパティで List<T>を返しているようなものと思っていたけど Getメソッドなんですね そしてそのGetメソッドはPrivateで公開はしていないという感じですか?
二重起動を禁止するのはできたんですけど、二重起動を禁止したあと既に起動している同じアプリケーションをアクティブ化する方法ってないですか?
プロパティでgetをprivateにする意味はあんまりないと思うけど、 getが参照を返すのでそういうことができるんだわな。
同じようなのを実装するとなると public List<Item> Items { get{return getItems();} private set{ _items=value;} } こんな感じですか? Setできないのか型チェックに問題があるからかな? コレクションなどにはAddメソッド通して設定するって仕様があるのかな 自分ではよく itemsA=itemsB的なことをクラス間でやっちゃったりするんだけど
590 :
586 :2011/10/15(土) 20:25:11.78
すいません今調べたらそれらしいものが出てきたので586は取り下げます
>>588 private List<T> _Items;
public List<T> Items { get{ return _Items ?? (_Items = new List<T>()); } }
private List<T> _Items = new List<T>();でいいよ List<T>は最初に要素を追加したときに内部の配列が確保されるからnewはほとんどコストない
>>591 これ見てるとAddで追加させるためだけに
プロパティを作ったような印象がする
ListBox.Add()だと変なのかな
コレクション返せばItems[i]とかforeachとかできるでしょ 直交性が良くなる List<int>返すのはあんまり良くないからIList<int>にするべきだけど
いちいち、自前でADDやRemove作るの面倒だから ライブラリにあるList<T>を公開してこれを使わせようって感じか 今までAddを自前で作ってたから参考になった でも、型が違うデータをクラス間でやりとりする場合 コンバーター作らないといけないんだよね
>>596 なるほどーインターフェイスを明示的にすることで
使用制限するのかー勉強になるなー
Control.Invalidateメソッドはスレッドセーフですか? それともちゃんとControl.Invokeを通して呼ばなければなりませんか?
基本的に、スレッドセーフなメソッドは明示的にそう書いてある
>>600 ありがとうございます
ということはこれはスレッドセーフではないということですね?
あるSDKサンプルに別スレッドからInvalidateしている
サンプルがあったので疑問に思いまして
スレッドセーフであることとコントロールに触れるか否かは同義じゃないし SendMessageでやってる奴は呼べるよ
>>602 >SendMessageでやってる奴は呼べるよ
SendMessageは分かりますがこれはどういう意味ですか?
VisualC#でビルド時に自分のコンパイラ環境を書き込ませないようにするにはどうすればいいの?
>>603 メッセージキューを使った処理なら安全って意味じゃない?
>>603 SendMessageはAPIの方で勝手に同期してるからどこからでも呼べる
>>606 ということは結局Invalidateはmsdnには明記されてはいないが、
スレッドセーフであるということですか?
SendMessageとInvalidate()が等価である保障はないですよね?
その点においてスレッドセーフにこだわっても無意味だといっているんだろう スレッドセーフのファンなの?
>>608 スレッドに痛い思い出もあるので注意深くなっているだけです
ひとまずスレッドセーフであるということで使っていきます。
ありがとうございました
スレッドセーフではないだろ
>>610 ならやはり他スレッドからはInvokeを通してInvalidateすべきですか?
うん 頭悪そうだし、それが賢明だと思うよ
>>612 自分は頭が悪くてかまわないので、
頭のそこそこいい、自分以外の人のためにも、
私が勘違いしているところを説明してもらえますか?
Invalidateの実装調べるかMSに聞くしかないんじゃね
>>613 .NETのスレッドセーフとWin32のコントロールが要求している同一スレッドの制限を混同しているところ
.netのバージョンによってtimerの精度に違いはありますか?
FormsのタイマはAPIで実装されてるからそっちが変更されなければない System.Timersの方は「より精度がいい」らしいけど、分解能が書かれていないので保証できない
Stopwatがいいよ
Stopwatchの中身はパフォーマンスカウンタだろう
.NETのバージョンではなく、タイマーの種類によって精度が違う
>>591 あと気になるのが、リストを丸ごと渡したいんだけど
内容は変えられたくないから、setはできないようにしているわけだけど
.Addでできちゃうのがねぇ・・・
こういう場合はcloneでも作ってコピーして渡すのかな?
その発想が怖いわ。
ReadOnlyCollectionを使います
一番精度が悪いのと一番精度がいいのは何でしょうか? あとDOBONを見ると直接APIを利用する方法も紹介されてますが.NETのライブラリから利用するより直接APIを利用するほうが安定しているものでしょうか?
MSDNて読みづらいなと思って英語でみたら すげーわかりやすい 訳さなくてもいい単語まで無理やり訳しているから あんな分けのわからない説明になっているんだな
MSDNの翻訳は利用者が採点できるようにすればいいのに 点数が低いページは修正して、翻訳者はクビで
機械翻訳じゃないの
機械翻訳の記事なら何も言わんでも自動で原文が出てくるはず
MSDN のページなら、自動翻訳の場合はそう書いてなかったっけ?
日本語ってほんと難しいなって思うよ 英語だと一つの単語で表すのに 日本語だと複数の言葉に訳せるからな constraintを制約と訳したり整合性と訳したり ただでさえプログラムは直観的にイメージしにくいのにのに 統一した言い回しをしないで訳すから余計にわけがわからなくなる
それは書く場合の話ね。 豊富な語彙の中から適切なものを選択する必要があるから。 読む場合は日本語の方が簡単。 文脈に依存する単語が少ないから
確かにそれはあるな、日本語の方が的確に言葉で表現できる でも、できる可能性があるのと理解できる、理解させられるは違うからな やっぱり日本語は難しいよ
児童翻訳
例えばさこれ テーブルに新しいデータ行を追加できます 初心者プログラマはテーブルって机のテーブル? それとも何かの比喩? データ行って何?データ行じゃない行はなんなの? こういうのは別に機械語じゃなくても普通にあるじゃない you can add new rows of data to the table. 原文だとこれ、めちゃくちゃわかりやすい プログラムは英語で書かれているし説明が直観的に理解しやすい できるだけ英語交じりで訳してほしいよな DataTableのnew rowsにDataをAddできます こんな感じ
それは流石に知能が低過ぎだろw
プログラミングでもなんでもそうだけど、専門分野における日本語は本当に混乱の素 "Class"は一般的に使われている意味とはかけ離れているのに、 わざわざ、"クラス"と訳すんだよなー 初心者からしたら、クラスって学校の?そういえば学校の喩えよくあるね、ちがうのかな? みたいにさ、わかりやすく訳せば訳すほどプログラムから遠ざかって行く感じがするんだよ
英語で読めばおk
>>634 >DataTableのnew rowsにDataをAddできます
結局理解してないじゃん
言いたいことわかるだろ? 専門用語は専門用語に準じて書いてほしいんだよ 一般的な用語に訳すなってこと
日本語でもクラスを種類とか階級の意味で使う場面もあるじゃん? 文脈を読めない人は多分日本語でも英語でもダメじゃないかなー
プログラミングにはある程度の英語力は必要だね 同僚に仕様書が英語で読めませんとか言われても困るし・・・
>>640 > 日本語でもクラスを種類とか階級の意味で使う場面もあるじゃん?
だから訳すとどうとでも取れるって言ってるんじゃないか。自分で書いててわからないのか?
> 文脈を読めない人は多分日本語でも英語でもダメじゃないかなー
プログラムの説明の文脈を理解できるのはそれこそプログラム理解しているからだろw
日常会話が理解できないから英語が無理だって言うならまだわかるが
専門用語だらけで初心者からした文脈も糞もあるかよw
お前自信が俺が言っている文脈を理解できずに見当違いなこと言ってることに気づけよ
そこらにいる奴に”クラス”って言って、階級や種類を連想する奴がどれだけいると思っているんだ? そういう幼稚な屁理屈言っているようじゃ友達もいないんだろ 揚げ足取ってはネットでご満悦ですか?
読者がアホの子設定ってこと?
>DataTableのnew rowsにDataをAddできます これで分かる気がしないんだけど何が言いたいの?
こういう当たり前なことがわからないバカが 初心者向けのプログラムの解説サイト作ったりして 全く理解できないような説明ばかりするんだろうなw 初心者にもわかりやすく伝える能力って一種の才能だよなあれは 今ここにいる奴らですら俺が言っていることが理解できていない もう初心なんてとっくに忘れちゃったおっさんばかりなのか?
>>644 プログラミングの知識がないのとアホとは別ですが?
そういうこともわからないあなたみたいなのをアフォといいます
>>645 低学歴は問題外です
まあ落ち着けよw 初心者ならまず初心者向けの本でも読めよ。無理して自分の無知を晒すなw
new rowsはtableじゃなくてdataにかかってることも分からん奴が学歴云々言うなよ
rows of dataが固まりなんすよ
一つ勉強になって良かったね☆
>>649 分かった上で書いているんですけどねw
そういうこともわからないバカが偉そうなことを言わないでね
あとその指摘はただの揚げ足だからw、論点ズレてます
文脈理解してくださいね^^
アラアラ
ばかなお前らにちょっと教えてやろうかなw あのDataっていうのは別の追加するオブジェクトって意味で書いているわけじゃないんだよ(少なくとも原文は) お前ら英語もわからない低学歴バカは機械語翻訳に翻弄されているようだなw もちろん直訳したら、データの新しい行ってことだろうけど あの原文はテーブルの新しいデータ領域という意味で書いているんだよ データの新しい行を追加って日本語でもおかしいだろアホw
つまり日本語でわかりやすく伝えるとしたら データの新しい行?ww空のデータでも追加でもするんですか?w
まだ微妙に理解できてなさそう ofの使い方について調べましょう つか家庭教師じゃないんだからいい加減にしてくれ
>>656 英語できそうですね、
>>656 の発言を英語で書いてくれませんか?
もちろん直訳や中学生英語は抜きでお願いしますよww
外人が書いたようにお願いします
1分でできますよね?w
それが人にものを頼む態度ですか? 全裸で四つん這いになって尻を突き出しおねだりして見せなさい おっと、靴下は履いたままですよー
>>656 まだですか?あの程度の英語も訳せないバカにはやっぱり無理でしたかwwwww
文脈も理解できないんですねww
だから日本語も理解できないクズPGなんですよwww
揚げ足しか取らないところをみると、友達もいなさそうですねww
だから一般的な価値観が理解できないんですね
かわいそwww
>>659 はいにげたーwwwwwwwwwwwwwwwww
バーーーーーーーーーーーーカwwwwwwwwwwww
>>652 「分かった上で書いている」のに「その指摘はただの揚げ足」って矛盾してるように見えるんだけどどういう文脈?
>>654 俺アメリカ人だけどnew rows of dataは新しいデータ行だよ。
データの新しい行?バカじゃね?
逃げたってどういうこと? 無作法な子に何も教えないのは普通ですよね? 私はあなたにまずは礼儀を汁人間になって欲しいのです
バカなお前らのためにおれが訳してやるよwwww
>>656 u couldnt understand that using about "of" search for u
u know im not tutor! knock it off!
IDないとこであばれんなよ
>>666 さすが日ごろから外人とスカイプやってるだけのことはあるわwwwww
>>666 ごめん、俺が悪かった
お前がそんなにできる奴とは思わなかった
本当は俺は低学歴の日曜プログラマなんだ
許してくれ
>>671 低学歴なら仕方ない。靴を舐めて綺麗にしたら許してやろう
は?何が起きてるの?
shut the fuck upでもいいし shut the motha fuckin upでもいいよw
今日のハイライトはここだったな
>>634 「new rowsにDataを」
新しい行にデータをつっこむ 別に間違ってないが?
codezineに書いていることってMSDNのコピペ多いな
本当人気のある言語はガキがよってくるから荒れるよなw
>>676 通常の行追加シーケンスはこう
Detached状態のDataRowを作成(NewRowメソッド)
↓
DataRowに値を設定(set_Itemインデクサ―)
↓
DataTableのRowsにDataRowを追加(Addメソッド)
行が主語なら動詞はsetになるから
あとDataTableの未使用領域は「スロット」って内部呼称だった覚えがある
そんなことはどうでもよくて、 原文の方がわかりやすいって騒いでるヤツが こんな簡単な原文すら読めてないのが なんというかもうね
どうでもいい。ツマランことでスレ消費すんな。
昔の嫌われ者、ブイビー厨 今の嫌われ者、シーシャー厨
>>682 嫌われてるかは知らんがC#の包容力は半端ないぞ。
>>634 が言ってる
>you can add new rows of data to the table.
>原文だとこれ、めちゃくちゃわかりやすい
と言っているのがよくわからないんだけど、
なんで原文だと初心者プログラマは「tableって机のテーブル?」ってならないんんだ?
和洋折衷だねぇ。 データテーブルに新しい行を追加できます。でいいような気がするけど。 MSの翻訳は多分もっと粒の大きな単位でやってるだろうから、細部にてがまわらんのだろうね。 量産されるDocumentについていかないといけないし。
別に読めるからああだこうだと揉めないでくださいよ 大丈夫 母国語と合わないだの何だの抜かす奴は遠からず止めるから
プログラムは止めるだろうけど、ぽんこつアンチとして居着きそうで嫌w
それはあるかもしれないが 煽らなければその危険は少ないはずだ
ここまで読んで分かったことは、同僚と技術的な会話をしたことがないんだろうってことだけだな。w 文章がすべてではなかろうに。
コーディングについて質問 とあるサイトだとこういう順序で書くのがいいって書いてたけど問題ないですか? * Fields * Static Fields * Properties * Static Properties * Events * Constructors * Destructor * Methods * Static Methods * Operators * Event Handlers * Classes
どうでもいい 縛られてないと不安ならStyleCopでも使ったら
問題ない 「良い」ってのは共通認識を持ってる人間の中で見やすいってだけだから それ以外の人間にとってはどうでもいい フィールド1、メソッド1、プロパティ1、メソッド2、フィールド2…とか並んでるとキモイけどな
>>690 プロジェクトによっては、コーディング規約といふものがありけるらしいので、そっちが優先。
後は、縛られるのがお好きならその方法を次点で採用すればいい。
読みやすいのが正義だと思うんだがね。
>>690 自分はそもそも、そういう単位でならべないなぁ。
プロパティのバックフィールドはプロパティの直下に書くとか、
特定のいくつかのメソッドからしか参照しないフィールドはそのメソッドと固めて書くとか。
>>624 .NETから使えるタイマーは、以下の3つ
System.Windows.Forms.Timer // 精度は荒い
System.Timers.Timer // 一般向け
System.Threading.Timer // 基本API
あとマーシャリングが必要だが、マルチメディアタイマーが使える
精度は最も高い
timeSetEvent
・Aクラスを継承してBクラスを作る ・Aクラスはpublicメソッドを100個持っている ・そのうち90個だけをBクラスでも使いたい(残り10個は呼び出せないようにしたい) って場合、それをスマートにやる方法を教えてください
またスマートやら簡潔やらうるさくなってまいりました ハァー
ちょっと間違った 誤:そのうち90個だけをBクラスでも使いたい(残り10個は呼び出せないようにしたい) 正:そのうち90個だけをBクラスでも公開したい(残り10個は隠蔽したい)
動けばいいんだよ
やる方法がありませんのでスマートも糞もありません お引取りを
>>698 90個のメソッドだけインターフェースに抽出して委譲パターンで書けよ
一手毎にアレやれコレやれで進み、どういう意味や効能があるのかが解らず挫折してたんですけど
ttp://msdn.microsoft.com/ja-jp/library/cakx2hdw.aspx 手順18で詰んだ。
InformationForm の分離コード ページで、InformationForm クラスに次のコードを入力して、UserInformation プロパティを追加します。
以降を噛み砕いた日本語で教えてください。なにをすればいいのかが解らなくなってしまいました。
つか、チュートリアルの例題なのに、なんですか!この難易度。
一般的手法なんでしょうか?これ。知恵熱出そうです。
やっぱ無理っすか C++みたいにprivate継承もないし、newを使えば偽物と書き換えられるけど隠蔽は出来ない 継承ではなく包含にして公開するメソッドを90個書き直してスーパークラスへリダイレクトするしかないか
>>701 ですな・・・めんどくせえええええ
1個だけ隠蔽したいのに99個書き直しとかめんどくせえええええええ
しねしにさらせ
>>702 挙がってるコードをInformationForm.csに書けばいい
スーパークラスに90個メソッドの実装書いて AとBそれぞれに継承させれば
A、Bが絶対親子じゃないといけないってんなら無理だけど インターフェースで包含に書きなおせるなら抽象クラスが親でもいいだろ
スーパークラスを自分で弄れる仕様ならいいけどね みんなお仕事だからいろいろ大変なんだよ
>>702 そもそも何を作ろうとしているチュートリアルなのか分かってっか?
え、お仕事なんて居るのこのスレ? さっきまで低レベルなエングリッシュ談義してたのに
711 :
デフォルトの名無しさん :2011/10/16(日) 22:29:50.23
newで上書きして例外放り投げたら宜し
>>711 呼べるのに呼ぶと例外投げるメソッド公開しているクラスって馬鹿っぽくね?
713 :
デフォルトの名無しさん :2011/10/16(日) 22:31:48.11
そんなことないよ NotSupportedExceptionの立場を奪わないで!
うーん・・・理屈は分かるが腑に落ちない
100個のメソッドとか、最高に使いづらそうなクラスだ
BindingListなんかソートをサポートしたい時は継承してください って言ってNotSupportedExceptionを平気で投げる 一応ソートするような枠組みだけは用意してある でも一般的には不要だったり、コストが大きかったりってこともある
>>712 配列がAdd呼べるとか、継承階層がうまく作れない(作ると複雑になりすぎる)場合によくある手。
ありがとうございます、NotSupportedExceptionでいくことにしました
Obsolete以外に呼び出されたらコンパイル時に警告/エラー吐く属性ってまだないっけ? そろそろ追加されても良いと思うんだが
>>702 初心者はWinFormよりまず文法からだと思うけど
インテリセンスに表示されないようにできたよね?それやっとけば使われにくい
[EditorBrowsable(〜.Never)]だな
724 :
デフォルトの名無しさん :2011/10/17(月) 00:21:24.95
なんで、List<T> にしか、ForEach がないのかだれか教えてくれ。
ラムダは1次元配列にしか対応できないから
IEnumerable<T>の拡張メソッドにならなかったのは副作用だかららしい いくら実用主義と言っても関数型的なLINQの中にForEach入れるのはどうしても許せなかったんだろ
>>724 今では賛否両論だけど、LINQ に ForEach たさなかったのは、
メソッドチェーンで副作用のあるコード書くのを嫌ったから。
じゃあ、逆に、なんで List にだけあるかというと、
List の場合は foreach ステートメント(外部列挙)するより、
内部列挙(ForEachにラムダ式渡す)の方が実行効率ちょっとだけいいから。
ちなみに、配列に対する foreach ステートメントは for(var i... 相当のコードに最適化されるので、ほっといても効率いい。
>>702 あぁ それってば、きっと
public UserInformation
エラー1クラス、デリゲート、列挙型、インターフェイス または構造体が必要です。
のエラーだろ?
プロパティの記憶用の変数を設置する部分が飛んでいるようです
とyahooでググレばあなたに幸せが訪れるかも。知らんけど。
関数型の思想がどうっていうより、クエリとその結果の利用ははっきり区別しないと ものすごいわかりにくいコードになると思う ForEachが使えたら全部ForEachになってしまうだろうし
LinqのAggregateは一般的な集計関数と言うことで、 ForEachでやりたいことの一部をやってくれるよ。
731 :
デフォルトの名無しさん :2011/10/17(月) 01:06:13.17
HashSet<T> で独自クラスを重複なく管理させたいんだが、 どうすりゃいいの?
GetHashCodeとEqualsをオーバーライドする 構造体ならIEquatable<T>も実装する
733 :
702 :2011/10/17(月) 01:16:53.83
サンクス なんだか同じところで躓いてた人を見つけました。もう視力と気力が衰えてきたので明日頑張る。
>>702 超絶技巧上級者向けだから、そんなの初心者は理解出来なくても問題無いな。
演習の中に解説と指示が入り乱れてるから、凄く読みにくい。
ある程度解っている人がさらっと復習に読めば流れとしては解るって内容。
初心者とか中級コピペマンがそのまま使おうとすると端折った部分があって使えない。
物凄く初歩的かもしれないんですが WindowsフォームアプリでConsole.WriteLineで出力した文字列は どうやってみればいいんでしょうか
出力ウィンドウがいつの間にか閉じていました リダイレクトも良さそうですね 合わせて感謝します ありがとうございました
>>734 でも人のコーディング見せてもらうのは勉強になるよね。
直接的なロジックだけじゃなく、エラー処理の部分とか変数の名前の付け方とか。
そこに分かりやすい日本語で解説が付けば言うこと無い。
カスタムコントロールを使っていてエラーが起きたりを繰り返していると 気づいたらデザイナーのところにDataGridViewのカラムは500個作られていたんだが こうい症状になった人いる? あと、カスタムコントロールを削除したのに、見た目上削除されただけで デイザイナーのときにはしっかり残ってたり SP1にしてからこういうことが頻発しているんだが・・・
一つのカラムが500個で10列あるから5000個無意味に作成されてる
>>739 カスタムコントロールだけじゃなく普通のコントロールでもあるよ。
それ以来、時々デザイナはチェックしてる。
それと削除するときはDelキーは使わず、コンテキストメニューからするようにしてる。
アドオンのProductivity Power Toolsこれだ・・・ これが入っててカスタムコントロールがあると 削除とかしなくてもデバッグするたびにコードが増えていく 使い勝手のいいソフトなのになー仕方がないか
あ、だめだProductivity Power Toolsがなくても コードが増えてる、もうほんと面倒くさい
カラムがどんどんふえりゅうぅううううううううっぉおおおお とまらにゃいのぉおおおおおおっぉおお おほぉぉおおおほぉおおおおおおおおおおおおおお
コードが増えて良かったねせつこ
もしかしてDataGridViewを継承したクラス側で 事前にカラム設定しているのがだめなのかな
事前にって何のイベントよ コンストラクタなら何べんも実行されたりしねえし
MathクラスにintやdoubleのMinやMaxメソッドがありますが、ジェネリクス版はないんですか? あと、DelphiにあったInRangeやEnsureRangeと同じメソッドがあったら教えて下さい。
どれもない 上の方は(T)((dynamic)x > (dynamic)y ? x : y)とかで実装できないこともないけど遅いのでお勧めはしない
IComparableとか制約つければいいんじゃね 綴りの自信ないけど
>>747 イベントとかコードは何も書いていない
ただ、デザイナー画面でカラムを作っているだけ
そして、カスタムクラスのデザイナーでDataGridViewのプロパティいじったり
フォーム側のデザイナーでDataGridViewの設定をいじったりして
ビルドするとカラム生成のコードが複製される
それが実際にForm側のDataGridViewにデザイン時点でも表示される
ほっとくと何百個のカラムができる
TabPage下にあるTextBoxコントロールにアクセスする方法ってないですか? 並び替えできるようにしてあるのでTabPageのインスタンスだけ並び替えてもTabPage下にあるTextBoxコントロールはそのままなんです
しらんけどtabpages[2].textBoxみたいな感じでできるんじゃないの
SortedListとか使ってキーの重複とか苦労してたんだけど ふとLinq使ったらあっさり解決した、 いままで何この構文ゴミだとか言っててすみませんでした Linq始まりすぎ
755 :
デフォルトの名無しさん :2011/10/18(火) 15:38:15.52
childとかなかったっけ? というかMSDNのクラスの説明とか読めよ あとインスタンスを管理してる変数の後ろに.つけて上からすべて説明見ていけば・・・
756 :
デフォルトの名無しさん :2011/10/18(火) 15:47:10.94
>>755 は
>>752 へだったけどchildじゃなかった
サンプルプロジェクト作ってtabControlを配置して最初から付いてる2ページのうちの
片方にTextBoxを置いた上でShownイベントに以下のコード書いたらOKだった
TextBox t1 = (TextBox)tabControl1.TabPages[0].Controls[0];
あとは自分でやってくれ
>>756 ありがとうございます。まさしくこれです
Controlsでアクセスできるんですね。今までAddメソッドしか使ったことしかありませんでした
取扱説明書を読まずにコールセンターに文句を垂れるチュプみたいだ
759 :
731 :2011/10/18(火) 18:45:33.07
>>732 おかしい・・・GetHashCode も Equals もオーバーライドしてるのに・・・と
思ったら、 Equals がバグってた。
恥ずかしいよ、ママン。
サンキュー
760 :
デフォルトの名無しさん :2011/10/19(水) 09:12:04.73
一般的に日本語の変数名ってあり? 動作的には問題ないと思うけど、 文化的には見ないよね。 今やってるので、コンスタントの定義で 日本語使うほうが下手に英語にするより わかりやすいとこがあるんだけど。 あんまり見たことないなと思いまして。
普通にあるじゃん列挙とか
>>760 IntelliSenseめんどくない?
>>762 日本語変数だとインテリセンスがらくになるかと。
日本語変数なんてどんな誤動作するかわからなくて使えねぇ
インテリセンスを楽にしたいなら、ハンガリアン使いまくれよ
種類毎に頭に何かアルファベットをつけるといい感じになる
右下からにょきってでるのんどうすりゃいいん
>>760 10年も前だと、日本語使うといろいろ不具合でたからねぇ。
C# と SQL Server 使ってる限りには日本語変数/日本語テーブル使って不具合出てる人見たことがなく、
C# なら普通に日本語変数使うよ。
ただ、インテリセンスとの相性悪い(いちいち IME オンにしないと補完候補にたどりつけない)んで、
ローカル変数とかだといまいち使いにくい。
定数とか列挙型のメンバーで使われるのは、どうせ 型名. を打って、その後一覧から選ぶだけだから。
>>764 C# は Unicode 策定後にできた言語だから大丈夫。
O/R マッパーとか使ってない限り(あるいは相手が最近の SQL Server な限り)まず誤動作ない。
TabControl的な切り替えをボタンとかComboBox使ってやりたいんですが、 どこかにサンプルとかありませんか?
サンプルも何も、ClickイベントやSelectedIndexChengedイベントでも使えば良いじゃね?
>>770 フォームやる前に覚えなきゃならないことあるんじゃないか?
一歩進むたびに質問してるだろw
773 :
デフォルトの名無しさん :2011/10/19(水) 16:55:41.21
>>770 2chブラウザの作り方をブログで公開してた人がそれっぽいことをやってたな
Win7のイベントログにレベル重大のイベントを出力したいのですが、以下のコードで出ません。 # レベルをクリティカルでイベントログに出力するコード TraceSource source = new TraceSource("MySource", SourceLevels.All); source.TraceEvent(TraceEventType.Critical, 7743, DateTime.Now.ToString()); # App.configに以下のXMLを追加 <system.diagnostics> <sources> <source name="MySource"> <listeners> <add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="TmpEventSource" /> </listeners> </source> </sources> </system.diagnostics> # 管理者権限のPowerShellで、イベントソースを登録 PS > New-EventLog -Logname Application -Source TmpEventSource 上記だと、CriticalでもErrorでも同じ「エラー」イベントになります……
List<Hoge> foo = list; int idx = hoo.FindIndex(n=>n.value == (Hoge)hoge.value); で取ったインデックスに、 if (idx > -1 && idx < hoo.Count) hoo.RemoveAt(idx); ってするとたまにOutOfRangeExceptionが起こるんですが、 一体どういう事なんでしょうか 存在するインデックスをとって、範囲内か再度チェックしてるのに、 なおダメってイミフ 500回に一回くらいの割合で起こるので再現性がとても低いです・・・
fooとかhooとかhogeとか何だよ
>>775 考えられるのは、
Idx==(List.Count-1)の時に、なにか一個を削除したらIdxを更新しなければ、
そのIdxでインデックサ使うとOutOfRangeじゃないかな。
if (idx > -1 && idx < hoo.Count) hoo.RemoveAt(idx); これがループの中にあったりして
別のスレッドからもいじってたりはしてないよね?
780 :
デフォルトの名無しさん :2011/10/19(水) 21:34:27.37
本当にその行で落ちているかを検証してみるのも乙 偶に思い込みってのもあるからね
removeAtしたら一回ループ抜けないとねー 下から消していくのもあり
インデックス取ったらすぐRemoveなんです 他のスレッドからのアクセスが邪魔してるのかと思って、 lock (lockObject) {} で囲んだりした結果がこれで・・・ もしかしてlock(foo)じゃないとだめだったり?
そういう場合はremoveatしないで もう一個Listをつくってそっちに削除したいの以外をadd していったものを使うようにすればいいぞ 富豪的プログラミングだ
いや複数のスレッドからアクセスしてるのかしてないのかどっちだ それでおかしくなるってことは他のスレッドからコレクションを変更してるんだから 取得だけでもロックしないと死亡
785 :
デフォルトの名無しさん :2011/10/19(水) 21:54:56.63
>>783 リムーブ候補のインスタンスを並べたリスト作って
後でまとめてリムーブすればいいだけちゃうの?
786 :
デフォルトの名無しさん :2011/10/19(水) 21:56:11.82
あといろいろ気になるのがfooがでてきたのにhooになってるんだがこの辺大丈夫?
>>780 デバッガさんはRemoveAtでコケるって言ってる
>>783 ,785
なるほど、試してみます
>>784 2スレッドくらいで同時にやってるはずです
lockステートメントで囲んだだけですが一応・・・
>>786 それは大丈夫です、コピペしたわけではないので
だったら排他制御がちゃんとできてないのが問題なんだろ 別のList使うのは直接の解決にはならん 他にもコレクションを変更してる箇所があるならそこもロックする
ソース全部貼れ
790 :
デフォルトの名無しさん :2011/10/19(水) 22:10:52.70
もうちょっと全体像が見えないと局所的な対応してもなあ
lockはアクセスする全ての箇所でやらないと無意味ってこと分かってる?
そんなのわかってるよ
793 :
デフォルトの名無しさん :2011/10/19(水) 23:33:44.92
うん
スレッド間で操作するなら、C#4.0から追加された、 System.Collections.Concurrent;にある、BlockingCollection とか使えばいいんじゃないの?
別にブロッキングは必要ないはずだからConcurrentBag<T>かな
796 :
795 :2011/10/20(木) 00:32:21.92
いや特定の条件に一致する要素を削除するんだからSystem.Collections.Concurrentでは無理か やっぱり普通のコレクションで普通にロックだな
>>751 だけど、いい加減うざいのでカスタムコントロールも
削除して、フォームのカスタムDataGridViewも削除して
元のDataGridViewを張り付けてやったら
今度はあらゆる自作クラスが競合してるとか大量に出るようになったwww
ここ数日まともにプログラム打てず、自動生成のバグ修正ばっかりやってるわ
これはもう一から作り直したほうが早いのかww
MVP勉強しているんだけど modelクラスがVIEWに対して データ変更通知をするっていうのがどうも納得できない 変更通知はPresenterクラスにするべきじゃない? Viewを意識するのは一つのクラスにしたいんだけど
>>788 それはネットワークプログラミング板がいいんじゃね。
ここはC#言語だから、ASPの中のC#部分の質問ならOKだけど。
801 :
774 :2011/10/20(木) 10:04:59.64
仕方がないので、EventLogTraceListenerをReflectorで追ったら if ((severity == TraceEventType.Error) || (severity == TraceEventType.Critical)) { instance.EntryType = EventLogEntryType.Error; return instance; } ってなっていたので、TraceSourceでCriticalにしても、.NET FrameworkのEventLogTraceListener の中でErrorに丸められてイベントログに出るという落ちでした。 ウワワァン、俺の数時間が……
>>798 ビューとモデルの間に直接の関連を持たせない流儀もある
本来のMVPはモデルがビューに通知する形で、その方がよりMVCに近い
>>799 MVPはクライアントだけでも完結するパターンだよ
C#というより、.NET Frameworkの質問なんですが、 System.XML.XMLDocument を、System.Xml.XmlWriter で保存する際に、 テキストノードの\n改行も、
などとエンティティ化して 保存することは出来ませんか?
804 :
デフォルトの名無しさん :2011/10/20(木) 12:18:10.39
System.Xml.XmlWriterでいきなりファイルに出力するのではなく メモリストリームに出力して、出力結果の中の任意の文字を置換した後 ファイルに出力すればいいかも
最近勉強しはじめたんですが メインウィンドウのフォームと 設定を保持するプロパティクラスと 設定を変えるセッティングフォームの3つを作成して メインフォームでプロパティクラスとセッティングフォームのオブジェクトを生成し メインフォームでプロパティの値を使って処理している場合 メインフォームからセッティングフォームを開いてセッティングフォームからプロパティの値を利用したい場合どうやったら扱えるのでしょうか?
806 :
デフォルトの名無しさん :2011/10/20(木) 14:46:25.02
ぷろぱちいクラスのインスタンスを共有すれば?
インスタンスを共有というのはプロパティクラスをstaticで宣言すると言うことでしょうか?
違います
C# インスタンス 共有 でググって見たのですがstaticに関するものが多く出てくるのですが インスタンスの共有というのはどういったものなのでしょうか?
810 :
デフォルトの名無しさん :2011/10/20(木) 15:27:45.14
セッティングフォームにインスタンスの受け渡し用メソッドでも作って セッティングフォームを開く前にでもいいのでメソッドから渡すでもいいんじゃね?
だからまずコンソールアプリで文法理解しろよ いきなりフォームアプリ作ろうとするなドアホ
いやここで文法は関係ないだろ 設計の問題なんだから
あの感じだとインスタンスが何かっていうのもわかってなさそうだぞw
インスタンスラーメン
まあこのスレは初心者用なんだけどな・・・ 他人にアホ言って精神安定を計る奴はどこか行けよ
インスタンスはわかってます フォームとか言うとアレみたいなんで Aで作成したBとCのオブジェクトで Bの処理の中でAで作成したCにアクセスするにはどうしたらいいのかわからないもので・・・ Bを開く時にAで作成したCのオブジェクトを引数として渡してみたんですがうまく行かなくて・・・
>>817 だからーAのオブジェクトをBで使えばいいだけだろバカ
ほんとばかだなー具体的にわだなー class A { this.b.a=this; } こういうことだよバカ
>>819 しょうがくちぇいでちゅかぁ〜〜?www
>>818 BでAのオブジェクトを使う方法がわからないって書いてるのに
BでAのオブジェクトを使えばいいだけだろバカって
お前もバカだろw
>>824 そうか・・・バカならしょうがないな・・・
回答する側が初心者のスレwww
間違ってませんが?
定期的にバカが沸くスレ
832 :
デフォルトの名無しさん :2011/10/20(木) 16:16:26.05
しまった ガンダムにちなんでageないとww
>>831 まあ、こういうことする奴いたらブチ切れるけどなw
834 :
デフォルトの名無しさん :2011/10/20(木) 16:19:49.28
>>820 class A
{
B b = new B();
C c = new C();
this.b.ab=this;
}
class B
{
public object ab;
}
class C
{
public int cd = 5;
}
という状態で
classB内のメソッドで
ab.c.cd
と使おうとしても使えないのですが
どう使ったらいいのでしょうか?
>>835 classをpublicにしろよボケナス
お前は先に文法学べっていってるだろチンカス野郎
単純に参照したいものが、パブリックになっていないだけじゃないの?
>>836 classは3つともpublicです。
>>820 のコピペそのままで手抜きしてゴメンナサイ
>>817 Form1からForm2やForm3にコンストラクタやプロパティで共有するインスタンスを渡してやるか、
あるいはアプリの設定みたに一個しかインスタンス必要ないのなら、
どっかのクラスにpublic staticで置いてやればいいんじゃないか?
求めてる事と違ってたらごめんね
>>841 UpdateSourceTrigger
>>840 設定ファイルに保存されたプロパティの値を持ったインスタンス1つを全てのクラスで利用したいので
アプリの設定みたいに1個しかインスタンス必要ないものと同じですね
プロパティを保持するクラスの変数をpublic static にしてやってみます
845 :
デフォルトの名無しさん :2011/10/20(木) 16:47:29.95
ID欲しいお・・・
>>844 セーブデータ直接弄りまくるのか?バカじゃねーの?
>>835 abがobject型だからそれを変えるかキャストするとか?
>>846 プロパティクラスがxmlから値を取得して
基本は設定変更用のフォームからのみプロパティの値を変更して保存
他のクラスからはプロパティから値を取得するだけ
っていう状態です。
>>848 プロはどうしてるかっていうと
そういうデータはフォームには持たせない
フォームを表示させる別のクラスでデータを保持する
この方が簡単なわけだが、今のお前には無理だろう
別にプロじゃなくてもそれが普通だろ
>>847 abをオブジェクト型以外にすることは可能なのでしょうか?
クラスのインスタンスが入っているのでobject以外でできないものだとばかり・・・
>>849 フォームではなくプロパティクラスに持たせてフォームはそこから値をgetアクセサで取得するのですが
そういうことではなくてですか?
>>851 フォームで設定するんじゃなくて別クラスで設定するんだよ
class A
{
Form form1=new Form();
form1.Propaty=obj.Form1Propaty;
form1.Show();
}
よくブログでC++とC#の速度比較みたいなことやってるとこあるけど C#に無理やりポインタ使って同じ処理させてるよな C#は下手にポインタ使うよりライブラリ使った方が高速なのに
>>849 なるほど
今までエントリポイントで作ったFormインスタンスから、
別のクラスを実体化させて弄ってたけど
メインクラスを作ってそこでApplication.Run()すればすっきりするんか・・・
いい事聞いた
HoNToKaNa-??
>>854 フォームもセーブデータを入出力するクラスもすべて
支配下におく親クラスを作る
その親クラスで仕事を各クラスに分担させる
Application.Run() わろす。その発想なかった。
>>854 全体のコード量は増えるがその方がわかりやすい
データの受け渡しも直接渡す必要はない
参照を渡すだけなんだから極端に速度が落ちるわけでもないからな
間にいくつか挟んでもいいんだよ
>>854 staticなProgram.csの存在を忘れていないか?
WPFの場合もプロジェクトのデフォルト設定じゃなくて public class Program { [STAThread()] public static void Main(string[] args) { Application app = new Application(); Window win = new Window(); app.Run(win); } } みたいにするの? だったら自動生成機能いみないやん・・・
釣りだろ…… マジなら恐怖すら感じるわ
そういうテンプレを作ればいいだけじゃん。テンプレ作るの簡単だよ。
Invokeって、デバッグ中と実際のexeでは随分挙動が違うよね? デバッグ中は変なエラーが出てるのに、exeでは出ない。 そういうもんなの?
ちょっと不安になってきたから質問させてくれ 規模の大きなアプリケーションを作ったことないんだけど(プロの人なら1時間程で組めると思うもの) Program.cs - エントリポイントと各クラスで共通しているもの(テンポラリファイルパスとかカレントディレクトリパス)を書く Form1.cs - メインフォーム、各コントロールのイベントハンドラや外部から触らないといけないインスタンスを返すプロパティとか書く Class1.cs - 文字列やファイル処理処理したり、Formから呼び出されるのを前提で書く こんな感じでいつも書いてるんだけど、これでいいの?
コード量によるけどFormの中に全部書いちゃうかも 好みだと思うよ もう少し大きいなら分離する意味もあるだろうが
>>867 こういう質問しちゃうようなひとは汎用的な自作クラスを持ってないはず
初めから機能別にクラス分けを学んでいった方がいい
SoueceForgeにあるような比較的経験豊富な人が書いてそうなソースも、 エントリポイントはフォーム作ってるだけみたいなの多いけど、 ホントに親クラスでごちゃごちゃやるもんなの? でもC#で飯食ってる人の方が正しいか・・・
>>869 ごちゃごちゃしないために親クラスで処理を仕分けするんだが?
フォームにごちゃごちゃ書きたいならそうしろよw
上級者があえてそうしているのは意図が違う
お前と一緒にするな
上級者気取りの間違いだと思うけどなあ
今は静的クラスが便利すぎるから、その辺の管理は静的クラスでやるのも手。 どこからでも呼び出せるから楽。 後からの変更で、状態を複数持つ必要性がでると、やっちまったぜ!感があるけどw
静的クラスはコスパが悪い できるだけやらない方がいい
コスパってw
(´・ω・`)
そろそろボロが出てきたから去るわw
去れ去れ
コスパ最強のクラスを教えてください
Class A{}
一回作れば次からコスト0だなw
883 :
866 :2011/10/20(木) 19:30:24.73
みんなありがとう。
>>868 さんの言う通り汎用な自作クラスは持ってないんだよね
みんなが言ってる親クラスってMainメソッドがあるクラスのこと?
静的なメソッドで静的なフィールドを処理すると、動作効率がいいんじゃなかったけ? 静的クラスは知らん。
staticはほとんど使わない。 staticおじさん
>>884 用途次第。場合によっては、参照局所性落とすだけ。
ということで、あんまりパフォーマンスに焦点あてて考えちゃダメで、
要件として、シングルトンであるべきかどうかで、静的にするかどうか決めなきゃダメ。
テメェもstaticにしてやるぜ
個人的にはシングルトンを静的であることで保証するやり方は何か違う気がする。
889 :
デフォルトの名無しさん :2011/10/20(木) 19:59:45.80
静的ないたずら
ここがデザインパターンスレですか?
staticの使い分けがよくワカンネ。 誰か教えてケロ
ネトウヨ王に、俺はなる!まで読んだ。
894 :
デフォルトの名無しさん :2011/10/20(木) 20:28:13.34
WindowsForm アプリケーションを作成しています。 そこで、フォームの画面イメージを簡単に印刷できるようにしたいのですが可能でしょうか。 (カラーorモノクロ、かつ用紙の向きの縦横を選択できるようにしたいのでボタンを押したらプリントダイアログを出すようにしたい) よろしくお願いします。
いいえ、MonkeyMagicです
>>891 FileとFileInfoの違いとか
ごめん、見当違いでしたね
897 :
デフォルトの名無しさん :2011/10/20(木) 20:55:22.68
>>891 使い分けつうか大半のケースではstatic使わないでしょ
ゲームなんかでたくさんのオブジェクトの回収するのに共通の状態遷移を
通知したりするとものすごいコストになるかもしれないのでそういう場合は
staticで確保したエリアに次この状態ねってセットしてオブジェクトレベルで
処理させたりするけどなあ・・・
まあ弾幕ゲーのような大量のオブジェクトを扱うロジックとかやると 必要と感じるかも?
そんなのstatic使わなくても管理できるだろ むしろstatic使ったほうがややこしいわ
900 :
デフォルトの名無しさん :2011/10/20(木) 21:04:17.24
>>899 アニメーションパターンや弾幕の軌道その他の制御をするために
共通でみるカウンター
とかさ
1:nの当たり判定とかさ
一部はstaticであった方がいいケースが多い
ゲーム全体で一つやステージごとに一つならいいんであって 別にstaticじゃなくてもいいでしょ 当たり判定でステージごとにstaticメンバを初期化するんなら ステージオブジェクトに管理させたほうがスマート
902 :
デフォルトの名無しさん :2011/10/20(木) 21:11:44.14
俺の例の否定はいらんよ もっといいのがあるなら実例踏まえた代案だしてやれよ 日本人ってけなすのはやるけど提案はしないよな
いろいろまとめたインスタンス渡すとか必要なものだけ渡すとか DI使うとかいろいろあるよ
俺はエラー・進行通知に静的クラス+静的イベントを使っているけどなぁ・・・。 静的メソッドを叩くとイベントが発動する奴。 気軽にどこでも呼べて、簡単なのなら十分だよ。
ゲームはそれ自体ループさせてやるものなんだから その中でstatic使うとか正気の沙汰とは思えないな コスパ悪すぎる
>>904 それいちいち全部-=しないとメモリリークするよ
staticなんてたまに使うもので処理速度関係ない場合しか使わない 処理速度を必要とするループの中にstaticなんてありえないな
char* hoge() { static char ret[100]; strcpy(hoge, "hoge"); return ret; }
909 :
デフォルトの名無しさん :2011/10/20(木) 21:33:50.75
否定だけはいらないって否定するのなら改良ロジックも提案しろって
910 :
デフォルトの名無しさん :2011/10/20(木) 21:35:37.00
インスタンス化しなくても問題無いメソッドをstaticにすること有るな
staticは基本的に使うべきでないと思う。特にフラグ類。 状態を管理するクラスのインスタンスで管理すればいい。
912 :
デフォルトの名無しさん :2011/10/20(木) 21:54:56.31
だからそのクラスのインスタンスを数千も作るオブジェクト全部に渡すのって話
インスタンスの生成はstatic使う
それくらい渡せよ そんなとんでもなく大量に作って高速に処理するなら それぞれのオブジェクトに振る舞い持たせたりしないでCのように作ればいい
915 :
デフォルトの名無しさん :2011/10/20(木) 21:59:51.14
構造体使えばいいだけの話
毎秒100回くらいSoket繋いだり閉じたりすると1分くらいでコケちゃうんですが、 何が悪いんでしょうか sock.connect() sock.send() sock.recieve() sock.close() sock = null してるだけです netstatで見てもFIN_WAITもCLOSE_WAITもありません TIME_WAITが何百個かある感じです
918 :
デフォルトの名無しさん :2011/10/21(金) 00:31:04.27
disposeはないんだっけ?
>>797 この原因やっとわかった
フォルダプロパティでインデックス検索にしているのが問題だった
ファイルを消しても前のファイルを参照しているようでそれで変になってた
あと、なぜか自分自身を参照設定に加えてたw
>>917 ソケットの方じゃなくて、スレッド数多すぎてスタック用のメモリ不足で死んでるとかは?
recieve じゃなくて非同期版のメソッド使うとどう?
staticってよく分からず素通りしてきたが、 改めて調べてみたら、「静的」と言うから分かりにくかったんだな。 「クラス変数」「クラスメソッド」って説明に出会って、やっと理解できたような気がする。
インスタンスメンバの方が分かりにくくね staticなんてMyClassクラスのMyStaticMethodなら クラスとか関係なく単にMyClass.MyStaticMethodという名前の関数だと思えばいい
924 :
デフォルトの名無しさん :2011/10/21(金) 17:58:36.70
staticって昔から効能はそれほどかわってないでしょ 関数が呼ばれる際前回呼ばれた際も考慮に入れて動く場合とかさ
その昔、スタック変数を動的、グローバル変数やモジュール変数を静的 と呼び習わしていたころの名残り
デリゲートと比べれば屁みたいなもん
グローバル変数って何だっけ?一番ルートで宣言した変数だっけ? C#でもそういう言い方するのかな? C#でグローバル変数にはstatic付けるべき? 初心者?攻撃スマソ
C#でグローバル変数はないんじゃないの?
public staticな変数
930 :
デフォルトの名無しさん :2011/10/21(金) 19:26:40.91
スコープの関係でどこに置くかもあるんじゃないの?
コレクションにFindを実装したいんですが、どのインターフェイス継承したら使えますか?
>>931 自分で実装しなくても、
using System.Linq; して、Where とか First とか FirstOrDefault で終わり。
IEnumerable<T>って答えるべきなんじゃないの?
そう答えるべきならそう答えればいいだろ 疑問形にしなくてよろしい
なんだこいつ
どこかのJavaのサイトに「staticはオブジェクト指向的には逆行するから、 なるべく使わないほうがいい」なんて書いてたが、 なんでもありのC#ではそんな野暮なこと言わないよな?
拡張メソッドとラムダ式のお陰で、むしろstatic中心に回帰してしまった……。
>>936 そういう教条的な問題じゃなくて、テストが面倒なんだよ
ダメなのは変化する状態をstaticフィールドに持たせることで、
それをしないなら静的メソッド使いまくっても全然構わない
>>937 もともと、内部状態変更せず、かつ、public なメンバーにしかアクセスしないようなものは
OOP であっても static にすべきだったと思う。
問題になるのは、static 変数の状態をそこら中から書き換えること。
内部状態持たない、pure(同じ入力与えたら必ず同じ出力得る)な static メソッドは無害。
メソッドにもconst付けれるようにしようぜ
C#のラムダやデリゲートはあくまでオブジェクト指向の補助でしかない 基本的にはちゃんとオブジェクト指向で設計しないと
C#は関数型を取り入れているというなら尚更staticフィールドを変更するのはいかん オブジェクト指向より関数型の方がずっとそういうのに厳しい
>>939 >public なメンバーにしかアクセスしないようなものは
ではなく、「メンバを使用しないメソッドの場合」 (=内部状態変更されない)ですよね。
実際、VS で メソッドスタブ作らせたり、リファクタで メソッドの抽出をすると
上記の場合には static が付与されたメソッドが生成されるし
FXCop でも そういうメソッドの場合 "static なメソッドに変更しましょう"という警告を出してくる。
ReShaerper や CodeRush もソレに倣ってるので 同様の注意勧告をしてくる。
通信関係の処理で、 非同期関数を用意して AsyncFunction( delegate() { //hogehoge }); みたいにするか スレッドを用意して同期関数を呼ぶか で迷ってる javascriptの経験から言うと前者で気持ち悪くないんだけど C#だとスレッド用意するのが普通なの?
前者が今風 Taskとか最近追加されたAPIはほとんど継続使うようになってる 次のバージョンのC#では非同期関数を同期関数のように呼べる機能が追加される
>>943 それはもちろんのこと、追加で。
LINQ がらみの操作なんかがまさにそうだけど、
全部インターフェイスに対する静的メソッドで実装されてる。
ああいうのは、静的メソッド使うほうが向いてる。
>>944 JavaScript 的な感覚で言うと、
Promise に相当するもの(Task クラス)を返すメソッド書いて、
こいつ使って継続処理するのが今後の主流。
質問です。 ラベルのBackColorをTransparentにしたのに、 ラベルに隠れた部分が隠れたままです。 どうすればラベルの下が透けて見えるのでしょうか?
Parentを下にあるコントロールに設定する WinFormsの背景透過は無理矢理それっぽく見せてるだけで、どうしてもおかしくなるところはある 本当に透過させたいならWPFへ
>>949 ありがとうございます。でも駄目だった。
Parent設定したほうのコントロールが消えちゃう。
やり方悪いのかな?コンテナつーのもよく分からないし・・・
重ならないように、デザイン考えたほうが速そうだwww
951 :
デフォルトの名無しさん :2011/10/22(土) 14:12:25.85
winformならあなたの所望することはたぶん無理と思いますよ winformそこまで考えられてないので やるとすればgraphicsを駆使して自分で書くしかないかも でどういうことをしようとしてたの?
何をするかわからないのに無理とか言っちゃうおまえの脳みそが・・・w
>>951 pictureBoxの画の上にラベルを重ねて動的に文字を出したかったんだけど、
画を隠さずフォントだけ重ねたかったんだけど。
WPF勉強してみるかなあ。
WPFってデザイナ部分がXAMLになっただけ?
C#のプログラム的にはWindowsフォームと同じですか?
これをConsoleじゃなくて、System.Windows.Forms.Textbox.Textに書きたいんですが
http://ideone.com/XWFmK これそのまま移植した感じで大丈夫でしょうか
それともStrategyがFormクラスから直接見えるのは不味いですか?
>>953 それならPaintで画像に文字だけ書くことをやるだけで十分じゃね?
まぁ、WPFの方がスマートに出来るけど。
WPFはレイアウトの仕方の考え方など様々な考え方が違うから気をつけて。
なれると、Windowsフォームで作りたくなくなるよ。Windowsフォームは自由度が低いので。
956 :
デフォルトの名無しさん :2011/10/22(土) 16:24:59.63
>>953 GUI周りはかなり違う
pictureboxならなんとかなるかも
>>954 何がしたいのかよく分からん設計
AddedLogかMethodのどっちかだけでよくね
イベント使うならストラテジの差し替えは要らんし
958 :
デフォルトの名無しさん :2011/10/22(土) 16:47:11.70
>>954 Textbox.Textに書きに行くのはいいけれど、たぶんやりたいはずの、
異なるスレッドからアクセスだと、動かなくなる。
こんな感じするといい。
TaskScheduler UISyncContext = TaskScheduler.FromCurrentSynchronizationContext();
void AddMessage(string text)
{
Task reportTask = Task.Factory.StartNew(() =>
{
textBox2.Text += text;
},
CancellationToken.None,
TaskCreationOptions.None,
UISyncContext);
reportTask.Wait();
}
960 :
デフォルトの名無しさん :2011/10/22(土) 18:16:35.12
コピペマン参上!まで読んだ。
C#関係ないし・・・
正規表現について質問します C#の正規表現を使うには Regex r = new Regex(@"正規表現"); Match m = r.Match(検索対象); という風にインスタンス化してヒットさせる方法と Match m = Regex.Match(検索対象, @"正規表現"); と2つあるみたいなんですが、 前者と後者の違いってなんでしょう?スタティックであるかないかだけですか?
>>963 正規表現って、与えられたパターン文字列をコンパイルして、
内部的な状態遷移マシンに変換してるんだけど、
インスタンスだとそのコンパイルは1回きり(インスタンスを保持し続ける限り)だけど、
static な方だと毎回コンパイル必要になるんじゃないかな。
内部的にキャッシュとかしてくれてるかもしれないけども。
画像のチョイスが渋い
>>967 2010 Expressなんだけど、ドキュメントアウトラインってどうやって表示するの?
表示−その他のウィンドウ にないし、カスタマイズでも見当たらない
970 :
デフォルトの名無しさん :2011/10/23(日) 12:20:57.50
センスないやつはほんとセンスないよな 何年経ってもくっそみたいなUIwwww
WinFormsは見た目にこだわらず一切余計なことしないのが一番綺麗だよね 背景に画像入れたりしたときの醜さといったら
美的感覚も重要だよな ホームページとかで背景に鮮やかな柄にしている奴とか 文字がチカチカして見えにくい 色盲なのかといいたくなる
WinFormsって背景色ちょっと変えただけでひっどい見た目になるよな
なんだってそうだろ
お前らの見た目も性格もひっどいよな
おうよ
WPFはスマホのUI真似ればいい感じ。
WebBrowserコントロールについて疑問なんですが、これってInternetExplorerベースで動いてるの? もしかしてInternetExplorerが入ってないと動かないの?
IEというかTrident Monoで動かすってんでもない限り入ってないことはないだろ
>>978 そうだな糞重いのもアイコンでっかくして
一度に表示するデータ量を減らせば
重いのも誤魔化せるな
逆に数万行のデータを表示するようなアプリはこれでは無理
数万行のデータを一度に目に入れられる能力者なんてこの世におりませんので本来は気にしなくていい部分 Googleの検索に何件表示されてる? プレゼンする時に何行データ出す? よ〜く考えた方がいいぞ それでも「10万件表示できること」って押し通されたこともあるが
984 :
デフォルトの名無しさん :2011/10/23(日) 19:48:32.19
>>982 数万行表示させるのは、設計的に問題有るだろw
自分用だけどマルチディスプレイで表は平面ではなく奥行きのある立体で表示しているから 余裕で10万超えてるわ
グラフは縮小すりゃいいだけだし比較にならねえな
アスペだからリストやグリッドの話をしているって分からないの…。
最近の学生は金払わんでも使えるんだよなあ
if (_socket == null || ar == null) return; else len = this._socket.EndReceive(ar); これでぬるぽ言われるんだけど、どうやったら回避できますか、 アドバイスください@ReceiveCallbackメソッドです
学生ならVL版借りてきてインスコすりゃあるてぃめっとだと思うんです
>>991 orだと両方チェックするから右側がnullの時アクセスできない代物なんじゃない?
普通は&&すべき
>>993 ちょっと何言ってるか分からない
>>991 ブレイクポイントで止めて自動変数ウィンドウ辺りで何がnullなのか確認
>>994 Close()した後なので_soketがnullなんですが、
_soket == nullがfalseを返すのかどうなのか、
else側が実行されちゃうんです
if (list == null || list.Count == 0) return; これだとエラー if (list == null && list.Count == 0l) return; これだとノーエラー
Close() で null になるのを確認してる? 中身がなくなるのと、参照元変数が初期化されるのとは別のお話じゃなかったっけ。 それなら Close() というかインスタンスを破棄した後で自分で null 入れなきゃならないんだけど。
||を|にすればおk
>>996 今回は二つ目の条件判断で一つ目で判断したオブジェクトのメンバ見てるわけじゃないだろ…
1000 :
デフォルトの名無しさん :2011/10/23(日) 23:20:03.51
||と&&使いこなせないやつはif文分けて書け
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。