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


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

ふらっとC#,C♯,C#(初心者用) Part44



1 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 14:57:21 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

前スレ
ふらっとC#,C♯,C#(初心者用) Part43
pc12.2ch.net/test/read.cgi/tech/1248573707/

152 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 13:54:13 ]
>>148
無理。

153 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:00:41 ]
DataGridViewはリフレクション使いまくりでクソ遅いからなあ

154 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:04:58 ]
>>145
ん? >>143 宛なら、そりゃ、教えていただいたときとその反対の時の口調が同じなわけないだろ。w
>>144 まで含めているなら、それは別人だ。

155 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:06:55 ]
>>153
自分で試しもみないでなんだけど、DataGridView で実用になるのってレコード数何件くらいまでかな?

156 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:08:50 ]
検索するたびにデータベースにアクセルするのはパフォーマンスが悪いと思ってDataTableに取り込んだ状態でその中で検索をかけたいんですがこれって
グリッドビュー通してることになるんですよね。
>>151
ヒットしてません。アダプターでクエリするとカレントレコードの位置をグリッドビューからみて行番号はとれるんですがこれはDataTable内でのカレント操作はできないんですか?

157 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:14:07 ]
DataGridViewって件数が増えると極端にパフォーマンスが落ちね?
一度二次元配列に代入してから素直に検索掛けた方がいいよ

158 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:14:37 ]
>>156
> DataTableに取り込んだ状態でその中で検索をかけたいんですがこれってグリッドビュー通してることに
ならない。
データとUIは別物。
つかグリッドビューってことはASP.NETでいいんだな?

> アダプターでクエリすると
アダプタってTableAdapterとかDataAdapterか?
なら凄い勢いでDBにクエリを投げてるじゃないか

159 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:16:45 ]
>>152
マジっすか。。。残念。Flashウザイ

160 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:18:46 ]
いちいち口調を変えるなんて、頭悪そうだなぁ、って思っただけだよ。



161 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:19:48 ]
データグリッドはあくまで表示用なんだから、800万件も入れるのは正気の沙汰じゃない。

162 名前:159 mailto:sage [2009/08/30(日) 14:28:04 ]
Windowsアプリからブラウザ上のファイル選択(参照)ボタンをクリックし、

クリックをしてファイル選択ダイアログが立ち上がった後に

スグに別の処理を行いたいんですけど、その起動したダイアログを

閉じない限り次の処理を行う事が出来ず困っています。

何か良い方法はありませんか?

163 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:37:24 ]
マルチスレッドにしないと無理じゃない?


164 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:39:16 ]
>>162
なんとなくだけど、HTML を操作するんじゃなくて、HTTP 通信に手を出した
方がいい気がしないでもない。

165 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:44:07 ]
>>162
基本的には別スレッド起動だけど、
単に「立ち上がったその瞬間」軽い処理ができればよいのなら
Application.EnterThreadModalイベントが使える。

あと、モーダルダイアログ表示中でもタイマーのtickイベントは発生する。

166 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:51:31 ]
>>162
同じ質問をあちこちに書くと嫌われるよ。
どーせ見てる人は被ってるんだし。

167 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:57:33 ]
関係ないけど、dobonさんのところの掲示板のところの
マルチポスト監視員はちょっと気持ちが悪いなw

マルチポストする奴もたいがいロクな奴じゃないとは俺も思うが、
あれはマリチポストしてる奴よりよほど精神的に異常な奴に思える。

168 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 15:05:34 ]
>>163
マルチスレッドとして実行させる為に

Dim str As String = "あいうえお"

Dim t As New System.Threading.Thread( _
New System.Threading.ThreadStart(AddressOf TestMethod(str)) _
)
t.Start()



Private Sub TestMethod(Dim str As String)
   Debug.WriteLine("テスト" & str)
End Sub

と記述してみたところエラーが出てしまいます。
マルチスレッドで引数を受取る形で宣言されたメソッドを実行する事は出来ないのでしょうか?
(あっ、C#スレだった・・・ごめんなさい。マルチスレッドが解決したら落ちます。)


169 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 15:08:08 ]
>>164
それはちょっと難易度があがりそうなので見送ります。

>>165
そんなイベントもあったのですね。知りませんでした。
とりあえずマルチスレッドにすればやりたい事が実現できそうなので今回は
こちらの方法で対処しようと思います。

それにしても今更だけど、プログラムって本当に面白いね^^;
面倒な作業を何でも自動化で来ちゃうところがナイスです。

>>166
ですね。気をつけます。

>>167
多分暇してる人だと思います。

170 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 15:11:55 ]
>>168
ParameterizedThreadStart



171 名前:163 mailto:sage [2009/08/30(日) 15:15:14 ]
ここまできたらMSDN見た方が早くない?
msdn.microsoft.com/ja-jp/library/system.threading.threadstart(VS.80).aspx


172 名前:名無しさん@そうだ選挙に行こう [2009/08/30(日) 16:40:56 ]
PanelとPanelとの間に境界線を引きたいと思っています。
BorderLineだと四辺全てに引かれてしまうので、
.NET3.5より新しく加わった、lineshapeを使おうと思いました。
けど、接戦を引いたパネル上に別のパネルを置いてしまうと、見えなくなってしまいます。
何かいい方法はないでしょうか。

173 名前:名無しさん@そうだ選挙に行こう [2009/08/30(日) 16:54:59 ]
>>172
あのコントロール、メニューストリップなどの上に描けないんだよね。
まだまだ不便だよ。

174 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 17:19:21 ]
SplitContainerじゃだめなん?
TableLayoutでもいけそうだけど

175 名前:名無しさん@そうだ選挙に行こう [2009/08/30(日) 18:38:51 ]
2つのpanelが接する辺だけに境界線を引きたいんです。
他の3辺はNONEでいきたいのですが、継承するしかないでしょうか。
Lineshapeが登場して喜んでいたのですが(+_+)。

176 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 18:53:03 ]
OnPaint で直接描いちゃえば?

177 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 18:54:40 ]
手っ取り早く見た目をなんとかするだけなら、細長いボタンを重ねるという手もある
ドラッグイベントを自前で実装するのもそれほど大変じゃないはず

178 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 19:58:51 ]
>>175
>>175で言ってることと>>172は矛盾してない?
175の通りならLineShapeで何も問題ないように思えるが・・・

まあ、事ほど左様に言ってることがいまいち理解できないところがあるんで
トンチンカンなアドバイスかもしれんが、

■ A案
パネルCの中に、それを左右に(あるいは上下に)分割するような形で
パネルAとBを入れる。AとBの間には1〜2ドット分隙間をあけ、パネルCのBackColorを
境界線として利用する。

■ B案
2つのパネルのうちの片方パネルの、相手と接している辺にラベルをDockさせる。


179 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 19:58:54 ]
LineShapeはあくまでVB向けのおまけだから…

180 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 21:45:35 ]
>>178
俺も>>172の意味が分からん
自分でLineShapeの上に別のコントロールを置いて隠しているだけじゃないのか

こういう構成で

- Form1
  - panel1
  - panel2
    - panel3
    - lineShape1

panel2とpanel3のサイズが同じとかアホなことしているのではと疑いたくなる



181 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 22:36:08 ]
エスパー多いなw
>>172,175意味不明すぎるw

182 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 23:05:02 ]
馬鹿は黙ってろ

183 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 23:07:23 ]
>>182
馬鹿は黙ってろ

184 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 23:16:52 ]
くやしそうwww

185 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 00:43:31 ]
<asp:GridView ID="gridWord" runat="server" AutoGenerateColumns="False" >
<Columns>
<asp:BoundField HeaderText="ワードカテゴリ" DataField="Category" />
<asp:CheckBoxField DataField="Check" />
<asp:BoundField DataField="SynonymWord" HeaderText="チェックワード" />
</Columns>
</asp:GridView>

こういうグリッドビューに対して
これに対応したDataTableを作成し,データバインドしました.
2つ目に挿入されているCheckBoxFieldにはDataTableにBoolean型の列を割り当てました.

実行してみるとチェックボックスがフォームアプリケーションでいうEnebled = False 状態で
チェックを変更することができません.

GridViewのTableCellに対してEnebuled = Trueしたり
DataTableとGridViewCollumのCheckBoxField ReadOnlyをFalseにしたりしましたが
グレーアウトのままです

どうすればよろしいでしょうか

186 名前:デフォルトの名無しさん [2009/08/31(月) 19:06:30 ]
YUI/again(single)
CAN'T BUY MY LOVE(3rd album)
YUI/FROM ME TO YOU(album)
YUI/I LOVED YESTERDAY(album)
LOVE&TRUTH(album)
YUI/Namidairo(single)

から、

again
CAN'T BUY MY LOVE
FROM ME TO YOU
I LOVED YESTERDAY
LOVE&TRUTH
Namidairo

を取得するのに、正規表現をどう書いたらいい?
string title = "artist/(?<title>.*?).*?\((?<albumname>.*?)\)";
と書いてみたんだけど、なんか違ってるっぽい。
教えてください。


187 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 19:10:45 ]
>>186
何から何まで間違っている。

188 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 19:22:55 ]
不覚にもワロタ

189 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 19:28:58 ]
VBで書こうがC#で書こうが.基本的に実行速度って変わらないんですか?

190 名前:デフォルトの名無しさん [2009/08/31(月) 19:50:15 ]
>>186
どんだけ妄想を働かしてるんだよ。1回マニュアルを読んだほうが良い。




191 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 20:03:22 ]
string title = "(?<artist>.*?)/(?<title>.*?).*?(?\(<albumname>.*?\))";
ならOK?


192 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 20:04:52 ]
>>191
正規表現を1から勉強してこい

193 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 20:13:41 ]
一番ポピュラーで使いやすくて軽いHTMLパーサーを教えてください

194 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 20:15:42 ]
mshtmlでいいやん

195 名前:デフォルトの名無しさん [2009/08/31(月) 20:42:04 ]
>>189
或る統計 data より…
Spec and more  250MHz 400MHz  Total
          R10000  Pentium U Source lines
C        : 0.3秒  : 0.30秒  : 150行
C++/STL/deque : 2.6秒  : 11.2秒  : 70行
C++/STL/list  : 1.7秒  : 1.5秒  : 70行

C# VB は在りませんが 統計上では 詠み込み行が多く為り 速度も変わる様です

196 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 20:46:54 ]
>>191
ヒント。その正規表現は '/' が文字列中に無いとマッチしないよね。

197 名前:デフォルトの名無しさん [2009/08/31(月) 20:49:28 ]
失礼…

Spec and more  250MHz 400MHz  Total
          R10000 Pentium U Source lines
C         : 0.36秒  : 0.30秒  : 150行
C++/STL/deque : 2.6秒  : 11.2秒  : 70行
C++/STL/list    : 1.7秒  : 1.5秒  : 70行

でした…

198 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 20:53:10 ]
>>197
なんでVBとC#の比較しないの?意味分かんない。

199 名前:デフォルトの名無しさん [2009/08/31(月) 21:02:56 ]
変ですね… ズレます…

Spec and more   250MHz 400MHz  Total
         R10000  Pentium U Source lines
C         : 0.36秒  : 0.30秒  : 150行
C++/STL/deque : 2.6秒  : 11.2秒  : 70行
C++/STL/list    : 1.7秒  : 1.5秒  : 70行

200 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:03:42 ]
荒らしか。



201 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:04:12 ]
>>199
全角でやれ、そして専ブラのリンク先で見る分には大丈夫だw
最後に、意味ないからこれ以上張るな。

202 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:29:19 ]
150行が何意味するのかわからんし。
処理データ数ならせめて100行、10000行、1000000行の性能比較くらいしない
と、ただのゴミ。データ量によって性能の特性が変わることはよくあるから。

203 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:32:06 ]
ソースコードの行数じゃないの? 「読み込み行」とか言ってるのはワケワカだけど。

204 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:37:20 ]
>>191
まずはその変数をtitleじゃなくてpatternにしないか
気持ち悪い

俺も>>199のデータがどう>>189に関係有るのか分からないけど、
>>189は「基本的に」って書いてあるから答えとしては、「ほぼ変わらない」でFAでしょ。
ほぼ同じ中間コードが同一のCLRで走るんだし。
細かく見れば言語固有の実装があったりとかで、違ったりするかもしれないけどそこまでは知らにゃい。
というか、どちらにしようか迷ってる段階であの質問なんだとしたら、処理速度で選ぶのは間違ってると思います。
あ・・・でもVB.netってunsafeコード書けないんでしたっけ。

205 名前:デフォルトの名無しさん [2009/08/31(月) 21:43:50 ]
最近、スレで見たけどさ。
ラインシェイプは、パネルの境界線としては大して役に立たないのかよ。
Sp1は大した機能がないのか世。

206 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:46:10 ]
馬鹿が自分じゃなくてハサミの方を馬鹿だと思い込むの巻、か

207 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:46:42 ]
WinFormsはもう放置モードに入りましたから

208 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:47:08 ]
1.0 の頃は、なんと VB の方が速かったという話。
コンパイラの出来がよかったんだって。

今となってはそんなこともないんだろうけどね。

209 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 22:08:06 ]
VBは結構ヘルパー関数呼び出しが入るから普通に書いても若干遅くなることはある
想定されてるVBの用途を考えればほとんど無意味なコストなんだろうけど

210 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 23:19:03 ]
this.FormBorderStyle = FormBorderStyle.None ;
でウィンドウを枠を表示しないようにすると、ウィンドウ内をダブルクリックしてウィンドウが最大化します。
これを抑止するにはどうしたらよいですか?




211 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 23:26:31 ]
string title = "(?<artist>.*?)/*(?<albumtitle>.*?).*?(?\(<albumcategory>.*?\))";
ならOK?

212 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 23:28:26 ]
>>210
それだけなら最大化なんかしないはずだが
WndProcオーバーライドしてなんかやってないか

213 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 23:28:56 ]
>>211
スレ違い

214 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 23:31:47 ]
>>212
フレームなしのウィンドウを移動可能にするので、
protected override void WndProc(ref Message m){
base.WndProc(ref m) ;
if ((m.Msg == 0x84) &&
(m.Result == (IntPtr)1))
{m.Result = (IntPtr)2 ;}
}
というのを入れてます。
これがだめなんですか?
といっても、フレームなしのウィンドウを移動するには、
これが必要だし…。


215 名前:デフォルトの名無しさん [2009/08/31(月) 23:31:49 ]
>>211
PHPとXMLと正規表現混ざってるんじゃね?
本気で解答得たいという姿勢を感じられん。


216 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 23:37:31 ]
>>214
そういうのはOnMouseDownとOnMouseMoveでやるんじゃないの普通・・・

217 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 23:43:10 ]
…。←うざい

218 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 23:45:12 ]
・・・←もっとうざい

219 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 23:49:38 ]
>>214
他でもいろいろやってそうだね。
問題の切り分けを自分で出来るようにならないと、
情報を小出しするとかいろいろ文句をつけられるぞっと。

220 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 23:51:19 ]
>>214
WM_NCHITTESTでHTCAPTION返すようにするなら、
WM_SYSCOMMANDでWParamにSC_MAXIMIZEが含まれるときにIntPtr.Zeroを返すようにする処理を追加しないと



221 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 23:57:39 ]
なんか落ちた犬を叩くようだが、
>>214って典型的な「何でもMSのバグのせいにするタイプ」だね。

こんなの普通の神経してれば、人に質問する前にコード何も書かない素のフォームで
試して自分の仮説が本当に正しいのか実証するだろう。
俺には理解できん。真面目に精神病の一種か何かじゃないのこういう人。

222 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 00:01:52 ]
↑いつもの人乙

223 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 00:49:46 ]
>>216の案で書いてみた
private Point _p;
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
if (e.Button == MouseButtons.Left)
_p = e.Location;
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (e.Button == MouseButtons.Left)
Location = new Point(Location.X + (e.Location.X - _p.X), Location.Y + (e.Location.Y - _p.Y));
}

224 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 02:45:27 ]
>>223
これって、イベントハンドラはどう割り当てるのですか?


225 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 03:03:32 ]
お前には無理だから忘れろ。

226 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 06:04:01 ]
イベントっていうのは勝手に起こるんじゃなくて
イベントを定義しているクラスがイベントハンドラを実行するんだよ。
そのイベントハンドラを実行するメソッドを普通On[イベント名]メソッドで定義するのが作法。

public event EventHandler SomeEvent; //イベント定義 呼び出し側からハンドラを追加する。
protected void OnSomeEvent(EventArgs e)
{
if(SomeEvent != null) //ハンドラが追加されているかをチェック

}





227 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 06:07:28 ]
途中で勝手に書き込まれてしまった・・・

public event EventHandler SomeEvent; //イベント定義 呼び出し側からハンドラを追加する。
protected virtual void OnSomeEvent(EventArgs e)
{
if(SomeEvent != null) //ハンドラが追加されているかをチェック
  SomeEvent(this, e);
}

なので 同一クラスおよび、サブクラスでは イベントハンドラを追加しなくても
Onメソッドをオーバーライドすればイベントハンドラを追加したのと同じことができる。
ただしスレッドは同一になるのでマルチスレッドデリゲートしたければ
イベントハンドラ追加するかな。

228 名前:227 mailto:sage [2009/09/01(火) 06:14:05 ]
訂正:同一クラスではオーバーライドできないので
Onメソッド内部に処理をかけばいいのだが、
そんなのは邪道なので
Onメソッドを実行せずに直接やりたい処理をやらせる。
イベントを起こしたいのならOnメソッドも実行する。



229 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 11:07:09 ]
internalインターフェイスにinternalメンバを定義したいんだけどコンパイルエラーになる
publicにしたくないメンバだけ明示的実装するしかないの?

230 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 11:15:27 ]
インターフェイスがインターナルならメンバをインターナルにする必要ないと思うんだが。
いずれにせよインターフェイスにはパブリックなメンバしか定義できないよ。




231 名前:229 mailto:sage [2009/09/01(火) 11:24:23 ]
そのinternalインターフェイスを実装するときに,
internalとしてそのメンバを実装するとコンパイルエラーになってしまう
publicメンバとして実装したら通るけどアセンブリ外から見えてしまう
明示的実装すれば実質internalになるけど,呼び出すときにいちいちインターフェイスにキャストするのが面倒

232 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 11:58:22 ]
明示的実装はいまいち融通が利かんからねぇ
まあこれぐらいで 多分どっかで最適化されて実行コストのロスはなくなるだろ
internal interface ITest {
    void Test();
}
public class Test : ITest {
    void ITest.Test() { }
    internal void Test() {
        ((ITest)this).Test();
    }
}

233 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 14:39:02 ]
逆の方が良くない?
これなら実装をvirtualやabstractにもできるし。

internal interface ITest {
void Test();
}
public class Test : ITest {
void ITest.Test() {
Test();
}
internal void Test() { }
}

234 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 15:13:49 ]
string s;
double d;
s="this is ";
s= s + d.ToString;

これだと 演算子 '+' を 'string' と 'メソッド グループ' 型のオペランドに適用することはできません。

って怒られるんだけど、こういうときはどうしたらいいですか?

StringBuilder使うのがいいですか?

235 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 15:14:59 ]
あ、
d="1234";
が抜けてました

236 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 15:15:07 ]
メソッド呼び出しには括弧つけろ

237 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 15:15:23 ]
>d.ToString

ToStringなんてプロパティねーよ
メソッドならあるよ

238 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 15:18:25 ]
は!そういうことですか!ありがとう

239 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 16:25:56 ]
実は.ToStringは不要

240 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 16:39:33 ]
定数に関する質問なんですが。
よくコレクション定数をプロパティで作ることがあるですが、
その定数が配列などのときにいちいちGet{for{list.Add(***):}}でループしながら定数を組んでいるためその変数を呼ぶごとにほんの少し時間をとります。
タイムカウントをとるとほんと微々たるものですが、私にとってはあまり気分のいいものではありません。
Getで指定する理由は、その定数には数十個とそれなりに大きなもので
バージョンを上げるごとに変わることが予想されるためで、変更し易いようにということでこのようにしています。

一度アプリケーションが起動するときに一気にロードしてreadonlyにしていたこともあるのですが、個人的に気持ちいいものではありませんでした。

皆さんはこのような状況のとき、どのような対策を行っているのでしょうか?



241 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 16:41:31 ]
気にしないように日々訓練しています

242 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 16:41:41 ]
お前の気分なんてどうでもいいんだよ

243 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 16:53:51 ]
int? myProperty;
int MyProperty {
get {
 if (myProperty == null) { /*値を計算してmyPropertyに代入*/ }
 return myProperty;
}
}
こうやって最初に呼び出された時だけ計算するとか

244 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 17:03:27 ]
クラスにアクセスするまで静的コンストラクタは起動されないので
staticフィールドで済ませる事が多いな。

メモリを圧迫するような大きなデータだと、
プロパティアクセス時に生成してキャッシュしておくけど。

245 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 17:21:58 ]
ところでコレクションや配列にreadonlyは無意味だぞ

246 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 17:22:41 ]
>>243,244
やっぱり一発で書ける方法はないんですね・・・
変数生成やプロパティ呼び出しのときにconstが使えて、呼び出し後は変数として使えるなんて出来れば幸せになれるのですが、orz
人の意見を聞けてよかったです。
ありがとうございました。m(_ _)m

247 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 17:32:49 ]
>>245
コンストラクタでの変更は故意にやらない限り弄られることはないかなっという
軽い気持ちで行っていますw


248 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 17:51:19 ]
static readonly ReadOnlyCollection<Hoge>
とか書くかな

249 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 21:05:45 ]
キャッシュせずにgetで毎回コレクションや配列を作るのは禁止(MSDNにも明記されている)
for (int i = 0; i < hoge.ConstValues.Length; i++) { x = hoge.ConstValues[i]; }
とかされると死ぬから

250 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 22:42:52 ]
datatableの内容を印刷するにはどうやったらできますか?
意外と難しい一般的なやりかたじゃないんですかねー?



251 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 22:54:26 ]
DataTableの質問してるやつ死ねよ

252 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 23:00:21 ]
やはり難しいのでしょうか?






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

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

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