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


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

C#, C♯, C#相談室 Part52



1 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:15:52 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part51
pc12.2ch.net/test/read.cgi/tech/1233757615/

Visual C# 2008 Express Edition 日本語版
www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>2-5くらい

182 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 13:54:16 ]
>>170
徐々にずれるのが嫌なら再生開始時からの経過時間を使って、
間隔を調整すればいいだろ。

183 名前:96 mailto:sage [2009/04/12(日) 14:26:29 ]
>>172
>そもそもあんたはマイクロ秒のズレなんてわかるんかよ。
30fps時の端数分(333μs)ずつずれていくと、100フレームほどで1フレーム遅れる計算になります。
数秒再生して1フレームも遅れるのは結構致命的だと思うのですが…

>>175
C++やDirectX、COMを触ったことがないからだと思いますが、何が何だかさっぱり…
ISampleGrabberからIBaseFilterへとか、継承しているわけでもないのになぜキャストできるのでしょうか?
同じメソッドを実装するだけでキャストできるのかと思い、テスとしてみたのですが当然できるはずもなく。
Splicerはおもしろそうですね。

>>182
現在はTickが呼ばれるたびに誤差を計算して次に加算するように変更したので、多分μs単位で
いじらなくてもあまりずれないようにはなっていると思います。

184 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 17:54:19 ]
>>161
>OnPaintやControl.CreateGraphicsで直接描画するのとPictureBox.Imageにイメージをセットするのは 
>ほとんど変わらないものだと思っていたのですが… 

Control.CreateGraphicsを使えば別のメソッドから使えるというのがメリットなのよ。
GUIはGUIスレッド以外から扱ったらいけないと思い込んでるようだけどこれは例外。
つまり、メッセージループを使ったりBeginInvokeを使ったりする必要がない。
メッセージループのことは気にせずに、
独自のスレッドで連続して処理問題ないということ。(普通はプライオリティを若干下げてやる。)

OnPaintやPictureBoxなどに処理を任せるのは画面が無効になったときの再描画の処理を
やってくれるからであって、短いサイクルで描画を繰り返す場合は、その必要性がない。
Control.CreateGraphicsを使えばInvalidateやUpdateを呼ばなくても指定したタイミングで描画することが出来る。


185 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 19:18:43 ]
>>184
そんなトンデモ説を得意げに言っちゃだめw

最初の行の「別のメソッドから」は「別のスレッド」と言いたかったんだろうが、
そんな話見たことも聞いた事もない。

Control.CreateGraphicsを使う場合のメリットは、Invalidate⇒OnPaintという
通常の処理に比べてオーバーヘッドが少ないことなんじゃないの?

逆にデメリットは、描画処理を呼ぶトリガーをOnPaintに一本化できないことでしょ。

もっとも、>>96のように短い一定時間ごとに必ず描画するのならダーティー化
された場合のことを考えなくていいからデメリットと言えないんだろうけど。

186 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 19:30:05 ]
一応、Control.CreateGraphics はスレッドセーフだと言っておこう

187 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 19:36:55 ]
>>186
すまん確かにそうだったw
グラフィック関連長いこと触ってないんで忘れてたよ。

188 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 20:13:37 ]
>>96に最小限の修正を加えてろだに上げてみた。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9025.txt

注、Stopのときの再描画処理としてpicturebox1にPaintイベントを追加している。


189 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 20:55:18 ]
188です。lockの位置を間違ってた。
複数のスレッドからimageを使うことになるので、
lockはvoid Draw(int rad)全体にかけたほうがよかった。
だた、startフラグで制御してるのでただし実行に影響はないはず。

190 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 17:01:47 ]
WinアプリでDataGridViewの行を大量に追加・削除するときって
SuspendLayoutとかの呼び出しをやった方がいいんだろうか?
位置を移動させるとかの場合は効きそうだけど今一歩やるべきかどうかの判断がつかないんだが・・・

今はおまじない的にやってるけども




191 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 21:34:50 ]
データソースをViewから切り離してから追加・削除すると速いかも

192 名前:デフォルトの名無しさん [2009/04/14(火) 20:34:17 ]

これ見てみw

国会の無駄な手当てでお手盛り人件費じゃぶじゃぶの実態w
この経済危機に税金をなんでこういう公務員、国会職員に税金くれてるの?
                     ↓
衆議院議員 渡辺周氏「呆れ返る国会のムダ呆れ返る国会のムダ」
www.choujintairiku.com/watanabes.html

内閣の閣議でどれだけお手盛り大盤振る舞い、浪費が行われているかわかるね。

これが自民党−麻生内閣の実態!!




193 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 20:39:03 ]
>>192
text/plainでくれ

194 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 21:25:00 ]
なんだかんだで結構親切に教えてくれるおまえらが好き。

195 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 21:26:06 ]
どういたしまして
分からないことがあったらまたおいで
がんばってね

196 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 22:06:03 ]
ありがとう。
いつかは教えられる側にまわれるよう精進します。

197 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:00:27 ]
 今、クライアント(C#)-WCF-サーバ(C#)-SQL Serverなアプリケーションを作って
いるんですが、クライアントからデータを検索する必要があります。検索条件
によっては、戻り値のデータが数万件になることもあります。
 そこで、WCFのバインディングのmaxReceivedMessageSizeを大きくして対処
しようと思ったのですが、途中でキャンセルできる必要とサーバのメモリを
節約する必要が生じました。

 どのように実装するのがいいでしょうか?

現在の処理)
1. クライアントが検索条件を指定してサーバを呼ぶ
2. サーバは検索条件によって、SQL Serverの複数のテーブルを検索し、複数
レコードからオブジェクトを組み立てる
3. オブジェクトの配列(やツリー構造)が出来上がったらクライアントに返す

案)
1. サーバはDataReaderでデータベースを検索しているので、一定レコード数
ごとに結果をクライアントにレコード単位でコールバックする。オブジェクト
はクライアント側で組み立てる。
2. DataReaderからデータを読みつつ、一定オブジェクト数ごとに結果をクラ
イアントにコールバックする。ただし、各オブジェクトの大きさはそれぞれ違
うので、オブジェクトの数ではメモリ使用量は計れない。
3. クライアントでデータ取得依頼だけして、数秒おきにサーバに結果を取りに
行く。
4. 戻り値はStreamとし、オブジェクトが出来るたびにStreamにオブジェクトに
入れ、クライアントはそのたびにオブジェクトをデシリアライズする。ただし、
DataReaderを読みつつStreamにオブジェクトを入れる方法がまだ分かってない。

よろしくお願いします。

198 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:06:00 ]
普通に API (鯖側)のほうでページングに対応すれば?


199 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:15:40 ]
どっちも非同期で実装すればいいんじゃね?

200 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:18:27 ]
>>198
ページングとは、
1. クライアントで検索依頼
2. クライアントから1ページ目要求
3. データがなくなるまで、2をnページ繰り返し
ということでしょうか?

サーバで全データをメモリに読み込むことは出来ないので、データベース上に
昇順でユニークなIDが必要になるという理解であってますか?



201 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:20:07 ]
SQL で指定できるでしょ。上限件数

202 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:21:31 ]
>>199
すみません。具体的に御願いできますか?非同期でクライアントから依頼して
サーバから非同期でコールバックするという意味でしょうか?
だとすると>>197の案1, 2ですよね

203 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:23:35 ]
WCF でのサービスメソッド呼び出しを非同期にする。
サーバーでのクエリ実行を非同期にする。

で、適宜タイムアウト。件数が多すぎるとき? シラネ。

204 名前:201 mailto:sage [2009/04/14(火) 23:23:55 ]
あー、説明不足かもしれんので一応。

TOP 句
ttp://msdn.microsoft.com/ja-jp/library/ms189463.aspx

ROW_NUMBER 関数
ttp://msdn.microsoft.com/ja-jp/library/ms186734.aspx

205 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:25:22 ]
>>201
上限件数は指定できます。ただ、最初の件数以降の次のデータを指定するのは
難しい状況です。ユニークで昇順なキーがないので。
データが多いからといって、途中で検索をやめてしまうのはだめです。

ただ、サーバがメモリ不足で落ちるのは駄目ですが、クライアントがメモリ不足
で落ちるのはまだ許容範囲です。

206 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:28:13 ]
ダメです、とか、なんでえらそうなの?

207 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:30:37 ]
>>204
ROW_NUMBER知りませんでした!!使えそうですね。ちょっとこれから調べてみます。

>>206
申し訳ないです。エラーで結果が出ないのはいいのですが、結果が正しくないの
は一番やってはいけないことなので、あのような書き方になってしまいました。

208 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:31:17 ]
>>205
TOP でも 3 回(だっけ?)組み合わせればここからここまでっての
一応できるんだよ。
まぁ天啓にあった某関数と同じ機能な ROW_NUMBER サポして
くれたからこれでよくなったけど

209 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:58:26 ]
カーソル付きのDBMSならHTTP鯖のセッション情報にカーソル情報書き込んでしまえばいいと思った

210 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 00:08:13 ]
>>209
なるほど。



211 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 21:30:23 ]
OLAPに対応してるのってMSSQL2008からだよね。
大丈夫かな?


212 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 22:49:05 ]
質問失礼します。

タスクトレイに格納した状態で再生できるサウンドAPIを探しています。
再生させる際、タスクトレイに格納された状態で、ボリューム調整を行いたいです。

始め、System.Media.SoundPlayerを利用したのですが、音量調整ができませんでした。
次に、Microsoft.DirectX.DirectSound.SecondaryBufferを利用したのですが、タスクトレイに入った状態では再生できませんでした。
上記には勘違いがあるかもしれません。
その点の指摘も含め、分かる方よろしくお願いします。

開発環境:
VisualStudio2008
WindowsXP

213 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 22:56:04 ]
なんで既にタスクトレイさんがわるものなのぉぉおwwww

214 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:03:29 ]
SetCooperativeLevelが不適切なだけじゃね?

215 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:07:58 ]
ありがとうございます。

協調レベルは真っ先に疑いました。
CooperativeLevel.Normal
CooperativeLevel.Priority
CooperativeLevel.WritePrimary
全部試しましたが、ダメでした。。。

フォームを表示すると鳴るんですけど、何故でしょうね。。。

216 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:14:06 ]
SetCooperativeLevel(this, CooperativeLevel.Priority);
今このようなコードを書いています。
thisがいけないんですかね?

表示しているのはフォームではなく、NotifyIconですからそのownerを指定???
う〜む。やっぱり分からないです。。。

217 名前:212 215 216 mailto:sage [2009/04/15(水) 23:29:32 ]
すいません。
自己解決しました。
BufferDescription の GlobalFocus を true にする事で鳴りました!

218 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:31:14 ]
なーんか似た内容の人が居たらしい
hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200511/05110065.txt

219 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 16:45:54 ]
指定したアセンブリのプロセッサアーキテクチャを調べるにはどうすればいいでしょうか?
VS2008で参照を追加したとき.csprojに
processorArchitecture=x86
などと書かれる情報のことです。
ildasmでマニフェストは見てみたのですが、それらしき情報は見つからなかったです。
よろしくお願いします。

220 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 05:03:44 ]
プログラムでやるなら、Assembly.ReflectionOnlyLoadFromで読み込んでAssemblyName.ProcessorArchitectureで



221 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 20:13:06 ]
なんかプロジェクトの規模が大きくなるにつれてIDEが激しく重くなるんですが
どうしようもないんでしょうか?
といってもたかだか*.csファイル数126個、全45109行なんですが。
ユーザーコントロールも10個くらい作ってますが、それも関係してるのかな。

222 名前:デフォルトの名無しさん [2009/04/17(金) 21:33:29 ]
exeとは異なる任意のフォルダにdllファイルを置きたいため以下のプログラムを書きました。
(WidgetLibrary.Widgetクラスは別プロジェクトでdllとして作成)これだとWidgetLibrary.Widgetの名前が解決できないのでビルド
できません。ビルドできない原因は何でしょうか?

namespace ConsoleApplication1
{
public class Loader
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.AssemblyResolve += FindAssm;
Program.Go();
}

static Assembly FindAssm(object sender, ResolveEventArgs args)
{
string simplename = new AssemblyName(args.Name).Name;
string path = @"c:\sample\" + simplename + ".dll";
if (!File.Exists(path)) return null;
return Assembly.LoadFrom(path);
}
}
public class Program
{
public static void Go()
{
WidgetLibrary.Widget w = new WidgetLibrary.Widget(1, "a");
w.widgetDisplay();
}
}
}


223 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:41:29 ]
参照設定で追加していないのでメタデータを参照できないのが原因
と思う。

224 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:41:44 ]
自分で言っているように「WidgetLibrary.Widgetの名前が解決できないので」だろ。

225 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:45:01 ]
>>222
任意のフォルダにDLLを配置するのが目的なら、GACに登録した上で参照設定するのが王道。

.NET Frameworkに含まれるDLLは、ローカルコピーしなくても参照できるだろ。
それは.NET FrameworkのDLLが特別扱いされているわけじゃなくて、それらが
GACに登録されているから。
自作のDLLもGACに登録すれば同様に扱える。

226 名前:デフォルトの名無しさん [2009/04/17(金) 21:58:34 ]
レスありがとうございます。

>>223
参照設定を追加するとプライベートアセンブリになってしまうので回避したいのです。
>>224
解決策でした。
>>225
GACに登録せずに任意のフォルダに置くことは不可能ということでしょうか??

このソースは C# 3.0 IN A NUTSHELL の558ページのコードを確認したくて
書いたものです。

227 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 22:20:42 ]
あの本の綴じ込みはすごくいいね
洋書は製本がイマイチなのが多くて困る

228 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 22:28:17 ]
参照しているアセンブリのプロパティでローカルコピーをオフにすればよい
と思う。

229 名前:デフォルトの名無しさん [2009/04/17(金) 22:43:09 ]
>>228
できました。
どうもありがとうございました。

230 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 23:57:22 ]
GACって何のことか全く知らない俺が、ぐぐる前に適当に妄想してみる。

GACとは、Global Assembly Cacheの略で、システムワイドに.NETのアセンブリを
登録しておくキャッシュ。概念としてはUNIX系のOSでldconfigすると、システム
ワイドに利用するダイナミックライブラリがld.soに登録されるのと似ている。




231 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 05:25:56 ]
>>230
おまえgoogle先生だろw

232 名前:デフォルトの名無しさん [2009/04/18(土) 13:04:23 ]
1.1のContextMenuって、MenuItem.CloneMenuを使用して
状況に合わせたコンテキストメニューを作れみたいになっていたと
記憶してるんですが、
ContextMenuStripだと、ToolStripMenuItemにCloneMenuがないので、
これはどう解釈したらいいんでしょうか?
デザイン時にパターンの数だけ作り付けのContextMenuStripを
用意しとくんですか?

233 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 20:48:31 ]
Timerで回しているときにint(値型?)の配列が画面最小化すると消えてしまうのですが
残しておきたいです
どうすればいいのでしょうか?

234 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 20:52:43 ]
>>233
それだけで回答すると、
そりゃあんたの作り方次第としか言いようがない。

235 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 21:02:42 ]
>>234
作り方が悪かったですorz
OnActivatedを初めてFormが表示されるときにだけ呼ばれると勘違いしてました…


236 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 22:06:35 ]
それなんてLoadイベント

237 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 22:51:48 ]
例えばZキーが押された状態でAを押してもOnKeyDownが発生しません。
これをZキーが押されている時にAが押されていることを知りたいのですがどうすればいいでしょうか?


238 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:06:29 ]
e.Handled = true;でいけました

239 名前:デフォルトの名無しさん [2009/04/18(土) 23:12:15 ]
先日、C言語の勉強を始めた者です。まだまだ参考書の始めの方なのですが、エラーが起きてよくわからないことになってしまいました。
いまだにキーボードから数値を入力させて、それを表示する程度のものの自己流改変なのですが、なぜか二つ目を入力した後にエラーが起きて止まってしまいます。
それと、途中でプログラムの流れを止める方法がわからないので、それも出来れば教えていただけませんでしょうか?
とりあえず理想としては、エンターを押してからもう一度押す迄
変数X + 1の答えを変数Xに代入し続けるようなプログラムが作りたいのです。

一応、ソースを書いておきます。

#include <stdio.h>

int main(void)
{
int PS;
float PS2;
float PS3;

printf("まずは整数を入力してください。");
scanf("%d",PS);

printf("次は、小数を入力してください。");
scanf("%f",PS2);

printf("最後にもう一度、小数を入力してください。");
scanf("%f",PS3);


int end;

printf("では、なにか数字を入力してエンターを押すと、結果が表示されます。");
scanf("%d",end);

240 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:13:35 ]
>>239
すれ違い



241 名前:デフォルトの名無しさん [2009/04/18(土) 23:13:52 ]

printf("最初の整数は %d ですよね?",PS);
;
printf("そして次は少数一回目は %f ですよね?",PS2);
;
printf("そして最後は、 %f となっておりますよね?",PS3);
;

int red;
printf("最後に、面白いものを見せましょう。適当に数字を入れてエンターを押してください。");
scanf("%d",red);

printf("exeファイルのダブルクリックをしていなければ、適当に入れてもらった数字を足した数を「%d」内に表示しておきます。では、さようなら。",end + red);


return 0;
}

最後のprintf()が終わっても自動的に閉じないようにするには、いったいどうすればいいのでしょう?

242 名前:239,241 [2009/04/18(土) 23:15:53 ]
申し訳ございません。
スレ名をチラっとしかみていませんでした。本当に申し訳ありません。

243 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:36:08 ]
C#ってヘッダーファイルが無いのか。
変な言語だな。
C#って手続き型のプログラムができないのか。
不便な言語だな。
C#って関数に省略可能な引数を使えないのか。
代替手段としてオーバーロードしないといけないのか。
馬鹿げた言語だな。
C#ってswitch文でbreak無しで下に降りることができないのか。
気が狂ったような言語だな。
それと、0かそうでないかを評価できないのか。
初期化する前の不定値を参照するのはコンパイルエラーか。

244 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:46:36 ]
省略可能な引数は確かにほしいな。
他のは賛同しかねるが。

245 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:49:30 ]
省略可能な引数はC#4.0で追加される。

swichでのフォールスルーに関しては議論が分かれるとこだろう。
C#ではステートメントを含まない場合にのみ許可されている。
gotoステートメントによってラベル付きステートメントに直接移動する事もできるけど滅多に使われない。

246 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:58:26 ]
>>239
初心者は恐ろしいことするよなぁ

247 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:00:32 ]
セグメントエラーです。。。

248 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:37:30 ]
C#はC言語の標準関数を使えないんだろ。
ぼろい言語だな。.Netでしか通用しないノウハウだな。

C++ならC言語のノウハウは生かせるから、VC++やC++Builderで、MFCやVCLの知識は無いけども、
イベントハンドラにC言語のコードを差し込んで、単にGUIの画面を借りるだけのスタイルで、
普段コマンドプロンプトのプログラムしか作らない俺でも、Windowsプログラムを作れたぞ。

249 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:49:14 ]
釣りたいならもっと勉強してから出直してきな

250 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:10:24 ]
>>243>>248 は逆に、C/C++ への皮肉だと思う。




251 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:14:24 ]
C#でC言語の標準関数を使った事がある俺は神か

252 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:14:35 ]
ある意味釣られたってわけだなw

253 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:17:50 ]
ああ、msvcrt*.dllの関数も呼べるよな

254 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:39:12 ]
C++人はマネージ拡張C++に手を伸ばせば同じことができるし、
VB6人やMS-Office VBA人は差分学習ですぐにVB.netやれるし、
(中途半端に似ててかえって混乱するとかいうのはデマ)
.Netしか通用しないノウハウのC#を学習する意味不明。

255 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:42:37 ]
C互換ライブラリとかどこかにあったりしないかな。
C.StdIO.Printf() とか用意してある

256 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:42:57 ]
第二段来ました

257 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 02:07:22 ]
>>254
ところがどっこい。
.NETのサンプルがC#だけで出て来る例というのがよくあるため、
VBの人もC++の人もC#のサンプルを見て自分の言語に移す羽目に。

ここから蛇足。一昔前だったら、Cで書かれたWinAPIのサンプルを
VBへ移したり、C++ならクラスでラップしてみたりしていたわけで、
時代が移ってもやっていることに変わりはないのさ_| ̄|○

258 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 02:09:54 ]
しっ、話しかけちゃいけません!

259 名前:デフォルトの名無しさん [2009/04/19(日) 02:10:41 ]
>>254
じゃあdelphiしか選択肢がないな

260 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 02:14:42 ]
kylixってどこいったん?



261 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 03:24:35 ]
>>257
要は君はコピペグラマってこと?
だったら.NETの問題っていうより君自身の問題なんじゃないの?

普通はサンプルの考え方を拝借することはあってもコードをそのまま引っ張る
なんてしないよ。

262 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 03:47:00 ]
そりゃそうだ。だいたい、C#に癖のある構文なんてそんなに無いから、
サンプルを理解するくらいなら特にC#の知識を持ち合わせていなくても問題ないだろう。

もっとも、VB.NETやC++/CLIからもうちょっと手を伸ばせばC#にも手が届くだろうとは思う。
手が届くというだけではC#を学習する理由にはならないから、254への答えでは無いけどな。

263 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 08:38:49 ]
>>239が一瞬HLSLに見えた

264 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 08:53:42 ]
あんな見え見えの構ってちゃんの相手してやるんなら>>239に答えてやればよかった
もういないだろうけどscanfの引数は取得したい値を格納する変数のポインタを入れなきゃだめだよん

265 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 10:09:38 ]
一章とかでscanf()してる入門書とかあるからなあ

266 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 10:47:06 ]
いまだにCやるときはscanfを使う俺
なんで一行読み込みがgnuのgetlineしかねーんだよ・・・標準で作れよ
メモリ確保こわい

って感じ

267 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 18:12:40 ]
fgets して sscanf するのが面倒だから
getopt に頑張ってもらうか適当な設定ファイル読ませるようにしちゃうなぁ。

つか C# 関係ないな。

268 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 02:23:31 ]
たまに使うVC++でgetline()を使おうとして、「あれ?」と思う俺。

269 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 11:37:48 ]
Collection系(例えばQueue)でロックされた状態で処理を行いたいとき

1.lock(独自のロックオブジェクト)
2.lock(対象.SyncRoot)
3.Queue.Synchronized(対象)

とか考えられるんですが

使い分けの方法がわからない
1・・・コレクションだけではなくその他の変数やオブジェクトもロックしたいときにまとめて一回でやりたいから使うかなと
2、3 この違いは一体何なのか教えてほしいです。

そして Queue.Synchronized でMSDN調べたら
同期されている (スレッド セーフな) Queue ラッパーを返します
とありますが、型が同じということだけはわかりますがこれはコピーされたオブジェクトなのかそれとも元の本体そのものなのか・・・

予想すると
3のラッパーはオブジェクトのディープコピーをかえしてきて読み取り専用的に扱う
削除なんかは3の操作ではできないから1,2の方法を使って要素を削除したり

こんな考え方でいいのでしょうか?




270 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 21:40:44 ]
>>269
.Net Reflector



271 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 22:08:11 ]
ソース公開されてるからReflector使わんでもええやん

272 名前:デフォルトの名無しさん [2009/04/21(火) 05:09:56 ]
ReflectorとReflectionは違うものですか?

273 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 05:15:22 ]
>>272
うん

274 名前:デフォルトの名無しさん [2009/04/21(火) 05:20:35 ]
ツールか。新しい機能かとオモタ

275 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 08:45:40 ]
>>269
どっちかっていうと1.2.が似てて、3.が違うよ
3はクラスメソッドがスレッドセーフになったコレクション。
Dequeue()やEnqueue()はスレッドセーフで実行できるけど、
列挙処理中はSyncRoot等でロックしないと別スレッドでの変更に対応できない

あとラッパーっていうのは元のオブジェクトに
新しい機能をかぶせるテクニックの総称だから元の本体だね
削除も普通にできる

276 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 08:49:30 ]
object ICollection.SyncRoot
{
get
{
if (this._syncRoot == null)
{
Interlocked.CompareExchange(ref this._syncRoot, new object(), null);
}
return this._syncRoot;
}
}

277 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 11:09:13 ]
説明ありがとうございます。

>>275
列挙している間に別スレッドからの追加・削除処理が入る場合は基本ロックが必要そうですね・・・
そこまで処理速度が必要そうなわけでもないので、ひとまずロックさせて使ってみようと思います。

>>276
結局は内部で専用のロックオブジェクトを提供してくれているだけという感じでしょうか

278 名前:デフォルトの名無しさん [2009/04/21(火) 13:29:20 ]
Shared code , Shared source といった類のキーワードでgoogle先生に聞けば以前はあっさり見つかっていたのに・・・
どこにいったんだろう?
VisualStudioのライブラリソースコード表示の説明リンクを次から1の直下に張り付けておいたら良いと思う。
誰か場所知っていたらリンク張って欲しいです。

>>277
実はソースコードみた方が圧倒的に正確だしてっとりばやい、凄い単純な実装なんで。
www.microsoft.com/downloads/details.aspx?FamilyID=8c09fd61-3f26-4555-ae17-3121b4f51d4d&DisplayLang=en
とりあえず VisualStudio からではないですが、ソースコードです。
ダウンロードしてgrepして探してみてください。

279 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 18:40:07 ]
条件によって異なる複数の変数(string或いはint)を
配列化して(一列に並べて)、各変数に代入するメソッドを変数の個数だけ実行したいのですが、
デリゲートを使うとオーバーロードできないため、Object型を渡して判別するという事も考えたのですが納得できません。
unsafeのポインタを使うべきなのでしょうか。

280 名前:279 mailto:sage [2009/04/21(火) 18:52:28 ]
すみません。具体的に言うと
foreach (string tmp in bufStr)
{
str = DataTypeCheck(tmp);

if (str == null)
{
//・・ここでメソッドを呼び出してそれぞれ代入
}
else if (str == "case1")
{
//・・代入する変数のリストを作成
}
else if (str == "case2")
{
}
}
データ(string[])は以下のようになっており
case1
a
b
case2
・・・
この場合はa,bをcaseに応じた変数に格納します。



281 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 19:23:47 ]
具体的といいつつ酷く分かりづらいな
Func<T>でも使えばいいんじゃね
privateなメソッドなら型制約とかもいらんっしょ

282 名前:279 mailto:sage [2009/04/21(火) 19:53:25 ]
>>281
説明下手で、すみません。
ググりましたが、おそらくお察しの通りです。
感謝いたします。m(_ _)m






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

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

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