[表示 : 全て 最新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くらい

301 名前:298 mailto:sage [2009/04/26(日) 16:56:29 ]
>299-300
ありがとうございます。そこまで複雑な事ではないです。

302 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 17:06:03 ]
じゃあどういうことよ、なのよ

303 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 17:09:44 ]
int[] array = new int[999999];
とでもやって多めに確保しとけ

304 名前:デフォルトの名無しさん [2009/04/26(日) 17:11:07 ]
>>301
むしろ>>298の説明のほうがそれいじょうに複雑なことではあります

305 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 18:35:03 ]
Compositパターンのことを言ってるんじゃないの?

306 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 18:35:51 ]
「コンポジットパターン」と言いたいんじゃないかな?
ということで、これでぐぐってみてください。

307 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 08:52:01 ]
このスレはやさしいエスパーが多いな

308 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 00:51:39 ]
FormBorderStyle.Noneにして標準のタイトルバーとか表示させないで独自のものを表示したりしています。
タスクバーの右クリックでのシステムメニューは下のURL等を見て表示できるようになったんですが、最小化などが無効になったままです。
これは何かメッセージを処理したりすれば有効にさせることなど出来るのでしょうか?
最大化などもFormのWindowStateをNormalのまま最大化らしくふるまうように無理くりやっています。

もしくはこんな風な独自のウィンドウを作る時の従うべき方針などあれば是非是非エロイ人

309 名前:308 mailto:sage [2009/04/28(火) 01:11:26 ]
さーせん、const int WS_MINIMIZEBOX = 0x20000;
とかをCreateParamsのStyleに追加したら最小化も表示されたっす。




310 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 01:39:19 ]
Graphicsに任意のControlを描画することって出来ます?
var webControl=new WebControl()
webControl.Draw(graphics);
みたいな感じで。


311 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 01:44:28 ]
Excel 2003 vbaの関数をC#から呼んでるんですが
実行時にvba内のブレークポイントで処理を止めるには
どうしたらいいんでしょうか。

312 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 02:05:10 ]
>>310
でやってみていかがでしたか?

313 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 18:41:06 ]
public partial class Form1 : Form
{
[DllImport("libmecab.dll")]
extern static int mecab_new2(string arg);
[DllImport("libmecab.dll")]
extern static string mecab_sparse_tostr(int m, string str);
[DllImport("libmecab.dll")]
extern static void mecab_destroy(int m);

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
int mecab = mecab_new2("");
string s = mecab_sparse_tostr(mecab,textBox1.Text);
mecab_destroy(mecab);
textBox2.Text = s;
}
}

これがXPでは動くのだけど、Vistaでは動かない。

mecab_sparse_tostr(mecab,textBox1.Text); で
System.AccessViolationException はハンドルされませんでした。
Message="保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。"
がでる。
意味がわからない。なぜ?

314 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 18:51:15 ]
そのメカブってどこからもってきてんのよ

315 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 18:55:02 ]
これ。
mecab.sourceforge.net/libmecab.html


316 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 18:55:19 ]
オレも何かメカブそば食いたくなったわw

317 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 18:58:36 ]
実はVista x64版だったというオチ、とか

318 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 20:04:16 ]
>>317
それはさすがに大丈夫だった。
また、Mecabインストール時についてくるEXEは、普通に動きます。

319 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 20:06:30 ]
とりあえずpInvoke行って宣言正しいかみてこようず



320 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 20:37:13 ]
>>313
いま実際に動かしてみた
返値がStringだとマーシャラがギブアップするみたい
IntPtrで受けてMarshal.PtrToStringAnsiとかで文字列変換すべし

321 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 21:21:30 ]
ref string でもいけそうな気がする。

322 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 21:28:24 ]
返値にrefは使えない

エラーが出る原因だけど、あくまで推測レベルだが
返値にStringを指定した場合UnmanagedType.BStrならSysFreeStringが、
それ以外ならLocalFreeだかCoTaskMemFreeだかが自動的に呼び出されたはずなんで
メモリ周りの保護の強化との兼ね合いと思われる

323 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 22:10:13 ]
>>320 >>322
ありがとう。XP、Vista両方動いた。


324 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 09:23:57 ]
DataGridviewって動的列つかったCross集計もできないし機能ショボスギですね 代わりにMSレポートのマトリックス使ってますが将来DataGridviewにGrapeCityのGridみたいな機能が付加されることはないでしょうか

325 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 11:46:10 ]
高機能すぎると独禁法が面倒なんだ

326 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 14:35:30 ]
コンポーネントは機能が少ないほど良い。

327 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 19:31:39 ]
×コンポーネントは機能が少ないほど良い。
○コンポーネントは機能が洗練されているほど良い。

328 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 21:23:18 ]
>>326機能ゼロが最高だよね。

329 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 21:52:40 ]
せめてAlt+F4で終了する機能ぐらいはつけてくれ



330 名前:デフォルトの名無しさん [2009/04/30(木) 22:54:12 ]
ListView を View == Details で使っていて、
選択された行をタブ区切りでクリップボードに転送してみようと思っているのですが
簡単な方法もしくは、一般にListViewからクリップボードへの定型的なやり方ってありますか?

331 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 23:02:53 ]
1パターンしかないと思うが 細かい差異はあるかも知れんけど

332 名前:デフォルトの名無しさん [2009/05/01(金) 02:27:08 ]
C++で
const int data[] = {1, 2, 3, 4};
のようにやっていたのを

C#で書き直したいんだけど、
const int[] data = {1, 2, 3, 4};
とか
const int[] data = new int[]{1, 2, 3, 4};
って書くと文句言われる。

int[] data = {1, 2, 3, 4};
なら、文句言われなくなるんだけど、

C#でconst配列の初期化ってどうすればいいの?

333 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 02:29:31 ]
そんなもの無い
dataそのものへの代入不可ならreadonly
要素の変更不可ならReadOnlyCollection<T>でラップ

334 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 02:31:20 ]
private readonly int[] data = new int[] {1,2,3,4};

335 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 11:22:09 ]
>>334
配列の要素に書き込めます

336 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 11:37:53 ]
>C++で
>const int data[] = {1, 2, 3, 4};
は要素の書き換え可なの?

337 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 12:22:30 ]
>>336
それは
int const data[] = ...
と同義だから、constはintに掛かってて、要素は書き換えられない。

338 名前:デフォルトの名無しさん [2009/05/01(金) 13:03:46 ]
スレ違いだが、

>>336
要素の書き換えは不可。

>>337
前半がウソ。それは同義ではない。

339 名前:337 mailto:sage [2009/05/01(金) 13:40:55 ]
ごめん適当に書いたんだけど、C++とCで違いがあるの?
リンケージ変わったりとか?



340 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 14:16:41 ]
static または auto に宣言しているなら変わらないかと、つか C# スレですが
専門のスレで聞いた方が良いで

341 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 14:21:46 ]
>>335
readonly System.Collections.ObjectModel.ReadOnlyCollection<int> data = Array.AsReadOnly(new int[] { 1, 2, 3 });
こうかな、使ったことないんで自分で確かめてくれ。

342 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 14:23:28 ]
読み取り専用その他、各種アダプタ類は、class に static 関数として定義されている事が多いんで、いろいろ見てくらはい。

343 名前:デフォルトの名無しさん [2009/05/01(金) 16:36:37 ]
メインのフォームから別スレッドを起動して、そのスレッドからフォームのテキストボックスにアクセスすると
CrossThreadMessagingExceptionが投げられるのですが、どのように回避するのが良いでしょうか?

344 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 16:42:06 ]
コントロール スレッド でぐぐれ

345 名前:デフォルトの名無しさん [2009/05/01(金) 17:48:18 ]
スレッドをAbort()した後に、同じスレッドをStart()すると、
ThreadStateException
{"スレッドが実行中か、または終了しています。再起動できません。"}
が投げられます。

一度Abort()したスレッドを再開するにはどうすればよいでしょうか?
毎回new Threadをし直す必要があるのでしょうか?
できれば、new Threadはアプリ起動時に1度だけで済ませたいです。

346 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 18:00:27 ]
メッセージどおり、Abortしたら再起動はできない
つーかAbortなんか使っちゃダメ SuspendとかResumeとかも禁止
フラグとかでスレッド自身が自分の状態を管理するようにする

別にThread作りなおしてもかまわんとは思うが

347 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 18:08:39 ]
自分も独学でフラグで誤魔化したので、
スレッドの待機をメッセージが無い.NETでどうするか疑問だった

マジでみんなフラグ管理で逃がしてるの?

348 名前:デフォルトの名無しさん [2009/05/01(金) 18:48:39 ]
>>346
Resume、Suspendは「使用しないでください」と書いてありますが、Aboteには書いていません。
何故、Abortを使うのはダメとおっしゃっているのでしょうか?

349 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 18:52:43 ]
>>348 マジ?どこどこ??



350 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 18:56:26 ]
>>348
メモとかに書いてるっしょ どこで終了するか分からないからオブジェクトが不完全な状態になりうるとか
更には確実に終了されるかどうか保証できないとか実にやばそうな匂いが漂ってくる

351 名前:デフォルトの名無しさん [2009/05/01(金) 19:14:36 ]
>>349
Visual C# Express 2008のインテリセンス

>>350
そうは書いていないようです

352 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 19:26:48 ]
インテリセンスて
ヘルプの解説見ろよ……

353 名前:デフォルトの名無しさん [2009/05/01(金) 19:35:28 ]
>>352
ヘルプの解説でも、
SuspendとResumeの項には
「メモ : このメソッドは,互換性のために残されています。」
「[ObsoleteAttribute("Thread.Resume has been deprecated. Please use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources. go.microsoft.com/fwlink/?linkid=14202", false)] 」
とありますが、
Abortの項にはありません。

詳しくはヘルプをご覧ください。

354 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 20:21:44 ]
Thread.Sleep() に Timeout.Infinite を渡す。
再開は Thread.Interrupt() で ThreadInterruptedException をスローさせる。

355 名前:347 mailto:sage [2009/05/01(金) 21:40:05 ]
さんくす

Thread.Interruptのコード例でsleepSwitchフラグの位置がイマイチ納得いかなかったけど
>>354に書いてあるように使うよ

356 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 22:04:03 ]
>>347
一般にはフラグは使わない、イベントやセマフォやミューテックスの類を使って制御する。
フラグは簡単にミスするしバグりやすいよ、CPUパワーは無駄にするし、スレッドの実行優先順位も狂って非効率になる。

357 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 22:10:40 ]
再開はそれでいいんだけど休止をどう伝えるのかイメージつかないんですが

358 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 22:25:42 ]
>Thread.Interruptのコード例でsleepSwitchフラグの位置
デバッガで確認したけど、Thread.SpinWait(10000000);の行には行かないね。
シングルコアだとJoin呼ぶまでスレッド動かないからだね。
試しにInterrupt()のあとでThread.Sleep()入れてメインスレッドをスリープ待機に
入れちゃうとThread.SpinWait(10000000);がThreadInterruptedException起こすし。
マルチコアだと動かないんじゃないか?このサンプル。

359 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 22:48:07 ]
>>357
メモリ操作オンリーの計算なら止めてしまっても問題ないと思うが
普通にいろいろなリソースを操作しているなら勝手なタイミングで止められたらマズくね?
もちろん上記のような特殊な状況があるならそれこそSuspendしちまっても全然問題ないと思われますけど。
普通の状況では、イベントを確認して問題なければそこで止める。



360 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 23:04:40 ]
Sleepする前にInterruptされていたら停まらないでThreadInterruptedException起こすし
問題ないかを確認するのはInterruptする側でしろということじゃないかな。

361 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 23:07:19 ]
なんつーか、AbortにしてもInterruptにしても、これらの操作はスレッドに対する最終手段だぜ
普通に使うものじゃない

362 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 23:09:02 ]
同期を使わないなんてアリエナイ。

363 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 23:11:25 ]
いや、開発するアプリの種類によるか・・・
スレッド自体、使わない人は使わないんだし。

364 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 23:11:48 ]
スレッドの外部から停止再開させたいなら、同期オブジェクトを使おうが
結局フラグ的な使い方をすることになりそうな気がする。


365 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 23:13:55 ]
>>364
フラグだとvolatile付け忘れたり、メモリーバリア忘れたり、素人には難しいぞ。

366 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 23:23:06 ]
ManualResetEvent だともろフラグだ。

そういえばBackgroundWorkerの実装をみると
volatileもmemorybarrierも使ってなかったのを思い出した。

367 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 23:24:28 ]
つかEventはマルチスレッド用のフラグですから
セマフォはマルチスレッド用のカウンタですから

368 名前:358 mailto:sage [2009/05/02(土) 03:35:46 ]
嘘こいてた。

>入れちゃうとThread.SpinWait(10000000);がThreadInterruptedException起こすし。
起きない。そもそも待機してない風?
>スレッドを iterations パラメータで定義した時間の間待機させます。
ってヘルプにあるのに・・・ある・・・定義した時間って単位はいくらだ?フェムト秒?
Causes a thread to wait the number of times defined by the iterations parameter.
・・・誤訳かよ!
待機とブロックと中断の用語がなんか変な気もするし。日本語ヘルプはだめすぐる。

369 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 03:40:54 ]
WCFとかAzureの質問ってここでしていいのかな。

Azure SDKのdevelopment fabric上でWCFサービスを動かすと、
127.0.0.1からはアクセスできるのに、自分のホスト名から叩くとアクセスできなくて、
俺の設定ミスなのかAzure SDKのバグなのか分からないんだけど。

解決策を知ってる人がいたら教えて欲しい。



370 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 03:56:03 ]
切り分けしようぜ

371 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 03:56:30 ]
手元に無いんで試してないがエスパーしてみると
リスナーでIPAddress.Anyとすべきところがそうなってないとか

372 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 10:20:58 ]
>設定ミスなのかAzure SDKのバグ

自分のプログラムが悪いとはこれっぽっちも考えてないのね

373 名前:デフォルトの名無しさん [2009/05/03(日) 11:22:10 ]
>>372
「俺」って言うのは日本語で「自分」を示す一人称の一つだよ。

374 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 11:42:24 ]
設定ミスと考えてるってことはプログラムは悪くないと思ってるってことだろ

375 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 11:44:41 ]
設定はプログラムでするだろ

376 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 12:15:09 ]
何言い返してんだよ、本人か?
そうでなけりゃ、自分のプログラムミスを設定ミスと言い直してごまかす人か?

377 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 12:58:12 ]
あ、回答どうも。

>>370
がんばってみたんだけど無理だった。。
とりあえず、MS提供のサンプルで同じことが起こるのは確認済み。
別環境でやっても同じく。

>>371
なるほど。そういうオプションがあるのか。
IISでその辺設定するにゃどうしたらいいんだろ。調べてみますわ。

>>372
ランタイムの初期化って設定って言いませんかねぇ。
あと、言うの忘れてたけど.svc使ってIISの機能でホスティングさせてたんで。

378 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 13:43:49 ]
WCFはIISでホスティングさせているか否かでだいぶ違うから、
そういう大事なことは先に言えよな。
あとはトランスポートになに使ってるかかな、BasicHttpBindingとかそんなの。


379 名前:377 mailto:sage [2009/05/03(日) 14:05:03 ]
失礼(´・ω・`)

バインディングはBasicHttpBindingにしてる。
ウィザードのデフォルトはWebHttpBindingだけど、
それだとそのまま使うとなんか例外投げたので。

とりあえず、MSの開発者側も認識している既知の問題としては、

WCFアプリをAzureにうpすると、自分のホスト名を、
ユーザが使うロードバランサのアドレス(tp://***.cloudapp.net/)ではなく、
分散環境内でアプリが実際にロードされている鯖(tp://[guid].cloudapp.net)のもの
として認識してするせいで、それをendpointとしてWSDLを生成してしまう、

というのはどっかで見かけたけど、それがこの問題とも関連しているのかよく分からない。



380 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 14:06:36 ]
ちなみにこれ。
code.msdn.microsoft.com/wcfazure/Wiki/View.aspx?title=KnownIssues

381 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 14:10:18 ]
内部識別子でWSDLを公開している様子
wcfazure.cloudapp.net/
wcfazure.cloudapp.net/ConsoleCalculator/Service.svc

けど、ローカルで動かす分には鯖名自体は(もちろん)合ってるから関係ないはずではあるんだけど。

382 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 15:59:03 ]
まずはIISで動かしているのかASP.NET開発サーバーで動かしているのか確認かな。
後者なら127.0.0.1(localhost)しか受け付けない。
タスクトレイにASPNET開発サーバーアイコンが表示されているようなら後者。
IISで動いているなら、コンピューターの管理からIISの設定を確認する。
まずWEBサイトの識別のIPアドレスで「未使用のIPアドレスすべて」になっているかどうか。
ここが127.0.0.1になっていればそれでしか繋がらない。
次にこのアプリの仮想ディレクトリを確認でセキュリティ関係に矛盾がないか確認。
よくやってしまうのが、統合認証+匿名認証の設定になっていて、
WEBで公開しているディレクトリにIUSR_xxxxのアクセス許可がないケース。
統合認証で認証された場合は問題ないが、匿名の場合にアクセス拒否を食らう。

383 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 17:09:52 ]
>>382
ありがとう。
いま、手元に環境がないので、後日確認してみて報告しますわ。

384 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 18:30:41 ]
C#でテキストを1行ずつ読み込み、条件に合った行を取得するような簡単なものを組んでいるのですが、
条件に合った行から連続する3行とかを取得するにはどうすれば良いのですか。
初歩的かもしれませんが、ご教示願います。

385 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 18:32:17 ]
>>384
とりあえず下の場合の動作は?

テキスト
1234
1234
1234
abcde
abcde
abcde

条件: 1234

386 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 18:37:32 ]
>>384
条件に一致した行のインデックスとって自分でそこから2行読めば?

387 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 18:41:59 ]
なんかJavaより面倒そう

388 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 18:42:02 ]
var result = new List<string>();
int flag = -1;
foreach (string line in lines)
{
if (条件に合ってる行の場合)
{
flag = 0;
}
if (flag =! -1)
{
result.Add(line);
flag++;

if (flag > 3)
{
flag = -1;
}
}

}

389 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 18:50:20 ]
=! だと・・・?



390 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 19:08:04 ]
grepと同じ挙動ならこんな感じか

IEnumerable<string> Grep(IEnumerable<string> source, string pattern, int after) {
  int n = 0;
  foreach (var line in source) {
    if (line.Contains(pattern)) n = after + 1;
    if (n > 0) {
      n--;
      yield return line;
    }
  }
}

391 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 19:25:31 ]
>>384
bbbが条件だとして、そこから3つを取得

string[] list = { "aaa", "bbb", "ccc", "ddd", "eee" };
var result = list.SkipWhile(s => s != "bbb").Take(3);

392 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 19:44:16 ]
linqを使いたいお年頃なんですね

393 名前:384 mailto:sage [2009/05/04(月) 20:03:01 ]
返事が遅くなりました。

1234
aaa
bbb
ccc

2345
ddd
eee
fff

のようになっていまして、ReadLineで順に読んでいって、1234を発見したときに、
aaa、bbb、cccの3行を取得するようにしたいです。

1234の行は取得できるのですが、その次の行を読んでbreak;の方法がいまいちわかりません。

394 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:10:11 ]
もし1234が見つかったらのifステップ中は
ReadLine();
ReadLine();
ReadLine();
じゃだめなの(;´Д`)

395 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:10:39 ]
>>393
1234が2回以上あらわれることはあるか、
また1234に続く3件のうちに1234が含まれていた場合の扱いは?という確認だろ。
そういうことはありえないという条件でもよいのだが。
その条件が確定すれば簡単だよ。

396 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:16:30 ]
すみません。おそらくすごい初歩的なことだと思います。
検索する行(この場合は1234)は、他の行には一切ありません。
>>394さんの3回記述をするのは、次の2行も取得できるということですか?
Webはいろいろ調べてみたのですが、1行ずつ読み込む方法しか書いてなかったもので。

397 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:30:44 ]
>>385はスルーですかそうですか

398 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:31:52 ]
>>391はスルーですかそうですか

399 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:33:15 ]
>>398
いやまて391は流石に役に立たないだろう根本的な部分で



400 名前:384 mailto:sage [2009/05/04(月) 20:41:24 ]
>>385を書かれた時点で自分の伝えたいことが伝わってないことがわかり、をれを参考にして例示を上げてみました。
スルーするつもりはありませんでしたのでご容赦ください。

>>394の方法でやってみたところ、思った通りの挙動が確認されました。
まだ本片手で勉強している最中ですので、このような質問内容になったことをお詫びいたします。
みなさん、ありがとうございました。






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

前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