- 1 名前:デフォルトの名無しさん [2008/01/21(月) 19:35:37 ]
- (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
c++厨の嵐はスルー汁。 前スレ C#, C♯, C#相談室 Part44 pc11.2ch.net/test/read.cgi/tech/1194956418/ その他テンプレ>>2-5くらい
- 75 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:50:31 ]
- 判断できなくて困るほどでかいクラスを書かない
- 76 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:51:37 ]
- 仕様上なんて誰も言ってない
命名ガイドラインには沿っていないって話だろ。 「ガイドライン」の意味分かる? msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpgenref/html/cpconpropertynamingguidelines.asp
- 77 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:53:22 ]
- >>76
アナタC++のソースでハンガリアン記法とかやっちゃう人ですね
- 78 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:54:15 ]
- >そのプロパティが定義されているクラス内でのことなので、publicかどうかは関係ないです…
多分基本的な語彙について、話が噛み合ってない気がする
- 79 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:57:01 ]
- >>77
(゚д゚)ハァ?
- 80 名前:68 mailto:sage [2008/01/29(火) 19:31:00 ]
- >>75
自作クラスばかりで構成されたアプリでは問題になっていないのですが、 既存のライブラリorフレームワーク上のクラスを継承した時に問題になるんです。 >>76 階層をもう少しのぼってよく読んでみたらいいと思います
- 81 名前:68 mailto:sage [2008/01/29(火) 19:40:19 ]
- いっぱい釣れたので、今日のところは帰ります。
- 82 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:40:20 ]
- >>80
具体例をあげてみたら?
- 83 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:48:28 ]
- メインのFormのメソッド呼びたいとき、
・static void Mainが書かれてるクラスにFormのインスタンスを取得するメソッドを書く ・シングルトンにする どっちが一般的なの? Dispose Finalizeパターンとシングルトンって相性悪そうだけど、 Program.GetForm()とか書くのも気持ち悪い・・・ あ、複数ウインドウ出さないアプリの前提で回答よろ
- 84 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 20:03:33 ]
- program.csってあんまりいじらないんじゃね?
その前提なら 1)Form.ActiveForm 2)Application.OpenForms[0] 3) static Form1 frm1; public Form1() { Form1.frm1 = this; } public static Form1 MainForm { get{return frm1;} }
- 85 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 20:07:54 ]
- >>84 thanks
シングルトンにはしないほうが良いという結論でいいかな? Form以外(XNAのGameクラスとか)でも使えるのは3かな
- 86 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:55:01 ]
- どのみちFormには依存するだろ
- 87 名前:86 mailto:sage [2008/01/29(火) 21:57:37 ]
- >>85
書き込んでから理解した 忘れてくれ
- 88 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:17:39 ]
- いいものみつけた
download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/CLRInsideOut2008_01.exe winsiggen.exe便利……かな?
- 89 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:23:23 ]
- こわくてクリックできない
- 90 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:24:36 ]
- 記事は
msdn.microsoft.com/msdnmag/issues/08/01/CLRInsideOut/default.aspx?loc=jp ね 日本語版記事にはダウンロードリンクがないんで 末尾のja削ってenにすると出てくるが
- 91 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 15:27:24 ]
- Marshal.AllocHGlobal()やMarshal.ReAllocHGlobal()の引数でサイズを指定するところはなんでIntPtrなんだろうか?
AllocHGlobal()にはintで指定するのもあるけどReAllocHGlobal()はIntPtrだけだし intかlongが自然に思うんだけれど
- 92 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 15:41:33 ]
- size_t は int/long じゃないぜ
- 93 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 16:34:33 ]
- それが何か?
- 94 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 17:05:03 ]
- あほの俺が推測すると、64bit環境で2GB以上確保するため
- 95 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 17:47:10 ]
- >>91
メモリを確保するんだから、native intである必要があるだろ。
- 96 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 18:01:20 ]
- ありませんよ
- 97 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 18:06:24 ]
- CLIのnative int型をC#で表現してるからIntPtrになってるだけでしょ。
int32, int64, native int の中で一番自然なのはnative intだと思う。
- 98 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 23:03:10 ]
- >>88
これすげえ Cのヘッダから自動生成してくれる
- 99 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 02:09:45 ]
- >>97
うん でもさ、IntPtrのままじゃ演算できなくて結局intからキャストしてたり SizeOfの返り値がintだったりと他の部分との整合性が取れてない点を不自然に思ってる インターフェースがint/longでもいいし、もしくはIntPtrでもいいけどそれで演算できてたらよかったと思ってる
- 100 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 09:14:53 ]
- LinqのIQueryableのProvider実装してる人いる?
ブログとかでやってる人の見たけれどなんかめんどくさそう・・・
- 101 名前:デフォルトの名無しさん [2008/01/31(木) 20:25:20 ]
- C#でどこまでが言語仕様でどこからがライブラリか
という区別がよくわかりません.たとえば foreach は予約語ですが,IEnumerable とか IEnumerator は 単なる識別子です.yield のように reserved word ではないけど contextual keyword だというような ものもあり,そのあたりのあいまいさが使っていて 美しくないというか・・・・ その辺をすっきりと理解して使いたいのですが, どのような本を読めばいいのでしょうか?
- 102 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:45:02 ]
- 標準クラスライブラリは言語仕様の一部
- 103 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:15:59 ]
- 仕様が知りたいんなら仕様書読めばいいだろ
- 104 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:09:48 ]
- っていうか別に区別しなくていいじゃん
- 105 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:11:43 ]
- >>101
C#はCLSに基づく言語だから、C#の仕様自体がCLIの仕様を包摂している。 つまり、IEnumerableなしではC#は成立し得ない。
- 106 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:12:29 ]
- >>101
JISで仕様の日本語訳出てるから、それ読めばいいと思うよ。
- 107 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:17:13 ]
- foreachについては,必要なメソッド(GetEnumerator()とか)のシグネチャさえ合えばいいのであって
IEnumerableやIEnumeratorを実装している必要はないんだけどね
- 108 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:35:50 ]
- らしいな。
- 109 名前:デフォルトの名無しさん [2008/01/31(木) 23:46:32 ]
- gnuのC#って今どのくらい使えるようになってるの?
なんかググっても全然出てこないんだけど
- 110 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:50:59 ]
- mono は gnu じゃない
- 111 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:03:43 ]
- mono以外に知らんの?
- 112 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:04:41 ]
- >>110
Portable.NETってのがあるんだよ
- 113 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:14:46 ]
- こんなものがあったのか・・・
- 114 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:16:00 ]
- monoと比べると随分と停滞してるがな。
- 115 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:00:40 ]
- IntPtrからbyte配列を取るとき、Marshal.Copyでコピーしますが、unsafeを使わずに
IntPtrから直接配列として操作することって出来ませんか? 結構Marshal.Copyでのロスが大きくて無視できないし、折角C#を使うんだから 出来ればポインタは使いたくないので…
- 116 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:01:51 ]
- 無理です。
- 117 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:04:59 ]
- コピーしない方法ならあるよ
- 118 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:08:52 ]
- >>116
やっぱり無理ですか… やっぱりポインタ使うしかないのか orz >>117 Marshal.Read*とかでしょうか? さすがにこれをループするのはコピーするより重そうですが…
- 119 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:18:21 ]
- byte配列の長さは一定?
- 120 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:26:46 ]
- >>119
Bitmapなので変わる可能性はあります。
- 121 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:28:03 ]
- >>120
すいません、抜けてました orz 複数のBitmapを扱うので、という意味です。
- 122 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 08:50:42 ]
- 無理かな
byte[]とbyte*ってメモリレイアウトもたぶん違うから byte[]→byte*なら可能ではあるんだが
- 123 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 12:42:17 ]
- インデクサ付けた構造体でラップすれば?
実装はunsafe使って
- 124 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 13:06:50 ]
- >>122
マネージ→アンマネージは出来てもアンマネージ→マネージが出来ないと言うことですかね? >>123 ちょっとその方法試してみます。
- 125 名前:762 mailto:sage [2008/02/01(金) 14:02:36 ]
- struct ByteArrayPtr : IList<byte> {
private IntPtr ptr; private int length; public unsafe byte this[int index] { get { return ((byte*)(void*)this.ptr)[index]; } set { ((byte*)(void*)this.ptr)[index] = value; } }//あとは省略 こんな感じか byte限定じゃなくてジェネリックにしたくなるけど(T*)がコンパイル通らないね
- 126 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 14:14:38 ]
- where T: struct
- 127 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 15:22:14 ]
- >>126
(・∀・)ニヤニヤ
- 128 名前:デフォルトの名無しさん [2008/02/02(土) 15:00:12 ]
- C#でSpreadを使ってコーディングをしてるんですが、
バインディングソースからデータをバインドさせて、 文字列を表示しているセルがいくつかあり、 そのセルの文字列を組み合わせた文字列を表示したいセルがあるのですが、 どうも、表示されません。 設定としては、組み合わせた文字列を表示するセルのFormulaプロパティに CONCATENATE(A1,B1)と入れているだけです。 他に何か設定が必要なのでしょうか? よろしくお願いします。
- 129 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:12:30 ]
- >>125-126
structに制限しても無理 Tがマネージドな型を含む可能性があるから
- 130 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:43:10 ]
- >>107
どういうこと? implementしなくてもOKってこと?
- 131 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:44:17 ]
- >>128
SQLでとってくれば?
- 132 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 19:04:55 ]
- >>130
class EnumerableObject : object { public EnumerableObject GetEnumerator() { return this; } public bool MoveNext() { return false; } public object Current { get { return null; } } } このクラスのインスタンスに対してforeach使ってみるといいよ。 これはバグじゃなくてちゃんとした仕様。List<T>なんかはこれを利用して IEnumerableを実装する構造体をその型のままで返してIEnumerableへのボクシングを避けてる。
- 133 名前:132 mailto:sage [2008/02/02(土) 19:08:43 ]
- 間違い
IEnumerable→IEnumerator
- 134 名前:デフォルトの名無しさん [2008/02/03(日) 13:37:23 ]
- 前スレにてTableAdapterのことを質問したものですが
また質問させてください。 TableAdapterのdeleteやupdateでDBのTableを更新する時に SQLSerServerで外部キーを設定して連鎖参照整合性制約を使うことって出来ますか? 例えば二つのTableのある列を外部キーで関連付けして 同じ文字列のある行をdeleteしたりupdateしたりすることが出来ますでしょうか。 どうも上手くいかないんです。 もう一つ。 TableAdapterの更新処理はASP.NET上でしか 動作してくれませんよね? 例えば、普通のWindowsアプリケーションのプロジェクトを作成して そこにDataSet作ってTableAdapterを作成して DBの更新処理をするってのは出来ないですよね?
- 135 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:39:35 ]
- ネイティブのexeからC#で作ったDLLを呼び出したいんだけど、
手っ取り早いやり方は具体的にどんな感じになるんでしょ? 開発環境はVisual Studio 2008 Express Editionです。
- 136 名前:デフォルトの名無しさん [2008/02/03(日) 14:43:23 ]
- >>135
アセンブリをCOM参照可能にして呼ぶ。
- 137 名前:135 mailto:sage [2008/02/03(日) 14:46:38 ]
- >>136
thx!
- 138 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:14:42 ]
- C++で言うベクターってC#で言うと何?
- 139 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:17:16 ]
- List<T>
- 140 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:17:31 ]
- list
- 141 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:47:24 ]
- C++のVectorがC#のListだとすると
C++のListはC#だと何になる?
- 142 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:49:23 ]
- ごめん自己解決したw
可変長配列 vector<T> List<T> 双方向リスト list<T> LinkedList<T>
- 143 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:58:18 ]
- LinkedListってなんでIList実装してないのにListなんだろう
Javaに合わせたのかな
- 144 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:03:20 ]
- LinkedList は LinkedList です。
- 145 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:18:04 ]
- >>134
可能でしょ。 そもそも連鎖更新や削除はSQLServer側がする事で、.NETや言語は関係ない。 それ以上は「どうも上手くいかない」って説明では分からん。 もう一つ。 なんでASP.NETしか動作しないと思ってるのかわからん。
- 146 名前:デフォルトの名無しさん [2008/02/04(月) 12:43:58 ]
- ストアドプロシージャに連鎖更新書いて呼ぶのじゃダメなのか
- 147 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 22:25:19 ]
- >>146
DB側に処理置くのはいやずら
- 148 名前:975 [2008/02/05(火) 00:56:23 ]
- >>145
すいません。わかりづらいですね。 [Table1] ID Name Age ---------------- ID1 Yamada 20 ID2 Hanako 18 [Table2] ID Height Weight ------------------- ID1 170 65 ID2 160 50 手順としては上の二つのTable がある時、 1.VisualStudioのデータベースエクスプローラーから 「外部キーのリレーションシップ」ダイアログで Table1が親としてIDに対してリレーションを作成。 2.DeleteRule の設定、UpdateRule の設定を「重ねて表示」に設定。 3.Table1、Table2に関連付いたTableAdapterを作成して 1、2と同じ設定でリレーションシップを作成。 4.Table1の一行目に対してDELETE処理実行。 5.Table1の一行目は削除されるがTable2は削除されない。 ということです。 ASP.NETに関しては勘違いしていました。 >146 トリガのことですよね? 上記の方法で出来なかった場合はその方法を考えています。
- 149 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 14:45:35 ]
- C#ってどんな業界で使われてるの?
- 150 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:11:20 ]
- >>149
業務用で多いのは ASP.NET かな。 企業のウェブポータルなんかでは割と使われてる。 個人レベルのフリーウェアは最近結構増えてきた気がする。
- 151 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:26:44 ]
- >>150
サンクス
- 152 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:36:40 ]
- 個人レベルでちょっとなんか作るならC#でFAだな。
楽過ぎる。 でもグローバルフックに制限があったりとか WPF使ったらactivexがラップしないと使えないとか 細かい問題が多くて開発時間に影響するんだよな・・・。 それでも早いけど。
- 153 名前:デフォルトの名無しさん [2008/02/05(火) 22:38:25 ]
- >>149
人工知能
- 154 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:05:08 ]
- managedだけで済む処理しか使わないならすごく楽に作れるな
- 155 名前:デフォルトの名無しさん [2008/02/07(木) 10:16:54 ]
- (COM登録が必要な)C#で作ったアセンブリをインストーラーで配布しようとしているのですが
その際プライマリ出力のRegisterプロパティをvsdrpCOMに設定しても インストール中にComRegisterFunctionAttributeのRegister、Unregisterメソッドは呼ばれないのでしょうか? (試した限りでは呼ばれませんでした) 何かプロパティを変える等で呼ばれるようにする方法はありますでしょうか?
- 156 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:41:01 ]
- SHFileOperation使えばいいんじゃね?
- 157 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:41:35 ]
- 誤爆スマソ
- 158 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:16:29 ]
- C# 2008です
n < Int32.MinValue (nは0〜200くらい) が実行された際 Debugでビルドしたときは何もなかったのに Releaseでビルドしたらオーバーフローが出ました n < Int16.MinValueにしたら平気でした。 n > Int32.MinValue では平気でした。 DebugとReleaseで演算方法が違うってことでしょうか? そもそも比較演算でオーバーフロー出すようでは欠陥だと思うのですが これじゃDebugでテストするのが怖い
- 159 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:29:43 ]
- nの型は何だよ。
- 160 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:34:11 ]
- また始まった
コードそのものをここに貼れよ。 それだけでオーバーフロー/フレームワークに欠陥なんて言われても。
- 161 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:38:06 ]
- >>158
処理系が欠陥だと言い切るような自信がどこから湧くのか理解できんが、 生成されてるILすら比較してみていないような感じだな。
- 162 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:47:51 ]
- まったくだ
- 163 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:50:27 ]
- ポカやってるのは>>158でFAなのはコード見なくてもわかるけど
とりあえずDebugとReleaseで プロジェクトのプロパティ→ビルド→詳細設定→演算のオーバーフロー/アンダーフローのチェック のチェックボックスの状態がちがうんじゃね?
- 164 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:14:46 ]
- Debugでは出ない例外がReleaseで出たのは経験あるな
よく覚えてないけどList<T>.Sortか何かで渡した自分のIComparer<T>の実装が間違ってたのが原因だった
- 165 名前:デフォルトの名無しさん [2008/02/09(土) 09:47:27 ]
- 長いコード貼るなら
pastebin.windy.cx/ pastebin.com/ こういうところだと色分けとかもできる
- 166 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:17:22 ]
- 怠け者で探しきれてなくてすみません。
MonthCalenderで、指定日をハイライトするメソッドをご教授ください。
- 167 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:22:48 ]
- SetDateか。自己解決下っぽい。ありがとうございました。
- 168 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:25:49 ]
- しかも 初心者板と勘違いした。
重ね重ね申し訳ない。orz
- 169 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:34:42 ]
- ほ、ほーっ、ホアアーッ!! ホアーッ!!
- 170 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 23:15:54 ]
- vjs.dllだとファイル数多いと例外なげたりとバグってたりするんですけど
C#でお手軽にZIP作る方法ないですか?
- 171 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 02:36:47 ]
- SharpZipLibとか
- 172 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 02:39:18 ]
- シェルにやらせればいいんじゃね
- 173 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 03:35:13 ]
- zip.exe叩いた方が楽でね?
- 174 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 07:53:49 ]
- zipfldr.dll
…ってシェルと同じかも
- 175 名前:デフォルトの名無しさん [2008/02/12(火) 08:45:53 ]
- Processでstartinfoに
process.StartInfo.UseShellExecute = false; process.StartInfo.CreateNoWindow = true; 指定して、zip.exe起動すれば、dos窓でないから 一番楽だと思うが。
|

|