C♯, C#相談室 Part3 ..
[2ch|▼Menu]
309:デフォルトの名無しさん
07/10/24 12:42:15
それは違うでしょw

310:デフォルトの名無しさん
07/10/24 16:09:26
普遍性を保証したいだけなら ReadOnlyCollection みたいなのを作る手はあるけど。
効率面を気にしてのことなら、コンパイラの最適化を期待するしか。

311:デフォルトの名無しさん
07/10/29 15:31:59
int pi=3; ///<summary>円周率</summary>

こういう風にXMLコメントを定義の右側に書く事ってできなかったですか?
(上の通り書くと当然、次に定義される物のコメントとして扱われますが)
できたような気がするのはdoxygenか何かと混同してるのかな

312:デフォルトの名無しさん
07/10/29 16:25:14
C# の /// だとそれは無理。

313:デフォルトの名無しさん
07/10/29 17:04:51
了解
3.0でできるようにならんかな

314:デフォルトの名無しさん
07/10/29 17:06:42
doxygen使えばよくね?

315:デフォルトの名無しさん
07/10/29 17:19:28
int a; /// <summary>aaa</summary>
int b;



int a;

/// <summary>bbb</summary>
int b;

で意味が変わるなんて糞仕様以外のなんでもないだろ。

316:デフォルトの名無しさん
07/10/29 17:24:41
当然の仕様だ

317:デフォルトの名無しさん
07/10/29 17:54:37
int a = 0;

a=0 as int
が混在してるようなもんだろ、それ。

318:デフォルトの名無しさん
07/10/29 18:25:02
ちげーよ

319:デフォルトの名無しさん
07/10/29 19:41:06
ふと頭を過ぎったこと。
>>315みたいな奴がきっとエスパー召還質問するんだろうな。

こういう人って自分の書いたことが一意に相手(コンパイラ含む)に伝わるかどうかっていう
思考回路が欠けてるんじゃないの?

320:デフォルトの名無しさん
07/10/29 19:43:30
>>315…なのか…?

321:デフォルトの名無しさん
07/10/29 20:13:28
>>319
      r;ァ'N;:::::::::::::,ィ/      >::::::::::ヽ
.      〃  ヽル1'´        ∠:::::::::::::::::i
       i′  ___, - ,. = -一   ̄l:::::::::::::::l
.      ! , -==、´r'          l::::::/,ニ.ヽ
      l        _,, -‐''二ゝ  l::::l f゙ヽ |、 ここはお前の日記帳じゃねえんだ
        レー-- 、ヽヾニ-ァ,ニ;=、_   !:::l ) } ト
       ヾ¨'7"ry、`   ー゙='ニ,,,`    }::ヽ(ノ  チラシの裏にでも書いてろ
:ーゝヽ、     !´ " ̄ 'l,;;;;,,,.、       ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{   __)`ニゝ、  ,,iリ::::::::ミ
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ ,  な!
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /

322:デフォルトの名無しさん
07/10/29 20:18:53
コピペ君って馬鹿だな、まで読んだ。

323:デフォルトの名無しさん
07/10/29 22:06:30
>>315
それがダメなら同じ///じゃなくて別の表記にすればいいだけだわな
doxygenでも///<みたいに書いていたはず

324:デフォルトの名無しさん
07/10/30 01:34:20
つかコードの後ろにコメントってセンス無さ杉

325:デフォルトの名無しさん
07/10/30 11:24:47
大量のツッコミを受けた>>315が反論できなくなったために
センスという否定も肯定もできない理由を使って問題の大前提を否定し始めたように見える

326:デフォルトの名無しさん
07/10/30 11:47:11
>>325
煽りたいだけなら他所でやれよ
>>315の言いたい事すら理解できてないだろお前・・・

327:デフォルトの名無しさん
07/10/30 12:16:29
>>322
コピペ君って馬鹿だな、まで読んだ。

328:デフォルトの名無しさん
07/10/30 15:55:11
ワロス

329:デフォルトの名無しさん
07/10/30 20:07:27
>>315の指摘は至極まっとうだと思うんだけど
>>319は何が言いたいのかわからん

330:デフォルトの名無しさん
07/10/30 20:17:21
>>319の指摘は至極まっとうだと思うんだけど
>>315は何が言いたいのかわからん

331:デフォルトの名無しさん
07/10/30 20:38:10
ひろ君もたか君も
つまらないケンカはやめなよ!

332:デフォルトの名無しさん
07/10/30 20:38:45
けい君ですが

333:デフォルトの名無しさん
07/10/30 22:17:02
ちょっとお伺いしたいことが
URLリンク(www.katch.ne.jp)
ここに書いてるclassを呼び出す記述がわかりません。。
ちなみにFormにはテキストボックス(TextBox1)とボタン(button1)があり
テキストボックスにURLを打ち込んで、ボタンを押すと、実行されるように
したいのですが・・・
どなたかわかる方がおられましたらよろしくお願いします

334:デフォルトの名無しさん
07/10/30 22:20:14
classは呼び出せませんよ

335:デフォルトの名無しさん
07/10/30 22:22:55
>>334 では記述例を・・

336:デフォルトの名無しさん
07/10/30 22:23:42
まずなんか本買うなりして基礎からやった方がいいよ
というかやれ

337:デフォルトの名無しさん
07/10/30 22:27:47
prismbox.sample.httpclient.Class2 i = new prismbox.sample.httpclient.Class2();
i.Class2(textBox1.Text, @"c:\test.gif");
ではi.Class2のところでエラーがorz

338:デフォルトの名無しさん
07/10/30 22:34:46
>>337
メソッドなら呼び出せる
Class2はメソッドじゃない

339:デフォルトの名無しさん
07/10/30 22:43:29
すいません>>338 上記のリンクの場合のメソッドって何になるんでしょうか?

340:デフォルトの名無しさん
07/10/30 22:45:13
>>339
Mainがメソッド
でもこれはプログラム起動時にフレームワークから呼び出される為のもの

341:デフォルトの名無しさん
07/10/30 22:47:19
>>339
C#やっててコンストラクタも知らんのか。
それ自体は”コンストラクタ”でググればでるけど、そんな基礎的なこともわからずに無謀なコーディングをするより、
入門系のサイトやページを一度じっくり見た方がいい。
でないと、またすぐにつまずく。

342:デフォルトの名無しさん
07/10/30 22:51:01
>>341 徹底的に基礎を固めてきますm(_ _)m

343:デフォルトの名無しさん
07/10/30 23:05:12
>>342
初めての言語はできるだけ入門本を一冊買った方がいいが、
初心者用のサイトならここがおすすめ

@IT:連載 改訂版 C#入門
URLリンク(www.atmarkit.co.jp)

本で索引を引くより早いから、俺も忘れたときに見にいってる。

344:デフォルトの名無しさん
07/10/30 23:24:37
argsをstringの配列にしながら、args.Length != 1ってのがよく分からない。
普通のstring変数にしてIsNullOreEmptyでチェックした方がいいんじゃないの?

345:デフォルトの名無しさん
07/10/30 23:32:05
>>344
日本語でおk

346:デフォルトの名無しさん
07/10/30 23:42:27
>>344
よくないよ

347:デフォルトの名無しさん
07/10/31 13:23:21
TabControlで、Tab耳の並びを縦型Vertivcalにしたとき、耳の数
が多いと自動的に段々重ねになる仕様のようなのですが、これ
を横型Horizontalの場合と同じように1列に並べる手段があると
ありがたいのですが、できるとしたらどのような方法になるでしょうか?

348:デフォルトの名無しさん
07/10/31 18:23:29
>自動的に段々重ねになる仕様
え?
んな仕様になってないでしょ。
デフォではタブが横幅に収まらない場合スピン(?)が右隅に付く

349:デフォルトの名無しさん
07/10/31 19:44:51
>>348

Tab耳を横並べHorizontalにした場合はその通りなんですが、
縦並べVerticalにした場合はデフォルトで段々重ねになる仕様のようでした。
Helpにもそうありました。これだと、たくさん耳があるとそれだけで場所を
取ってしまうため、一列にしたいのでした。

やっぱり仕様だから無理なのかなー・・・

350:デフォルトの名無しさん
07/10/31 19:48:04
追記)
ちなみに、「段々重ね」というのは、MultilineプロパティをTrueにしたとき
の並び状態のことでした。

351:デフォルトの名無しさん
07/10/31 20:57:34
確かにAlignmentをLeftにするとMiutilineが勝手にTrueになるね

352:デフォルトの名無しさん
07/11/01 23:21:53
メソッドの引数としてデリゲートを使いたいのですが、
いちいちデリゲートの型を外部に宣言せずに書く方法はありませんか?
public void Func(delegate void del() sendMethod) {〜}
のようにかければ非常に楽なのですが。

353:デフォルトの名無しさん
07/11/01 23:24:23
これだからC厨は

354:デフォルトの名無しさん
07/11/02 00:01:07
いや、Cでも関数へのポインタ型は
きちんとした意味を持った名前にtypedefして使うものだろ。

355:デフォルトの名無しさん
07/11/02 01:05:46
>>352
System.Action

356:デフォルトの名無しさん
07/11/02 01:07:59
デリゲートや関数ポインタがスタティックだとわかってるんだろうね?

357:デフォルトの名無しさん
07/11/02 01:29:00
>>355
そのデリゲートが使えるということですか?この場合引数はないので使えないと思うのですが。
また、デリゲートの定義全般の話ですので、一つのデリゲートの型が一致しても抜本的な解決にはならないかと。

>>356
型の定義が静的だ、という意味でしたらわかっています。
その定義をどうにかして見やすく配置できないかと考えてる次第です。

358:デフォルトの名無しさん
07/11/02 01:41:26
void Func(Action sendMethod) { }

void SendMethod() { }
Action sendMethod = new Action(SendMethod);
Func(sendMethod);


Action<T>

359:デフォルトの名無しさん
07/11/02 01:50:40
>>358
すいません、がんばって理解しようとするのですが眠くてどうにもならないようです。
また明日の朝見直して理解しようと思います。

360:デフォルトの名無しさん
07/11/02 06:06:10
擬似コード過ぎて理解の必要がないというかw

361:デフォルトの名無しさん
07/11/02 10:27:19
メソッド内で、一度代入したら不変であることを保証しようと思って、
void func()
{

362:デフォルトの名無しさん
07/11/02 10:29:12
すいません、失敗して書き込んでしまいました。

メソッド内で、一度代入したら不変であることを保証しようと思って、
void func()
{
 readonly int i = OtherFunc();
 〜
}
としようとしたのですが、readonly が使えるのはクラスのフィールドのみらしく、できませんでした。
これと同等の文法はありますか?

363:デフォルトの名無しさん
07/11/02 10:59:26
フィールドにすれば?

364:デフォルトの名無しさん
07/11/02 11:35:46
>>363あほなことゆうな。
出来てもいいと思うんだけど出来ないね。
言語仕様を出来るだけシンプルにしたかったんかな?

365:デフォルトの名無しさん
07/11/02 12:07:10
メソッド内でreadonlyを使わなければわからなくなるほど
変数宣言が多くて長いメソッドを書くなということでは

366:デフォルトの名無しさん
07/11/15 00:24:37
C#をやってるたら、仕事に支障をきたし始めたので辞めます

皆さんも仕事でC++を使う人は辞めたほうが無難です。

367:デフォルトの名無しさん
07/11/15 00:33:52
                             |
                             |
      ∩___∩             |
      | ノ  _,  ,_ ヽ        ((  | プラプラ
     /  ●   ● |         (=)
     |    ( _●_)  ミ _ (⌒)   J  ))
    彡、   |∪|  ノ
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /         ヽ /
   \_,,ノ      |、_ノ

368:デフォルトの名無しさん
07/11/15 00:37:32
今時一本で食ってこうとしてる奴なんているんだ・・・可哀想に

369:デフォルトの名無しさん
07/11/15 01:07:38
>>366
きっとC++をただ使ってるだけだろうな


370:デフォルトの名無しさん
07/11/15 03:44:22
英語をやってるたら、仕事に支障をきたし始めたので辞めます

皆さんも仕事で日本語を使う人は辞めたほうが無難です。

371:デフォルトの名無しさん
07/11/15 04:08:37
自分の能無しぶりを理由にしても説得力はないな

372:デフォルトの名無しさん
07/11/15 11:25:36
言語は道具、道具を複数使ってるからと言って支障きたすとは思えないのだが?

373:デフォルトの名無しさん
07/11/15 23:27:54
わからんではない

オブジェクト作りっぱなしなんてC++ではありえない
そんな環境になれてしまうとC++が面倒に感じてしまう。

まぁ、C#は使いやすさと引き換えに速度を完全に捨てたらな・・・

374:デフォルトの名無しさん
07/11/15 23:41:29
速度は捨ててないぞ
捨てたのはメモリだ

375:デフォルトの名無しさん
07/11/15 23:50:26
>>374
ソクドモステテマスッテ

376:デフォルトの名無しさん
07/11/15 23:59:31
メモリを捨てて速度が保たれるなんてありえない。

377:デフォルトの名無しさん
07/11/15 23:59:31
文法がC#のC++があったら最強なんじゃないかと思う。

378:デフォルトの名無しさん
07/11/16 00:00:42
>>376
それに初起動の速度もパフォーマンスだと考えると、メモリを食うならそれだけ起動が送れるからな。

379:デフォルトの名無しさん
07/11/16 00:04:58
>>377

ネイティブのC#ならアンマネージドC#で作れるだろう。
ただし、APIは自作になるけどな。

380:デフォルトの名無しさん
07/11/16 00:05:35
>>377
Delphi

381:デフォルトの名無しさん
07/11/16 00:12:14
個々の性能を見るとC#はそう悪くない。
GCに関してはここによると
URLリンク(densanshokunin.at.webry.info)
> C++のstack > C#のFinalizeなし > > C++のheap = C#のDispose > C#のFinalize
ということらしい。スタックさいこーで次点がファイナライザなしのGCだそうだ。

C#が遅く感じるのはメタ情報を抱えたままなのが大きいように思える。
必要以上にコードやリソースの破棄と再ロードやページアウトインを繰り返していてこれが足を引っ張ってる。
JITやngenしててもメタ情報を参照するために結局もとのアセンブリもロードされているのが確認できる。
おかげで別の部分がメモリから追い出されることになりやすい。

382:デフォルトの名無しさん
07/11/16 00:19:38
GCの話題にC++が出て来るなんて胡散臭すぎ

383:デフォルトの名無しさん
07/11/16 00:24:30
>>382
普通に一番使われてるからだろ。
それにGCの動きはシステムに激しく依存するから、言い出したらきりがない。

384:デフォルトの名無しさん
07/11/16 00:27:09
C#はマネージドコードなんだから、比較対照は同じマネージドコードのJavaだったら良いが
ネイティブのC++出されてもね。それにネイティブコードはあっさりとOS壊すプログラム開発が
できる(例えやりたくなくても)という欠点があるから、今後は.NETもよりセキュリティ強化された
サンドボックス上で実行しなくてはならないと結論がでて、ネイティブは生き残れなくなるんだよ。

385:デフォルトの名無しさん
07/11/16 00:33:13
トリを忘れてたが>>381>>373を受けての書き込みだからね。


386:デフォルトの名無しさん
07/11/16 00:33:15
>>384
マジで言ってんのか?だったらなんでWin32APIを.NETでサポートしないんだよ。
アンマネージドがマネージドに置き換えられるんなら、全部の機能が.NETから使えないとおかしいだろうが。
だいたいユーザー管理もまともに出来ないWindowsでソフトウェアのセキュリティ云々言われてもなあ?

387:デフォルトの名無しさん
07/11/16 02:10:11


388:デフォルトの名無しさん
07/11/16 02:11:05
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /


389:デフォルトの名無しさん
07/11/16 02:43:35
>>386

きまってるだろうが、最初は置き換えるつもりだったけど厳しいから
方向転換したんだよ。

390:デフォルトの名無しさん
07/11/16 03:42:16
これはAA貼られても仕方ないなw技量が知れる

391:デフォルトの名無しさん
07/11/17 01:20:47
string csvDir = @"C:\test\";
string csvFileName = "test.csv";

string conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
                   csvの接続ロジック
System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(commText, con);

DataTable dt = new DataTable();
da.Fill(dt);

OleDbConnection OleConn = new OleDbConnection();
         ACCESSの接続ロジック
OleDA = new OleDbDataAdapter(expenditure, OleConn);

OleDA.Fill(Ds);

DDs = ddt;←ここがわからない

OleDbCommandBuilder cb = new OleDbCommandBuilder(OleDA);
cb.QuotePrefix ="[";
cb.QuoteSuffix = "]";

OleDA.Update(Ds) ;

CSVファイルをACCESSにインポートしたいのですが、CSVをテーブルに貼り付けた後は
どのようにしてACCESSにインポートすればよいのでしょうか?
上記のプログラムは一応コンパイルできるのですが、ちゃんとデータが移ってなくて・・・
どなたかわかる方がおられましたら、修正をおねがいします

392:デフォルトの名無しさん
07/11/17 01:21:37
すいませんDDs⇒Ds、ddt⇒dtです

393:デフォルトの名無しさん
07/11/17 11:14:16
C++で配列を作成し、それをIntPtrにポイントし、そのIntPtrをC#の関数に渡したいと思います。
この時、C#ではどのようにして、その配列を扱うことができるのでしょうか?

394:デフォルトの名無しさん
07/11/17 11:34:03
C++"で"IntPtr?
そのC++ってのはC++/CLIなのか?

395:デフォルトの名無しさん
07/11/17 12:10:06
>>394
はい。基本的にはIntPtrがサポートされているものです。


396:デフォルトの名無しさん
07/11/17 12:23:22
意味が分からん。なんだよ基本的にはサポートされてるって
マネージド同士なら配列直接渡しゃいいじゃねーか

397:デフォルトの名無しさん
07/11/17 12:29:21
>>396

正論。

>>395
何がやりたくてそのようなことをしようとしてるのか説明してくれないと。

398:デフォルトの名無しさん
07/11/17 12:47:38
>>397
すいません。説明が悪くて。
アンマネージの配列のポインタが渡されて、それをC#クラスに渡したいというクラスがあります。
その方法としてIntPtr渡しを考えました。
アンマネージからマネージにマーシャルする方法もありますが、メモリコピーは避けたいです。
このような場合はマネージのみサポートする言語では作成しない方がいいのでしょうか?


399:デフォルトの名無しさん
07/11/17 12:55:04
妥当なのは配列をやり取りするんじゃなくて操作をラップしたクラスをやり取りする形。
UnmanagedMemoryStream とか。

いざとなりゃ直接ポインタでもいいけどな。

400:デフォルトの名無しさん
07/11/17 12:58:36
unsafeでポインタにすればいいのでは?

そもそも、C++の配列を作っている部分が既存部分でない(C#に対するラッパ部分)
であるなどといった状況なら、初めからマネージ配列にし、
C++内では必要に応じてpinしてやったほうが楽な気がする。


401:デフォルトの名無しさん
07/11/17 13:23:51
unsafeとクラス作成ですか。
特にC#はダメということではないのですね。ありがとうございます。
いただいたアドバイスをさらに調べてみます。


402:デフォルトの名無しさん
07/11/17 16:43:46
C#はC++の後継言語だから、C++できることはたいていサポートされているよ。

403:デフォルトの名無しさん
07/11/17 17:01:06
>>402
【審議拒否】
      ∧,,∧  ∧,,∧     タリー
 ∧∧ (・`  ) (  ´・) ∧∧
(ω・` ) U  )  (  Uノ( ´・ω)  キリバンナノニヨ
| U   u-u   u-u (U  ノ
 u-u ∧,,∧  ∧,,∧  u-u
    (・ω・`) (´・ω・)     コンナレスジャシカタネエヨナ
    (l  U)  (U  ノ
    `u-u'.  `u-u'

404:デフォルトの名無しさん
07/11/17 17:06:00
餓鬼くさ。
403みたいのってひょっとして面白いと思ってコピペするのかね。
そんなの面白いと思うのは精神年齢永遠の12才の自分だけなのに

405:デフォルトの名無しさん
07/11/17 17:08:27
402 はキリ番なのか?

406:デフォルトの名無しさん
07/11/17 17:59:26
しかし402も釣りだろ

407:デフォルトの名無しさん
07/11/17 18:31:32
>402
C++からややこしい機能はできなくしたからこそ扱いやすい言語になってるのかと。

408:デフォルトの名無しさん
07/11/17 19:29:29
this.axWebBrowser1.Navigateに
client.Connect(comboBox1.Text,80);
でアドレスを渡して表示させています。
comboBoxにはFQDNを入れておりますがhttp://から記載するとエラーになります。
FQDNしか入れられないためにHTTPSでのアクセスが出来ていないのですが
どのようにすればSSLでのアクセスが可能になるのでしょうか?

409:デフォルトの名無しさん
07/11/17 21:57:07
>>407
C++に挫折した人にぴったりですねhw

410:デフォルトの名無しさん
07/11/17 22:05:37
>>408
AxWebBrowser なのか TcpClient なのかわからん
取り敢えず SslStream とか調べたらどうだ

411:デフォルトの名無しさん
07/11/18 00:07:17
C++にこだわる奴は言語にこだわり過ぎ。
本当に大事なことは必要な機能を実装すること。
ややこしい機能はチーム開発や保守性をぶっ壊してくれるから
簡単にすることは大事。


412:デフォルトの名無しさん
07/11/18 00:08:08
>>411
楽しいのも判るけどさスルーする事も大事。

413:デフォルトの名無しさん
07/11/18 00:26:01
いろんな言語やってきて思うんだけど、結局のところ言語の文法って本質的に言語間の差にはならないんだよね。
foreachなんかでも、マクロ使えば簡単にCでも使えるわけだし。
本当に言語選択で大事なのは、VMだとかOS依存部分だとかのもっと大局的な部分なんじゃないかなあ。

414:デフォルトの名無しさん
07/11/18 00:36:54
言語選択は技術者の経験やシステムの構成に左右されるところが多いから、
何が良いとかは断言できない。
自分にとって、一番スマートにプログラミングできるのはC#だけど、
サーバサイドプログラミングでLinuxならJava、UnixならCを選択するのが良いと思う。
なにせ、並列処理はやはりUnix系使うのが一番堅実だから。

415:デフォルトの名無しさん
07/11/18 00:38:25
堅実ってなあに?


416:デフォルトの名無しさん
07/11/18 00:39:59
堅実というより堅牢性
・プログラムにおいて、エラーや例外などに強く簡単には暴走しないもの。
・少なくともすぐに「不正な処理」と表示し、データ諸共および自分自身までふっ飛ばすようなOSのような作りではない事。


417:デフォルトの名無しさん
07/11/18 00:40:08
ググレカス

418:デフォルトの名無しさん
07/11/18 00:42:08
いまどきそんなサーバ用OSはない。


419:デフォルトの名無しさん
07/11/18 04:36:13
なんか見てると最近WebBrowserコントロールの質問はやってんな
同一人物なのか 流行なのかwwww

420:デフォルトの名無しさん
07/11/23 01:24:28
ちょっと前に、スプラッシュウィンドウの実装についてあちこちで議論があったのを見たんだが、
こんなやり方では駄目なんだろうか?

public static class Program
{
[STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Idle += Application_Run;
Application.Run();
}

private static bool _applicationRunning = false;
private static void Application_Run(object sender, EventArgs e)
{
if (_applicationRunning) { return; } else { _applicationRunning = true; }
Application.Idle -= Application_Run;

//ここにスプラッシュウィンドウだの、メイン処理だのを書く
//プログラムを終了させるべき場所にApplication.Exit()を書く
}
}


421:デフォルトの名無しさん
07/11/23 10:47:43
初期起動時の処理にアプリケーション関連のイベントを記述するのは常識だから、
それでおk。

422:420
07/11/23 16:41:04
>>421 さんくす

423:デフォルトの名無しさん
07/11/23 16:42:35
そのあとのスプラッシュの表示と初期処理の
同時処理から完了までの流れがないと
大して意味ない気がするが…

どうでもいいが最近の書籍ではタイマー使って
一定時間同期的にスプラッシュ表示するやりかたばっか書かれてるな。
スプラッシュの意味ないっつうの。
まあ平気でビジーループ使ってる例よりはちょっとだけましだが。


424:420
07/11/23 17:23:29
>>423
ご意見どうも。
実のところを言うと、スプラッシュウィンドウというよりは、
Form_Loadに全体の初期化処理を書きたくないので、
それをどこに書こうか、ということです。
必ずしも最初からFormを使うというわけでもないし。

あとは>>420の例で、何か過失を犯していないかを知りたかったのです。




425:デフォルトの名無しさん
07/11/23 19:03:56
メッセージループに入ってからやる必要のある初期化ならそんなんじゃないの。
そうでないならなんもいらんと思うが。


426:デフォルトの名無しさん
07/11/25 18:00:35
Bitmapを綺麗に回転させたいのですが、
RotateTransformは中心で回転していないのか一定以上の角度になると上手くいきません。
画像中心で回転させるにはどう指定すればいいのでしょうか?
教えてください。m(_ _)m

public static Bitmap BitmapRotate(Bitmap bmp, float angle)
{
// 出力用
Bitmap dst = new Bitmap(bmp.Width, bmp.Height, PixelFormat.Format32bppArgb);

// Graphics オブジェクト
Graphics g = Graphics.FromImage(dst);

// 透明色でクリアする
g.Clear(Color.Transparent);

// 回転させる
g.RotateTransform(angle);

// 綺麗に回転させるフィルタ
g.InterpolationMode = InterpolationMode.HighQualityBilinear;

// 描画
g.DrawImageUnscaled(bmp, 0, 0);

// 解放
g.Dispose();
return dst;
}

427:デフォルトの名無しさん
07/11/25 20:45:04
>>426
画像の中心を回転中心にするならそいうふうに移動させないと。
URLリンク(msdn.microsoft.com)

移動→回転→元の位置に戻す

回転させたことないから間違ってたらスマンね

428:426
07/11/26 05:37:10
RotateTransformの前後に下記のコードを入れることで解決しました。
ありがとうございました。m(_ _)m

// 中心を指定する
g.TranslateTransform(bmp.Width / 2, bmp.Height / 2);

// 回転させる
g.RotateTransform(angle);

// 元に戻す
g.TranslateTransform(-bmp.Width / 2, -bmp.Height / 2);

429:デフォルトの名無しさん
07/11/28 19:57:23
C#がJavaより勝っている点を教えてください。

430:デフォルトの名無しさん
07/11/28 20:13:42
教えてあげないよ

431:デフォルトの名無しさん
07/11/28 20:16:46
じゃん

432:デフォルトの名無しさん
07/11/29 04:54:20
さくさくさんかくぽりんきー

433:デフォルトの名無しさん
07/11/29 05:48:08
コイケヤ







ココ行ケヤ
JAVAとC#どちらが優れているか教えてください Part2
スレリンク(prog板)

434:デフォルトの名無しさん
07/11/30 21:56:41
データバインド対応のコンポーネント作りたいんですけど
どのクラスから調べればいいですか?
ぜんぜん見つからない・・・

435:デフォルトの名無しさん
07/12/01 00:00:29
意見の割れそうなネタですが、皆様 using ステートメントをどの程度
使用していらっしゃるのでしょうか。

自分は今まで、ルート名前空間を汚したくない、或いは名前空間の
構造を崩したくないといった理由で using ステートメントを一切
使わず、愚直にも省略せず全部記述していたのですが、横に長く
なりすぎていよいよ疲れてきて、それに追い打ちをかけるように、
拡張メソッド (C# 3.0 言語仕様) を使うにはそのメソッドの属する
クラスの属する名前空間をインポートしてらねばならないという
ことを知って悩んでおります。

それなりに多様な名前空間を使用していますが、あまり多くインポートしても
逆に読みづらくなりそうに感じます。使用する名前空間それぞれどういった
基準でインポートするか否かを決めるか等、皆様どうか私に何らかの指針を
示して頂けませんでしょうか。

436:デフォルトの名無しさん
07/12/01 00:02:27
全部インポートしてる。
型名重複するのなんてTimerぐらいだろ。

437:435
07/12/01 00:02:39
>>435 の 9 行目:
 誤: してらねば
 正: せねば
失礼いたしました。

438:デフォルトの名無しさん
07/12/01 00:10:26
基本的に全部インポートする
クラス名が重複する場合は完全修飾名で書く

439:デフォルトの名無しさん
07/12/01 00:16:27
>>435
文脈からしてひどく実直そうな人物と見るが、
努めてソフトにいうと、usingは普通衝突が発生しない限り使う。衝突しても、名前空間の張り替えをして使う。
よって、あなたがしてるようなコーディングはひどく非効率で例外的だ。今すぐusingステートメントを使うことをおすすめする。
それと、なんとなくIDEなどのコーディング補助を一切使ってない雰囲気があるのだが、
この際にそれらの機能を使ってみたらどうだろうか?
VisualStudio2005を使ってるなら、クラス名を書けば左下になにかでるはず。そこをクリックするか、Ctrl+Alt+F10を押して、
メニューから任意の名前空間を選べば、自動的にusingを書いてくれる。

440:デフォルトの名無しさん
07/12/01 00:21:23
usingはクラス名を省略したいから書き込むんだよ。
つまり、一回しか宣言しないクラスは完全修飾名で記述してもいいが、
例えば、ファイルアクセスクラスでSystem.IOを何回も呼び出す可能性が
多い名前空間はあらかじめ宣言しておいた方が効率が良い。
この効率が一番重要なのがRAD。

441:デフォルトの名無しさん
07/12/01 00:22:07
>>439 ( ・∀・)つ〃∩ ヘェーヘェーヘェー

442:デフォルトの名無しさん
07/12/01 00:23:09
ユーザコンポーネント内のコードからページに直接貼り付けたテキストボックスを参照するもっとも効率的な方法はどうすればいいのですか

443:デフォルトの名無しさん
07/12/01 00:28:48
テキストボックスに限らず、クラスを参照する一番の方法は
プロパティを使うこと。

444:デフォルトの名無しさん
07/12/01 00:59:34
たしかにC++なんかだと、C#のそのusingに相当する
usingディレクティブは使うなって言われるけどね。

ただ、それはエイリアスとかusing宣言とか代替があるから言えるわけで、
C#はガンガンusingする言語だと思っている俺。

445:443
07/12/01 01:25:47
それと忘れてたけど、コントロールのアクセス修飾はprivateがデフォルトだから、
変えなければいけない。

446:デフォルトの名無しさん
07/12/01 01:30:23
>>435
「using ステートメント」じゃなくて「using ディレクティブ」だろというか
そんなこと気にする前に基本的な言葉をだな(ry

まぁそれはいいとして >>444 もいっているように C++ で using namespace
が気になるのは、その他の仕様含めた総合的な要因によるもので、
その前提を元に C# は考えられていてほぼ危険性がクリアされているので
普通に使え。そっちのほうがみやすい。


447:デフォルトの名無しさん
07/12/01 10:19:35
ありがとう。
でもユーザコントロールから親のページクラスをどうすればアクセスできるのか想像できません

448:デフォルトの名無しさん
07/12/01 11:54:24
ページクラスを継承したクラスにコントロール検索プロパティを実装したとしてもユーザコントロールからはスコープの範囲外だからみれないですよね

449:デフォルトの名無しさん
07/12/01 12:24:22
マスターページに実装。

450:デフォルトの名無しさん
07/12/01 13:47:00
マスターページに検索ののプロパティを作ってその配下のページコントロールに配置したテキストボックスを参照するのですか?
できそうな気がする。。

451:デフォルトの名無しさん
07/12/01 14:22:26
DataGridVewでデータバインディングしている時、主キー、ユニークの重複チェックは皆どうしてるの?

主キーは複合もあるので行でチェックするのがいいという前提で。チェック場所はいろんなイベントがあると思う
・DataGridVewのRowValidatingイベント
・DataTableのRowChagingイベント
※DBに問い合わせは論外。
他にもあるかもしれんが・・・。あったら教えて欲しいんですが。

で、入力された値をチェックと言うことでDataGridVewのRowValidatingでチェック。(ViewのことはViewでチェック)
他のクラスでチェックすると、調査時いろんなソースを追いかけないといけないので。

ほんでと、主キー重複、ユニークチェックメソッドはあるのか? → 調べたけどないと思う。
じゃ、別の方法でチェックするにはどうしたらいい?となると。

クラス内部で主キー、ユニークの値を配列で保持して、配列内をチェックしかないのかなと思ってるんだけど。
複合主キーの時は、それぞれの列の値を文字列連結して1つの文字列として保持する。

これ以外になんかいい方法ってないですか?




452:デフォルトの名無しさん
07/12/01 14:25:06
あ、DataGridVewのDataErrorイベントは論外で。あんなの使いようがねぇって感じなので。

453:デフォルトの名無しさん
07/12/01 14:49:10
バインド先がDataTableならPrimaryKey設定しとけば
DataGridVewの入力時エラーになるけど


454:デフォルトの名無しさん
07/12/01 16:24:19
>>450

逆、参照するのがテキストボックス

455:デフォルトの名無しさん
07/12/01 17:25:07
逆とはどうゆう事?マスターページからページのテキストボックスを参照でいいんだよね。


456:デフォルトの名無しさん
07/12/01 19:25:42
設定値はマスターページの値で、テキストボックスが更新されたら
マスターページの値を更新。

457:デフォルトの名無しさん
07/12/01 19:29:06
説明が面倒だから、これをやるってこと
URLリンク(www.atmarkit.co.jp)


458:デフォルトの名無しさん
07/12/01 19:36:58
UdpClient.BeginReceive(〜)
から
byte [] buffer = UdpClient.EndReceive(〜);
の間に複数の受信接続が在った場合

bufferに入るのは最後に受け取った1つのデータだけですか?

459:デフォルトの名無しさん
07/12/01 23:09:37
結局はテキストボックスがトリガーとなってマスターページに値をあたえないとだめなんだね。
ユーザコントロールがトリガーとなって見に行くことがしたいけど無理なんだよね

460:デフォルトの名無しさん
07/12/02 08:48:15
>>458
最初のだ

461:デフォルトの名無しさん
07/12/02 14:07:57
>>459
これは無理そう。
FindControlsみたいなメソッドをマスターページにプロパティで実装して、
ユーザコントロールのイベント内から呼び出したいんだろ?
これはできそうでできない領域。それに気付いただけでも天才だよ。お前
>>456
も言っていること意味不明。


462:デフォルトの名無しさん
07/12/02 20:44:44
やっぱり無理なんですね

463:デフォルトの名無しさん
07/12/02 21:07:10
>>461
parent経由で親PropertyにSetなら出来るだろ

464:デフォルトの名無しさん
07/12/02 21:53:27
ページといえどもクラスでしょ参照できる分けない

465:435
07/12/02 23:13:03
書き込みが遅れてしまいすみません。

他の方々が書かれたソースを読んでいても薄々感じていましたが、やはり皆様
using を積極的に使うものなのですね。確かに衝突など滅多に起きませんし、
名前空間の構造が崩れることよりも行が横に長い方が害悪かもしれません。
皆様のご助言のお陰で漸く using を使うべきとの考えへと至ることができました。
ありがとうございました。

>>435
自分はむしろ真逆な質の人間だと思っていたのですが。一応 IntelliSense 等、
少しは使っています (というより IntelliSense を使わないで日々コーディング
できる方が居たら尊敬してしまいます)。

>>446
仰る通り、using ディレクティブでした。>>437 といい、きちんと見直したはずだった
のですが。お恥ずかしい限りです。

466:435
07/12/02 23:17:31
>>465 中のレスアンカ 誤: >>435 → 正: >>439 でした。
またしてもやらかしてしまった。度々の訂正、申し訳ありません。

467:デフォルトの名無しさん
07/12/03 12:18:45
質問があります。環境はVS2003のC#です。

const Point pos = new Point(1, 1);

とやると
「'pos' に割り当てられた式は定数でなければなりません。」
というエラーが出ます。
定数にnewは使えるないんでしょうけど、どのようにしたら上記のような定義を実現できるでしょうか?

468:デフォルトの名無しさん
07/12/03 12:26:56
static readonly Point pos = new Point(1, 1);
ふらっとC#スレに行け

469:デフォルトの名無しさん
07/12/03 12:30:39
>>467
残念なことに、constはプリミティブ型(int, double)か、後は例外的にString型のみしか認められない。
非常に不思議なことに、C#には改変不可を示す修飾(C++のconstやJavaのfinal)がない。
一応readonlyという似たようなものがあるが、これはコンストラクタでしか使えないのでメソッド内などでは使えない。

470:デフォルトの名無しさん
07/12/03 13:43:13
いたいことは何となく分かるがかなり変なこと書いてるぞ。

471:467
07/12/03 13:58:16
>>468-469
ありがとうございます。
readonly修飾子を使用することにしました。

472:デフォルトの名無しさん
07/12/03 16:09:37
>>471
プロパティの使用も検討してみては。

473:デフォルトの名無しさん
07/12/08 20:10:03
StreamReader sr = new StreamReader("C:\\test\\時間集計.txt", Encoding.GetEncoding("Shift_JIS"));
string text = sr.ReadToEnd();
sr.Close();
this.rtbIndication.Text = text;

Regex R_Ex = new Regex("this.");

//TextBox1.Text内で正規表現と一致する対象を1つ検索
Match M_stPath = R_Ex.Match(this.rtbIndication.Text);

while (M_stPath.Success)
{
int iFind = this.rtbIndication.Find(M_stPath.Value, RichTextBoxFinds.MatchCase);

this.rtbIndication.SelectionStart = iFind;
this.rtbIndication.SelectionLength = M_stPath.Value.Length;
this.rtbIndication.SelectionColor = System.Drawing.Color.Red;

M_stPath = M_stPath.NextMatch();
}

リッチスプレッドの中から特定の文字だけを抜き出して、そのフォントカラーを赤くしたいのですが
この場合、thisが複数あるにも関わらず、最初に見つかったthisしか赤くなりません。
どこがまずいのでしょうか??

474:デフォルトの名無しさん
07/12/08 21:30:40
↑"this"です

475:デフォルトの名無しさん
07/12/08 21:45:22
とりあえずステップ実行でもしてみたらー?

476:デフォルトの名無しさん
07/12/08 22:12:01
>>475
原因は解っています。
int iFind = this.rtbIndication.Find(M_stPath.Value, RichTextBoxFinds.MatchCase);
の部分で、リッチテキストボックス(rtbIndication)のテキストの最初から読み込んでるから
必ず最初の"this"で止まってしまうのです
なにかいい方法はないでしょうか?

477:デフォルトの名無しさん
07/12/08 22:17:56
Findの任意の位置から検索開始できるオーバーロード使えばいいんじゃね

478:デフォルトの名無しさん
07/12/08 22:23:12
>>477
すいません、たとえばどのように書けばよろしいのでしょうか?

479:デフォルトの名無しさん
07/12/08 22:37:03
いやまずヘルプ見ろよ

480:デフォルトの名無しさん
07/12/08 22:37:58
>>all

解決しました!>>477ありがとう!

481:デフォルトの名無しさん
07/12/11 18:21:35
namespace IEnumeratorTest
{
public class Sample : IEnumerable<char>
{
public IEnumerator<char> GetEnumerator()
{
yield return 'C';
}
}
class Program
{
static void Main(string[] args)
{
foreach (char c in new Sample())
{
Console.Write("{0}", c);
}

}
}
}

C#2.0 yieldの勉強をしています。
このコードで何故コンパイルエラー(CS0536)が出るのかわかりません。
下記のどれにも違反していないのですが。。
・public キーワードが省略されている。
・戻り値の型が一致しない。
・static キーワードがある。
何か足りないものでもあるのでしょうか?
Visual C# 2005 Express Editionを使用しています。

482:デフォルトの名無しさん
07/12/11 18:46:25
MSDNを見るとIEnumerator<>は非ジェネリックのIEnumeratorを継承
していました。

また、以下の記述がありました。
実装時の注意 このインターフェイスを実装するには、非ジェネリックの IEnumeratorインターフェイスを実装する必要があります。

そこで
IEnumerator IEnumerable.GetEnumerator()
{
//ここでIEnumeratorオブジェクトを戻さないとエラーになる
}

を実装する必要がありそうなのですが、何を書けばよいのかわかりません。

483:デフォルトの名無しさん
07/12/11 18:49:49
>>481
エラーメッセージ読め。

IEnumerable<T> は non-generic な IEnumerable を継承してるんで、
そっちの GetEnumerator も実装しないとだめ。

System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()


484:デフォルトの名無しさん
07/12/11 18:50:59
>>482
IEnumerator IEnumerable.GetEnumerator() の中身は、
return this.GetEnumerator(); にでもしとけ。

485:デフォルトの名無しさん
07/12/11 19:02:48
Yieldの使い方を根本的に間違ってるわけだけどな。
Yieldを含む IEnumerableなファンクションが暗黙にいろいろやってくれる。
この例だとstaticにしてもいいな。

public class Sample { 
  public IEnumerable<char> Hoge() { yield return 'C'; } 
}

foreach (char c in new Sample().Hoge())
  Console.Write("{0}", c);


486:デフォルトの名無しさん
07/12/11 19:28:55
>>483
>>484
>>485
ありがとうございました。解決しました。

>>485
別法でしょうか。まだ詳しいことは分からないのと
サンプルの方法も間違っていなそうなので、とりあえず
これを使っていこうと思います。

487:デフォルトの名無しさん
07/12/11 20:12:58
int x = 100, y = 200;
private Storyboard story;
private DoubleAnimation myDoubleAnimation;
private DoubleAnimation myDoubleAnimation2;
private void WindowLoaded(object sender, RoutedEventArgs e) {
Rectangle rect = new Rectangle();
rect.Width = 10;
rect.Height = 10;
. (省略
myDoubleAnimation = new DoubleAnimation();
myDoubleAnimation.From = 10;
myDoubleAnimation.To = x;
myDoubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(2000));
myDoubleAnimation2 = new DoubleAnimation();
myDoubleAnimation2.From = 10;
myDoubleAnimation2.To = y;
myDoubleAnimation2.Duration = new Duration(TimeSpan.FromMilliseconds(2000));
Storyboard.SetTargetName...(省略
story = new Storyboard();
story.Children.Add(myDoubleAnimation);
story.Children.Add(myDoubleAnimation2);
story.Begin(this, true);
}
private void click(object sender, RoutedEventArgs e) {
story.Stop(this);
x = 200;
y = 300;
story.Begin(this, true);
}
.NET3.0ですが、ストーリーボードの子要素の中身を変更するのってどうやるんでしょうか?
xとyの値をクリックで変えたいのですが、上記の方法ではうまくいかず、
クリックしてもx,yは100,200のままで変わりません 。どうすればいいのでしょうか?

488:デフォルトの名無しさん
07/12/12 01:25:48
yieldって使うか?用途が見えないのは理解不足なだけなのか?

489:デフォルトの名無しさん
07/12/12 01:27:37
うん

490:デフォルトの名無しさん
07/12/12 02:07:33
用途ってか、Enumerable返すメソッドが簡単に作れるから便利ってだけだけど。
状態を持つ場合なんか手で書きたくないしね。


491:デフォルトの名無しさん
07/12/12 04:35:41
>>487
myDoubleAnimation.Toはint?だからclickの中でx変えただけじゃ元の値のままですよ。
意図通りの挙動をさせるにはこんな感じ?

private void click(object sender, RoutedEventArgs e) {
story.Stop(this);
x = 200;
myDoubleAnimation.To = x;
y = 300;
myDoubleAnimation2.To = y;
story.Begin(this, true);
}

492:491
07/12/12 04:38:58
×int?
○double?
寝ぼけてました。

493:デフォルトの名無しさん
07/12/12 07:41:59
yieldは列挙とマイクロスレッドが主な用途だろうな
こう言語機能をこんな風に使うとこんなことができるよてきなTips( ゚д゚)ホスィ…

494:デフォルトの名無しさん
07/12/12 12:22:21
foreachと組み合わせるとなかなかいい塩梅だよ。

495:デフォルトの名無しさん
07/12/12 12:22:41
オライリーのプログラミングC#見たけど
ユーザー定義型のソート基準を決めるのに
IComparerを実装するのって面倒ですね。
この点はC++のほうが分かりやすくて楽チン。

496:デフォルトの名無しさん
07/12/12 12:34:29
>>>493
その手のサイト運営してる身だけど、
そういう Tips は結構まとめるの面倒なのよね。
日記とかにちまちま書いてる人はいるけど、それを1箇所に集めるとなると。
「この辺りを Tips にまとめて欲しい」みたいなの列挙しといてくれたら
そのうちページに起こすけど。

>>495
いや、IComparison<T> デリゲートでもソートできる。
C# 3.0 だと、
list.Sort((x, y) => y.CompareTo(x));
とか書ける。

497:デフォルトの名無しさん
07/12/12 12:36:10
2.0でも、十分楽だと思うけど。

    Array.Sort(table, delegate(Hoge x, Hoge y)
      {
        return ・・・;
      });

498:デフォルトの名無しさん
07/12/12 12:44:30
delegateは未読です。
C#は記法がキモイのはC++と同じで、
慣れるまで時間がかかりそうです。


499:デフォルトの名無しさん
07/12/12 12:47:37
C++ がキモイって。
いったい、元々どこの畑にいたんだ。

500:デフォルトの名無しさん
07/12/12 12:57:45
>>496
よかったらサイトのアドレス教えてください@メアド

501:デフォルトの名無しさん
07/12/12 18:52:31
TextBoxに色付けたり
インデント開始と停止する系の命令はあるですか?

502:デフォルトの名無しさん
07/12/12 20:28:42
釣り?

503:デフォルトの名無しさん
07/12/12 20:35:34
はい

504:デフォルトの名無しさん
07/12/12 20:47:52
リッチなやつにしとけ

505:デフォルトの名無しさん
07/12/12 23:14:34
ブルジョワテキストボックスでも開発するか

めちゃくちゃリソース食うの。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5086日前に更新/202 KB
担当:undef