[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 12/07 23:51 / Filesize : 174 KB / Number-of Response : 788
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C#, C♯, C#相談室 Part45



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窓でないから
一番楽だと思うが。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<174KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef