1 名前:デフォルトの名無しさん [2008/01/21(月) 19:35:37 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 c++厨の嵐はスルー汁。 前スレ C#, C♯, C#相談室 Part44 pc11.2ch.net/test/read.cgi/tech/1194956418/ その他テンプレ>>2-5 くらい
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窓でないから 一番楽だと思うが。
176 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 13:38:56 ] 統合アーカイバプロジェクトに登録されてるのはだめなの? そのうちファイラ作ろうと思ってるんだけど。 ttp://www.madobe.net/archiver/dev/main.html#csharp
177 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:38:27 ] もしかして、.NET Framework 2.0からZIPを操作するクラスが入ったのを知らない人多い?
178 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:46:38 ] うん
179 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:49:52 ] GZipは扱えるがZipファイルは扱えねぇなあ。 まあヘッダ処理だけ書けば大体対応できるけどね。
180 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:49:59 ] それGZIPだし ZIPじゃないし
181 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:59:17 ] 読み取り専用のDictionaryはないの?
182 名前:デフォルトの名無しさん [2008/02/12(火) 20:12:09 ] ListViewでItemを追加してEndUpDateすると、全部のItemが再描画 されてしまいます。そこでそのちらつきを出さない方法についてこちら でおききしていました。>pc11.2ch.net/test/read.cgi/tech/1197507828/859 その中のソースがC#なのでC#スレでお訊きします。よろしくです。 CodeProject Flicker-free ListView in .NET and XP. Free source code and programming help www.codeproject.com/KB/list/listviewxp.aspx にあるサンプルを試してみたのですが、DEMO版がうまくいくのにソース版 ですよ対策なしと同じでした。 ListViewのDoubleBufferingはちらつき防止に効果あるでしょうか? またowner draw にした場合は自分でItemを描画する必要があるのでしょうか。 よろしくお願いします。
183 名前:182 [2008/02/12(火) 20:18:38 ] >>182 訂正>ソース版ですよ対策なしと同じ -> ソース版ですと対策なしと同じ 該当のサイトでは public void SetExStyles() { LVS_EX styles = (LVS_EX)SendMessage(this.Handle, (int) LVM.LVM_GETEXTENDEDLISTVIEWSTYLE, 0,0); styles |= LVS_EX.LVS_EX_DOUBLEBUFFER | LVS_EX.LVS_EX_BORDERSELECT; SendMessage(this.Handle, (int) LVM.LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (int) styles); } のようなコードがありました。これはDoubleBufferを使っているようなのですが、 owner draw はしてないようでした。一方、このサイトへのコメントレスとして ついていたものでは、owner draw にしておいて this.SetStyle(ControlStyles.OptimisedDoubleBuffer, True); とするだけでちらつきはなくなるようなことが書かれていましたが、これは 自分で描画してやらないといけないようでその場合どのように描画すれば よいのかわかりませんでした。自分で描画しないでも可能なような意味にも 取れてよくわからないのでした・・・ すみませんが、何卒よろしくお願いします。
184 名前:デフォルトの名無しさん [2008/02/13(水) 00:08:14 ] すみません、よろしければ pc11.2ch.net/test/read.cgi/tech/1200911737/182-183 について教えてください。何卒よろしくお願いします。
185 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:10:26 ] (>>184 は pc11.2ch.net/test/read.cgi/tech/1162467959/ への出張の間違いでした。すみません。)
186 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:46:50 ] zipの質問したものです みなさん、ありがとうございました 統合アーカイバプロジェクト(7-zip32.dll) undll.exe System.Process でやってみることにしました やってみると進行度合をウィンドウで表示してくれてちょっと鬱ですがとりあえず動いています (zip32.dllは長い名前に対応してないとか?はっきりしなかったので)
187 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:10:36 ] >>176 統合アーカイバプロジェクトのzipは処理速度遅いよ
188 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:14:46 ] >>187 代替案しめさないと意味のないコメント
189 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:25:47 ] zipってオープンソースじゃなかったっけ
190 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:29:55 ] 統合アーカイバプロジェクトなんつってる割には インターフェースが統一されてなくて使いにくいんだよな
191 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:31:45 ] 素人だからな。
192 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:58:33 ] C++/CLIでうまいことやってくれないもんかな
193 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:46:20 ] 公開された.NET Frameworkのソースコード見てたらInt32なんかもC#で実装されてるけど MSはなんか特殊なコンパイラ使ってるの?
194 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:30:56 ] VC#には、mscorlib.dllを参照させない/nostlibというオプションがある。 msdn2.microsoft.com/ja-jp/library/fa13yay7 (VS.80).aspx
195 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 01:46:17 ] >>188 代替案って・・^^; SharpZipLibに比べると3倍ぐらい遅いって、過去にそんな話出てたと思うが。
196 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 02:01:46 ] >>195 そんな話見たことねーよ どんな妄想だよ 遅いというからにはしっかり計って代替案示せ糞野郎
197 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 02:03:55 ] 統合アーカイバプロジェクトのzip 30秒 SharpZipLib 10秒
198 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 02:07:16 ] ↑なにこれ 人馬鹿にしてるの?
199 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 10:09:38 ] そこまで自分で性能気にするなら自分で測ればいいだろカスが
200 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 10:17:30 ] 代替案出せとか2chに何求めてるんだよw
201 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 12:26:43 ] なんか意味を取り違えてないか? 俺は196じゃないけど、196の言いたいことは「遅い」というのは 比較の対象があってこそ言えることで・・・ まあこれだけ補助線を引けば読解力ない君でもさすがにわかるだろ