ふらっとC#,C♯,C#( ..
[2ch|▼Menu]
577:デフォルトの名無しさん
09/02/03 11:24:54
>>576
URLリンク(dictionary.goo.ne.jp)
URLリンク(dictionary.goo.ne.jp)

本質的には通じりゃいい

578:576
09/02/03 11:31:04
>>577
みんなそんなもんなんですね
適当に脳内処理しときます。


今仕事が開店休業状態で暇つぶしにC#ってものを勉強始めたけど
突き詰めたらどんな高度なwindowsアプリでも作れるようになれるのですか?
たとえばosとかofficeとかw
このままだと会社が倒産しそうだから、C#勉強してそっちに働き口みつかるかなぁ・・・

579:デフォルトの名無しさん
09/02/03 11:33:04
OSの上で動作するフレームワーク(.NETとかMonoとか)のさらに上で動作してるから
フレームワークより下にはいけない

580:576
09/02/03 11:37:12
>>579
たしかにos-.net上で動くって事ですもんね

具体的に言うと、リッピングソフトとかofficeアプリまでなら作れますか?

581:デフォルトの名無しさん
09/02/03 11:42:16
それはそれは途方も無く努力すれば

582:デフォルトの名無しさん
09/02/03 11:57:21
C#も極めれば空も飛べるよ!

              ハ_ハ
            ('(゚∀゚∩ 飛べるよ!
             ヽ  〈
              ヽヽ_)



583:デフォルトの名無しさん
09/02/03 13:18:52
そうだね・・・ねてなくて浮いてる気分だ

584:デフォルトの名無しさん
09/02/03 13:23:03
寝ろよ
寝不足は生産性も減退させる

585:デフォルトの名無しさん
09/02/03 13:25:25
うまく動いてたイベント処理をもうちょっと効率良くしようと思って手を加えて
一週間くらいほったらかしといたら、うまく動いてたときのコード忘れてしまた orz
全く思い出せない


586:デフォルトの名無しさん
09/02/03 13:27:28
そうかそうか

587:デフォルトの名無しさん
09/02/03 13:38:59
svn

588:デフォルトの名無しさん
09/02/03 16:50:25
大規模な改良前にはコード保存しとけば??
おかげさまで「〜〜実装前.txt」が10個以上あるが。

589:デフォルトの名無しさん
09/02/03 17:01:44
>>575
おそらく、VB6/COMで、setアクセサ相当が値のLetと参照のSetに分かれていた名残。
Letが.NETのsetアクセサで、Setがその他に対応すると思う。

590:デフォルトの名無しさん
09/02/03 17:16:13
>>585>>588
バージョン管理システム使って履歴残せ。


591:デフォルトの名無しさん
09/02/03 17:16:35
>>575
言語によっては他の種類のアクセサを定義することもできるということじゃないの
プロパティって複数のアクセサメソッドの情報をまとめたメタデータにすぎないから

592:デフォルトの名無しさん
09/02/03 17:26:52
Form1上にSplitContainerを配置して

・Panel1にテキストボックスとボタン
・Panel2にデータグリッドビュー

を置いてあるんすけど、テキストボックスとボタンってどのコレクションになるんすかね?

this.Controls だとコレクションは SplitContainer しか入ってないし
this.SplitContainer.Panel1.Controls だとコレクションは Panel1 しか入ってない
this.SplitContainer.Panel2.Controls ってやるとちゃんと DataGridView1 が入ってるのに

わけわかめ

593:592
09/02/03 17:31:47
SplitterPanelにPanelを入れ子にしてた orz

594:デフォルトの名無しさん
09/02/03 17:32:54
>>592
Panel1.Contols に Panel1 が入ってるわけねーだろ。

595:デフォルトの名無しさん
09/02/03 17:38:18
>>593
あわてんぼさんめ

596:デフォルトの名無しさん
09/02/03 19:20:41
さぼてんあわめん

597:デフォルトの名無しさん
09/02/03 19:30:32
わあさんぼんめて

598:風来坊
09/02/03 20:48:10
質問です。
C#にて 音声録音の機能を実装したいと思っています。
.NET 1.1,2.0,3.5は問いません。

デフォに設定されている出力(再生)デバイスの音声信号を
wav(wavにこだわる必要は無い)ファイルとして保存したいのですが、
どうすれば実現できますか?
どなたかご教授ください。お願いします。

599:デフォルトの名無しさん
09/02/03 21:22:40
ぐぐる

600:デフォルトの名無しさん
09/02/03 21:35:08
遮断機をくぐる

601:デフォルトの名無しさん
09/02/03 21:36:45
首をくくる

602:デフォルトの名無しさん
09/02/03 21:42:39
せっかくC#でAPI直接もなんだし、MCIかMDXあたりでどうかな。

603:デフォルトの名無しさん
09/02/03 21:46:32
riffを自分で書くなんてどうかしら

604:デフォルトの名無しさん
09/02/03 21:50:21
DirectShow.NET

605:デフォルトの名無しさん
09/02/03 21:55:42
DirecxShowは推奨されないらしいですよ

606:デフォルトの名無しさん
09/02/03 22:03:05
このスレって質問者じゃなくて答える側が初心者っていうオチ?

607:デフォルトの名無しさん
09/02/03 22:06:26
○×したいんだけど、どうすれば実現できますか?

(´・ω・`)しらんがな

こうやったんだけど上手くいきません。どうしたらいいですか?

(´・ω・`)オジサンが教えたるがな

608:デフォルトの名無しさん
09/02/03 22:21:14
Vista + Visual Studio 2008 Express Edition + C# を使っています。
Debugモードでは問題なく動くのにReleaseモードではフリーズする場合、
どういった原因が考えられますでしょうか?
大量の計算を連続してさせているプログラムで、フリーズする箇所は毎回違うようです。
調べようにも取っ掛かりすらなくて困っています。
よろしくお願いします。

609:デフォルトの名無しさん
09/02/03 22:21:52
CPU休めてますか


610:デフォルトの名無しさん
09/02/03 22:26:04
>>609
100万行くらいのtxtファイルを読んできて、数分間延々と処理させてます。
CPUに負荷がかかりすぎるのが問題なんですかね?

611:デフォルトの名無しさん
09/02/03 22:28:31
ぱそこんもたまにはやすみたがっているんだよ。


612:608
09/02/03 22:36:59
タスクマネージャで眺めてたら、
処理開始から1〜2分はCPU使用率50%前後で、メモリ使用量が徐々に増加。
メモリが180MBくらいに達したところでCPU使用率が0%になってフリーズしました。
メモリ食いすぎってことでしょうか?
debugモードでは動くのに。。。

613:デフォルトの名無しさん
09/02/03 22:38:25
デッドロックしてない?

614:デフォルトの名無しさん
09/02/03 22:38:37
そのデバッグモードってデバッグビルド?
リリースビルドでデバッグでも同じ?

615:デフォルトの名無しさん
09/02/03 22:44:20
>>603
Thunder Forceの戦闘AI?

616:571
09/02/03 22:45:47
>>572-574
ありがとうございます。
VMwareでLive版のLinux立ち上げてISOイメージをマウントしてから、
ローカルディスクに全コピーしてみます。

617:608
09/02/03 23:00:46
>>613
マルチスレッド処理なので可能性はあるかもしれません。
ただ、デバッグで起こらないのでどうやって調べればいいのか。。。

>>614
>リリースビルドでデバッグ なんてことができるんですね。
試してみましたが、問題なく動きました。
\Releaseフォルダ内のexeを直接起動したときだけフリーズします。

618:デフォルトの名無しさん
09/02/03 23:03:37
一般的には排他処理のところっしょ

619:デフォルトの名無しさん
09/02/04 00:49:06
排他制御に不備があって、微妙なタイミングの差で動いたり動かなかったりするのかね。
いずれにせよ質の悪いバグだ。詳しく設計がわからないとアドバイスのしようがない。

620:デフォルトの名無しさん
09/02/04 01:32:14
>>570
レジストリですか。
すこし見てみたものの、まったく手がかりがありませんでした。
情報サンクスです。


621:デフォルトの名無しさん
09/02/04 02:01:40
別にレジストリ見なくてもわかる

エクスプローラのメニューからツール→フォルダ オプションを選択
ファイルの種類タブで、データファイルの拡張子がどう登録されているか確認

622:デフォルトの名無しさん
09/02/04 04:07:18
コンボボックスで質問があります。
コンボボックスに二つの項目があり、項目1を選ぶと変数+変数、
項目2を選ぶと変数-変数といったような処理をしたいのですが
if文でどのようにコンボボックスを設定すればそのような処理ができるのでしょうか?

623:デフォルトの名無しさん
09/02/04 07:57:00
はい

624:デフォルトの名無しさん
09/02/04 08:20:10
>>622
ComboBox.SelectedIndexChangedでSelectedIndex見て判断しろ

625:デフォルトの名無しさん
09/02/04 10:06:23
ComboBoxニdelegate突ッ込ンデ自前デ描画シナサイ

626:デフォルトの名無しさん
09/02/04 10:39:03
>>621
どうやって関連づけやったのよ?
関連づけやってるところのソース見せて

627:デフォルトの名無しさん
09/02/04 10:47:57
>>626
↓でも読んでろ

URLリンク(dobon.net)

どうせ実行ファイルのパスに空白が混じってるとかそういうオチだろうけど

628:デフォルトの名無しさん
09/02/04 11:37:58
C#2005で開発したアプリをVistaで動かしてみたところ、
パネルに配置したボタン色がパネルの色に同化してしまいました。
xpでは正常に表示されます
対処方法などあれば教えてください。

629:デフォルトの名無しさん
09/02/04 12:09:00
>>627
おマイには聞いてないってw
レジストリを触ったこと無い人がどうやって関連づけしたのかな〜っと

それに実行パスに空白があるからどうなるの?

630:デフォルトの名無しさん
09/02/04 12:14:36
普通にファイルを開くプログラムの選択で関連付けしたんで無いの。

631:デフォルトの名無しさん
09/02/04 14:02:29
>>629
なんで粘着してんの?親切に教えてるだけじゃない
そもそもの質問者も、プログラムで関連付けをしたいなんて書いてないし
回答者も、レジストリを触ったこと無いとも書いてない
実行パスの空白はCUIのOS触ったことあるなら解るだろ

632:デフォルトの名無しさん
09/02/04 16:05:30
felicaのシステムを作っているのですが、
felicap = felica_polling(pasorip, (ushort)systemcode, 0, 0);
この処理でfelicapに値が入るのですが、この処理の意味が根本的にわかりません。
ここではどういった処理が行われているのでしょうか?

633:デフォルトの名無しさん
09/02/04 16:09:18
FeliCa でソフトを作りまくるスレ 2ブロック目
スレリンク(tech板)

634:デフォルトの名無しさん
09/02/04 16:18:21
felicaのシステムを作っているのですが、
felicap = felica_polling(pasorip, (ushort)systemcode, 0, 0);
この処理でfelicapに値が入るのですが、この処理の意味が根本的にわかりません。
ここではどういった処理が行われているのでしょうか?

連続で同じカードの読み取りができなくて困っています。

635:デフォルトの名無しさん
09/02/04 16:19:31
>>633
すみません。
該当スレに書き込むつもりが同じところに書き込んでしまいました。


636:デフォルトの名無しさん
09/02/04 17:28:30
生まれて半年の者です。他のクラスの変数に関して質問です。

クラスAとBがあります。
クラスAにStack型stackがあります。
クラスBにString型stringがあります。

クラスBでクラスAをインスタンス化して、stackにstringをpushします。
そして変更されたstackをクラスAに戻して作業を進めたいのですが、
クラスAではstackは元のままになっています。

どのような問題があるのでしょうか?

637:デフォルトの名無しさん
09/02/04 17:30:18
クラスAに戻すとか言われてもよく分からんのでコード貼ってくれ

638:デフォルトの名無しさん
09/02/04 17:32:05
AがStackをそのまま外に晒すのはよくない(別のクラスにした意味がない)
pushするメソッドをAに定義するべき

639:デフォルトの名無しさん
09/02/04 17:34:00
Stackを晒してるなら、Pushしたのが反映されてるはずだがな。
たぶんnewして渡してるとかじゃないかw

640:デフォルトの名無しさん
09/02/04 17:40:32
>>637
戻すじゃなくて戻したいの意味でした。すみません。

ClassA
{
 public void ClassA()
 { }
 public Stack stack = new Stack();
 }

ClassB
{
 public String string = 〜;
 ClassA a = new ClassA()
 a.stack.push(string);
}

これだけだとクラスAでは変更できてないです。
pushしたあとにどのような作業が必要でしょうか?

641:デフォルトの名無しさん
09/02/04 17:41:50
意味不明すぎる

642:デフォルトの名無しさん
09/02/04 17:43:05
たぶんクラスとインスタンスの関係が分かってないんじゃない?
生まれて半年だし

643:デフォルトの名無しさん
09/02/04 17:43:28
staticだな〜説明は誰かに任す

644:デフォルトの名無しさん
09/02/04 17:44:38
そこでstaticにしろと言うのは教育的じゃないと思う


645:デフォルトの名無しさん
09/02/04 17:45:02
もうちょっと勉強進めればわかるよ
staticにすればいいのかもしれないけど実際は絶対やっちゃダメなパターン

646:デフォルトの名無しさん
09/02/04 17:47:02
つってもなあ

「○○したいんだ」

って言ってる奴に勉強しろっても回答になってない気がするぜー

647:デフォルトの名無しさん
09/02/04 17:47:08
ClassB
{
 public String string = 〜;
 ClassA a = new ClassA()
 //↓これメソッド内だよね?
 a.stack.push(string);
}

↑でインスタンス化された a の stack にはちゃんとPushされている。
ただそのせっかく作ったClassAのインスタンスaは参照されないまま消えてしまっただけ

648:デフォルトの名無しさん
09/02/04 18:10:59
C#で質問があります。
timeが11:00と入力されなかった場合(たとえば1100と入力された場合)、コロンを追加しようとしています。
string time;
if (!(time.Contains(":"))) {
time = time[0] + time[1] + ":" + time[2] + time[3];
}
で、この値を見ると、11:00ではなくて98:00になっちゃうのですが、なんでこんな数字になっちゃうんでしょう。
原因と改良方法をご示唆いただけないでしょうか。


649:636の者です。
09/02/04 18:15:02
windowsフォームのボタンを押したときの動作をプログラムで書きたいときは、
ボタンをダブルクリックすれば、プログラムを書く場所を自動で作ってくれますが、
クラスBにあるボタンを押したときの動作を、クラスAに書くことは可能でしょうか?

650:デフォルトの名無しさん
09/02/04 18:17:59
>>648
char同士の文字コードの加算になってるから
time = '1' + '1';
でやってみるとわかるよ
time = time[0].ToString() + time[1].ToString() + ":" + time[2].ToString() + time[3].ToString();
にすればいい

>>649
+=を使ったイベントハンドラの登録方法が理解できていればできる

651:デフォルトの名無しさん
09/02/04 18:23:58
> time[0].ToString() + time[1].ToString() + ":" + time[2].ToString() + time[3].ToString();
くどすぎる。
StringBuilder つかおうぜ。

652:デフォルトの名無しさん
09/02/04 18:27:28
じゃあString.Format("{0}{1}:{2}{3}", time[0], time[1], time[2], time[3])で

653:デフォルトの名無しさん
09/02/04 18:27:30
>>647
あ〜昔同じ失敗したな〜

654:デフォルトの名無しさん
09/02/04 18:27:37
>>650
早速ありがとうございました。
ToString()でできました。


655:デフォルトの名無しさん
09/02/04 18:28:11
>>651
そこで、StringBuilderは使わないだろ。
time = time.Substring(0, 2) + ":" + time.SubString(2, 2);

656:636の者です。
09/02/04 18:31:41
>>650
なんとなくいけそうです。

>>653
お〜友よ〜

657:デフォルトの名無しさん
09/02/04 18:44:37
>>621
ツール-フォルダオプションは、真っ先に見ました〜。
>>626、636
というか、ここで手動で関連づけを登録しました。

そうしたら、登録したとたん、「詳細設定」のボタンが消え、「元に戻す」というボタンに変化しちゃったのです。

詳細設定のボタンがあれば、アプリケーションの挙動を見れるかと思ったのですけど。
たとえば、txtの詳細設定のopenアクションを見ると、アクションを実行するアプリケーションの項目に、「C:\Windows\system32\NOTEPAD.EXE %1」とあり、これを修正すればよいことがわかります。
ところがなにしろボタンがないから、手も足もでない…。

空白かな〜。う〜〜む。
アプリケーションじたいはデータファイルのダブルクリックで起動しているのですが…。
ま、C#とはあまり関係なさそうなので、この件はこれで。
お騒がせしました。ありがとうございました。


658:デフォルトの名無しさん
09/02/04 18:57:25
お願いします(゚ω゚)
System.Text.RegularExpressions.Regexを使って
 [ok] 100
 [ok] 0.001
 [ng] 00 → 0
 [ok] 0.1000
前ゼロ入力をReplaceで""に置き換えたいのですが、正規表現が上手く書けませぬ
教えてエロい人

659:デフォルトの名無しさん
09/02/04 19:00:35
>>658
正規表現 Part5
スレリンク(tech板)

660:デフォルトの名無しさん
09/02/04 19:02:22
あーd>>659 ここで聞きたかったぜっ♪

661:デフォルトの名無しさん
09/02/04 21:49:44
>>645
他クラスからアクセスする変数には手当たり次第static使ってるんだが…

何を勉強すればいいんですか?

662:デフォルトの名無しさん
09/02/04 21:52:53
構造化プログラミング

663:デフォルトの名無しさん
09/02/04 21:55:56
オブジェクト指向プログラミング

664:デフォルトの名無しさん
09/02/04 21:57:38
staticフィールドはダメだがstaticメソッドはいいぞ
privateなstaticメソッドが最高だ

665:デフォルトの名無しさん
09/02/04 21:58:06
構造化プログラミングを理解してない奴が、オブジェクト指向を学んでも無駄。

構造化プログラミングを学んだら、中規模以上のプログラムをたくさん書く。
それからでもオブジェクト指向は遅くないよ。

666:デフォルトの名無しさん
09/02/04 21:59:25
static メンバ変数なんて
ただ1個しか存在しないもんな。
2つ作りてええええええええ!!!! と思っても
1つしか存在できない。
不便過ぎ。

667:デフォルトの名無しさん
09/02/04 22:02:02
C言語等の非OOA出身者はstaticをメモ帳や定数保管庫程度に考えてない

668:デフォルトの名無しさん
09/02/04 22:02:42
しか が抜けた

669:デフォルトの名無しさん
09/02/04 22:02:49
オブジェクト指向も関数型プログラミングも
深いとこに行くと実用的じゃない宗教じみたものがうじゃうじゃ出てくるから
そこに行ってしまわないように気をつけないと

670:デフォルトの名無しさん
09/02/04 22:12:08
むしろいきなりOOPでいいと思うよ。
>>665みたいな意見はありがちだけど、構造化プログラミングなんて
中身のないスカスカな話で馬鹿でなければ「畳の上の水泳」で十分だと思う。

っていうか、俺も含めてたかがOOP理解したぐらいで鬼の首とったように語るのは
とても恥ずかしいよなw

671:デフォルトの名無しさん
09/02/04 22:16:29
物事をオブジェクトに切り分けるというのは大成功した考え方だと思うけど
継承は失敗だしインターフェースの実装もそんなに上手くない感じだと思う
そういった抽象化はクロージャにした方がシンプルで分かりやすい

672:デフォルトの名無しさん
09/02/04 22:19:30
>>636
> 生まれて半年の者です。

おいおい、生後半年でプログラミングかよ。
たいしたもんだな!

673:デフォルトの名無しさん
09/02/04 22:21:38
どんな天才だよw

674:デフォルトの名無しさん
09/02/04 22:24:22
>>671
使いこなせない人にとって上手くないだけなんだろ

675:デフォルトの名無しさん
09/02/04 22:26:16
母国語より先にプログラム言語を覚えたんだな
いったいどんな子に育つやら

676:デフォルトの名無しさん
09/02/04 22:28:11
今さらオブジェクト指向だデザパタだインターフェースだってやるのは
正直違うかなと思うよ
今のC#にはもっとよい道具があるから
ただオブジェクト指向の基本的なところは抑えておかないとまずいけど

677:デフォルトの名無しさん
09/02/04 22:29:44
だまれ若造

678:デフォルトの名無しさん
09/02/04 22:31:19
お年寄りは静かにしてください

679:デフォルトの名無しさん
09/02/04 22:32:17
>>676
それはC#が、最近になってより初心者向けの機能を実装をしてるってこと?

680:デフォルトの名無しさん
09/02/04 22:33:25
>>676
>今のC#にはもっとよい道具があるから
ないってw
知ったようなこというなよ。

クラスベースのOOPが万能じゃないのは確かだけど、現時点でそのオルタナティブが
C#に限らず発案されているとは思えん。

681:デフォルトの名無しさん
09/02/04 22:33:31
>>679
クロージャはインターフェースよりも初心者にとって使いやすいと思うよ
直観的だし

682:デフォルトの名無しさん
09/02/04 22:35:26
なんでクロージャーとインターフェイスを対置するんだ?

クロージャーとインターフェイスって「代替財」か?
わけがわからんよ。

683:デフォルトの名無しさん
09/02/04 22:37:16
覚え方なんて人それぞれだし。

自分が通ってきた道についてしか語れないだろ。

684:デフォルトの名無しさん
09/02/04 22:38:00
>>680
クロージャは実際には一つのメソッドを持ったインターフェースを
実装したオブジェクトを簡易に作り出す機能だけど
それさえあればオブジェクト指向の抽象化は全部出来る
オブジェクト指向の継承にまつわるややこしいところはすっ飛ばして
そっちに行くのが今は正解なんじゃないかねえ

685:デフォルトの名無しさん
09/02/04 22:39:36
また変な主義者が来ましたねw

686:デフォルトの名無しさん
09/02/04 22:44:52
>>684
それって、昔の1ファンクション1機能の構造化プログラミングと同じじゃないの?
静的なメソッドとは何がちがうのけ?

687:デフォルトの名無しさん
09/02/04 22:53:45
相談があります。
C#でプログラムを作り始めて半年くらいになります。
ようやく身の回りのソフトは、だいぶ自作できるようになってきました。
ところで、それをリリースしようと思うと、プログラムのなかに直接書いてあるパスワードなどを設定ファイルに移動したり、自分用のディレクトリ構造にあわせて作った部分を汎用にする必要が出てきます。
それはまあやる気になればできそうなのですが、設定不要のかんたんなソフトを知人10人ほどにテストしてもらったところ、だれひとりとして.NETを入れていないため、動作しなかった、ということがわかりました。
ひょっとして、.NETやC#って、すごくマイナーなんでしょうか。
このままC#をつづけた方がよいのか(けっこう使いやすくて気に入ってます)、それとも別の言語に移ったほうがよいのか。
移るとしたら、もっとメジャーな言語ってなんですか?
Webベースのプログラムとか、Ajaxとかですか?
.NETを組み込んだ状態でコンパイルするとかできないんですかね〜?


688:デフォルトの名無しさん
09/02/04 22:55:38
WebでできるようなことならSiilverlightというのがある
イメージ的には「C#で書けるFlash」
ランタイムは超小さいので配布が手軽

689:デフォルトの名無しさん
09/02/04 22:57:55
だからクロージャとインターフェイスは代替関係にないってw
ただ一部の機能が競合関係にあるだけ。

たぶん従来ICompareをわざわざ用意していたようなのがデリゲートでスッキリ
書けるようになった、みたいな例を見て短絡したんだろうけど。

690:デフォルトの名無しさん
09/02/04 23:03:14
>>687
.netFrameworkをインストールしないって人は多いよね
vista以降は.netはインストされてるから、ある程度は問題なくなると思うけど

なんのインストもなくて利用可能なのは、VisualStudioのC++のネイティブコードか、
Delphiぐらいじゃないのかな。

691:デフォルトの名無しさん
09/02/04 23:13:21
しつもんです。

クラス内のメンバの初期化はどこでしてますか?
宣言時に初期化してしまうか、コンストラクタ内で初期化するか迷ってます。

///以下抜粋
internal sealed class 通信
{
private UdpClient UDP;
private Thread スレッド;
private List<byte[]> 受信リスト= new List<byte[]>();///宣言時か
private List<IPEndPoint> クライアントリスト= new List<IPEndPoint>();

public 通信(int ポート)
{
UDP= new UdpClient(ポート);///コンストラクタ内か
スレッド = new System.Threading.Thread(new System.Threading.ThreadStart(受信));
///抜粋以上


692:デフォルトの名無しさん
09/02/04 23:18:16
>>691
基本は宣言時じゃないかな。
コンストラクタでもいいけど、コンストラクタをオーバーロードしているときには、
複数のコンストラクタで初期化しなくちゃいけなくなるから。

別のメソッドを用意して、そこで初期化してもいいけど、意味ない気がするし。
条件によるけど。

693:デフォルトの名無しさん
09/02/04 23:18:50
C#, C♯, C#相談室 Part50
スレリンク(tech板)

埋まったけど立てられなかった。
誰か頼む。

694:デフォルトの名無しさん
09/02/04 23:22:33
ホスト規制のためNGですた。

695:デフォルトの名無しさん
09/02/04 23:22:51
>>693
あっちは相談室と名乗りながら、
質問の揚げ足を取って悦に浸っている常連ばかりだから嫌い

696:デフォルトの名無しさん
09/02/04 23:23:14
>>686
Cとの比較で言うと、クロージャは「状態のある関数ポインタ」といえると思う
Xの値が欲しい時に

void Hoge(Func<int> getX){ int x = getX(); }

C#ならこう書ける。getXにはintを返す関数がなんでも入れられるしその場で作れる
Cで書くと

struct Func_int{
int (*func)(void*);
void* args;
};
void Hoge(Func_int fi)
{
int x = fi.func(fi.args);
}
こんなんだけど引数の型も作らなきゃいけないし関数はvoid*をとらなきゃいけないしで大変だ
オブジェクト指向で書くと

class Func<int> : IFunc<int>
{
int x, y;
public Func(int x, int y){ this.x = x; this.y = y; }
public int Method(){ return x + y; }
}
クロージャだと

Hoge(() => x + y);

こうだ。
これが進化だよ。

697:デフォルトの名無しさん
09/02/04 23:25:53
>>695
でも作っとかないと、そういう人らがここに常駐されたら困る

698:デフォルトの名無しさん
09/02/04 23:31:25
>>691
その前になんちゅうソースだコレ。

699:デフォルトの名無しさん
09/02/04 23:31:36
>>697
心配無用
既に常駐してる

700:デフォルトの名無しさん
09/02/04 23:36:15
まあとりあえず立てた。
C#, C♯, C#相談室 Part51
スレリンク(tech板)l50

701:デフォルトの名無しさん
09/02/04 23:36:42
>>696
その例だと従来の方法でもStaticなメソッドを使えば
int x = Class.Method(a, b);
で代用がきくから同じことだと思うんだけど。何が違うの?

702:デフォルトの名無しさん
09/02/04 23:37:33
読解性

703:デフォルトの名無しさん
09/02/04 23:40:36
>>690
VC++ も今は CRT が DLL 推奨だから配るならインストーラ作るべき
なんやけどな。msm があるしサイズも小さいので格段に楽だから
.NET と比べるレベルじゃないけど。


704:デフォルトの名無しさん
09/02/04 23:42:54
自分の場合は固定長バッファ持たせる時とか、ソース直書きのデータを持たせる時以外は宣言の所に初期化コードを書かないようにしてる。
基本的にはできるだけコンストラクタに書いたほうが、読みやすいコードになるよ。
#regionと組み合わせるとなお良い。

指すものがコンパイル時点で決まっていて、利用者側のコードに左右されない要素(リテラル的なもの)は宣言と初期化を一緒にしてもいいと思う
上の固定長バッファはあてはまらないけど…

705:デフォルトの名無しさん
09/02/04 23:44:00
>>687
「.net Frameworksインストールしてね」で終わりじゃないか?
むしろ、Windows Updateで配布されてるんじゃないのか?.netぐらい

706:デフォルトの名無しさん
09/02/04 23:45:31
>>700


707:デフォルトの名無しさん
09/02/04 23:47:58
>>687
「めんどくせえなぁ・・・なんでこんな糞プログラムを・・・。そうだ!インストールしてない事にすればいいんだ!」

708:デフォルトの名無しさん
09/02/04 23:49:28
>>701
void Hoge()
{
int x = Class.Method(a,b);
}
これだとxはMethod(a,b)から返ってくる値しかとれないでしょ。

void Hoge(Func<int> getX)
こうしておけば

Hoge(() => x + y);
Hoge(() => x * y);

外部から自由な演算を入れられる。
ハッシュテーブルのキーが欲しいということになっても

Dictionary<TKey, TValue> CreateDictionary<TKey, TValue>(TValue[] array, Func<TValue, TKey> getKey)
{
Dictionary<TKey, TValue> dic = new Dictionary<TKey, TValue>();

foreach(var item in array)
{
dic.Add(getKey(item), item);
}

return dic;
}

var dic = CreateDictionary(array, item => item.Name);
その型のKeyにしたいものを自由に選べる

709:デフォルトの名無しさん
09/02/04 23:52:03
.NET Frameworkは再頒布可能だからその自作ソフトとやらに含めて配布すればいいんだよ。

URLリンク(msdn.microsoft.com)

ちなみにWindows Server 2003、Windows Vista、Windows 7にはリリース時点で最新の.NET Frameworkが入っている。(より新しいバージョンが出て、それが必要な場合は更に入れる必要がある)

710:デフォルトの名無しさん
09/02/04 23:53:57
はやくXPが駆逐されればいいんだがなあ

711:デフォルトの名無しさん
09/02/04 23:57:24
デザインパターンは関数型っぽいことを無理やり手続き型OOPLでやるための工夫が主だから
かなり簡単に実装できるよな

712:デフォルトの名無しさん
09/02/04 23:58:26
>>708
それみると、君の主張するところの直感的でもないし、
初心者にもわかりにくいと思うよ

713:デフォルトの名無しさん
09/02/05 00:02:11
>>712
じゃあオブジェクト指向や構造化でもっと直感的に、
初心者に分かりやすく書ける?

714:デフォルトの名無しさん
09/02/05 00:04:46
スレ違い
よそで存分に議論してくれ

715:デフォルトの名無しさん
09/02/05 00:05:14
初心者ではないが、何が書いてあるかさっぱりだw

716:デフォルトの名無しさん
09/02/05 00:07:06
人の揚げ足取りと議論厨は相談スレにお引き取りください

717:デフォルトの名無しさん
09/02/05 00:07:42
すみませんコレは仕様なんでしょうか
1:public class Foo{
2: private readonly int[] test = new int[]{1,2,3,4,5};
3: public Foo(){
4:  int[] test2 = test1;
5:  test2[0]=2;
6:  Console.WriteLine(@"test[0]=" + test[0].ToString());
7: }
8:}
上記 2行目readonlyにしてるtestが、5行目で書き換えられてしまいます。

718:デフォルトの名無しさん
09/02/05 00:09:03
>>708 じゃねーけど知りたいんならレキシカルクロージャとかで
ぐぐった方がいいと思うよ。

>>708
2ch で説明するのはさすがに難しいと思う

719:デフォルトの名無しさん
09/02/05 00:09:15
4:  int[] test2 = test;
のまちがいです

720:デフォルトの名無しさん
09/02/05 00:09:37
配列の要素がreadonlyになるわけではありません

721:デフォルトの名無しさん
09/02/05 00:14:31
>>718
2chで説明するのが難しいことが、初心者向けなの?

722:デフォルトの名無しさん
09/02/05 00:15:02
>>718
ググっても関数型言語ユーザーの宗教じみた言論に圧倒されるばかりだと思う

723:デフォルトの名無しさん
09/02/05 00:18:22
>>701
匿名関数は生成したスコープの変数をそのまま取り込める(環境を渡してるって言うんだっけ?)
副産物的な物だけど、遅延評価的な振る舞いも持ち合わせてる

724:デフォルトの名無しさん
09/02/05 00:19:56
この辺の議論からもう13年か。
URLリンク(java-house.jp)
URLリンク(www.google.co.jp)

>>718
むしろ近年のクロージャブームはLLの方が先に火をつけた気もするけどね。
JavaScriptの無名関数とかやっぱり初心者泣かせなのかねぇ?

725:723
09/02/05 00:21:07
ごめんさっきの >>718 あてじゃなくて >>722

726:デフォルトの名無しさん
09/02/05 00:31:46
何々、これでいいじゃん?

public static class Class
{
 static int i;
 public static int Method() { return i++; }
}

727:デフォルトの名無しさん
09/02/05 00:37:50
>>726
でもさ、C#でクラスそのものを引数に渡すって面倒事が多いでしょ。
だからデリゲートでもインタフェースでもインスタンスを生成して引数に渡していたのに。

728:デフォルトの名無しさん
09/02/05 00:41:24
クラスそのものって引数に渡せるの?

729:デフォルトの名無しさん
09/02/05 00:41:29
>>727
staticだからclassそのものを渡す必要なんてないよ
どこでも自由に

this.label1.Text = Class.Method().ToString();

でいいんじゃない?

730:デフォルトの名無しさん
09/02/05 00:43:56
>>728
private void button1_Click(object sender, EventArgs e)
のobjectはクラスじゃん?

731:デフォルトの名無しさん
09/02/05 00:48:04
objectはインスタンスだろ

732:デフォルトの名無しさん
09/02/05 00:48:56
ocjectはクラス名だ

733:デフォルトの名無しさん
09/02/05 00:49:27
object

734:デフォルトの名無しさん
09/02/05 00:50:41
この場合は話の流れからインスタンスってことじゃねーの?


735:デフォルトの名無しさん
09/02/05 00:51:26
public class Class
{
 int i;
 public int Method() { return i++; }
}

これの方がいいだろ
たくさん作れるし

736:デフォルトの名無しさん
09/02/05 00:54:51
>>734
この流れって話の本筋なわけ?

737:デフォルトの名無しさん
09/02/05 00:56:27
>>729
それだと元のコードの引数を変えれば動作を変えられるという点が失われているじゃないか。

738:デフォルトの名無しさん
09/02/05 01:34:39
>>737
その引数を、Staticなメソッドで渡してあげればいいじゃない
public static class test
{
 static int i;
 public static int Method1() { return i++; }
 public static void Method2(int k) { i = i + k; }
}

739:デフォルトの名無しさん
09/02/05 01:36:47
>>738
いや、>>708とか足し算が掛け算になったり、辞書引いたりするような変化なんだけど。

740:デフォルトの名無しさん
09/02/05 01:45:46
>>739
つまり

>だからデリゲートでもインタフェースでもインスタンスを生成して引数に渡していたのに。

というのは

>708とか足し算が掛け算になったり、辞書引いたりするような変化なんだけど。

と同義ということ?


741:デフォルトの名無しさん
09/02/05 01:58:26
C#でCreateToolhelp32Snapshot関数を使いたいのですが、どう書けばいいのか分かりません。
.NET Frameworkに似たようなクラスライブラリはありませんか?

742:デフォルトの名無しさん
09/02/05 02:41:42
>>741
URLリンク(89.234.50.65)

743:デフォルトの名無しさん
09/02/05 02:43:11
URLリンク(pinvoke.net)

744:デフォルトの名無しさん
09/02/05 03:24:45
>>740
いや、同義というより1つの具体例と言うべきかな。
>>696みたいに別の場合だってある。

745:デフォルトの名無しさん
09/02/05 04:17:38
>>732
objectはキーワードだ

746:デフォルトの名無しさん
09/02/05 06:18:49
C#でアルファベットをfor文のループにかけてAからZまでを表示したいのですが、うまくいきません。
どのようにすればfor文でアルファベットを数値のようにAからZを表示する事が出来るのでしょうか?

747:デフォルトの名無しさん
09/02/05 06:20:05
>>746
一番分かりやすいのは配列にすればいいと思うよ

748:デフォルトの名無しさん
09/02/05 06:22:37
for(int i=0;i<26;i++)
Console.WriteLine((char)('A'+i));

749:デフォルトの名無しさん
09/02/05 06:47:26
for(char c = 'A'; c <= 'Z'; c++) Console.WriteLine(c);

750:デフォルトの名無しさん
09/02/05 09:26:15
>>740

>>739
> つまり

> >だからデリゲートでもインタフェースでもインスタンスを生成して引数に渡していたのに。

> というのは

> >708とか足し算が掛け算になったり、辞書引いたりするような変化なんだけど。

> と同義ということ?


751:デフォルトの名無しさん
09/02/05 09:31:27
>>740
インスタンスを作ることでコンテキストの別な関数オブジェクトができる(イベント処理の時にstaticだとマズいだろう)
値を変えるのと振る舞いを変えるのとでは大違いだし…

デリゲート(委譲)はその名の通り、実行するタイミングを相手に委ねてる
渡すことを意図しているのは値(狭義の)ではなく動作

752:デフォルトの名無しさん
09/02/05 14:00:29
Form1からForm2をShowDialogした場合、
Formが描画される際に画面の上から順に
貼り付けてあるコントロールが表示される感じで、
Closeする場合も同様にもっさり感があるのだが、回避する方法はある?
ちなみにForm2がLoadされるとDataGridViewにMDBから
データを読込んで表示させているのだけど。

753:デフォルトの名無しさん
09/02/05 14:15:24
それはビルドした実行ファイル?デバッグ?

754:デフォルトの名無しさん
09/02/05 14:17:26
>>753
デバックでも実行ファイルでも描画速度にあまり変化がない感じ・・・

755:デフォルトの名無しさん
09/02/05 14:20:02
実行環境は?

756:デフォルトの名無しさん
09/02/05 14:20:35
>>752
描画を手動でやる

↓ソース開始↓

[コントロール名].SuspendLayout()   //コントロールの描画停止

//(この間に処理を書く)

[コントロール名].ResumeLayout()  //コントロールの描画再開

↑ソース終了↑

コントロール名をthisにすればForm全体の描画を停止できる

757:デフォルトの名無しさん
09/02/05 14:20:44
それはGUIの設計に問題があるね
フローレイアウトパネルにコントロール配置してFillしたりAnchorしたり
推奨されてないことやってないだろうね?

758:デフォルトの名無しさん
09/02/05 14:21:41
素人発言だけどSuspendLayoutとResumeLayoutとか?

759:752
09/02/05 14:36:21
実行環境はXPでCelelon2G・メモ1G
VS2008でつ。

GUIの設計はVB(.Netじゃないヤツ)みたいに
Formにコントロールを貼り付けるだけではダメなのかしら?
Formにあるのは、DataGridViewとButtonとTextBoxとLabelだけ。

DataGridViewコントロールを外して純粋にFormだけでShowすると
幾分早く描画されるって事はDataGridViewの処理が適切でないのかな?

今から756氏と758氏を参考に試してみます。
みんな優しいな。ありがたい!

760:デフォルトの名無しさん
09/02/05 14:47:04
DataGridViewに対してデータセットをバインドさせると早くなるよ〜
それでも遅いのならSQL文を見直すしかない

761:752
09/02/05 15:01:31
SuspendLayoutはあまり変化がなかった・・・ _| ̄|○

今は、OleDbConnection使ってMDBへ接続しているんだけど、
もっと早い方法はあるんですか?
SQL文に関しては単なるSELECT文なのでどうにもならないと思われ。。

762:デフォルトの名無しさん
09/02/05 15:02:32
データのバインドを直接じゃなくBindingSourceに任せてみたらどうだろう
こういう症状はあまり経験も聞いたこともないけど

763:デフォルトの名無しさん
09/02/05 15:08:40
あれ?もしかしてDataSetなし?

764:752
09/02/05 15:09:40
>>762
早速試してみる!
VB6から移行してきた口なんだが、勝手が違い過ぎて戸惑いすぐる。

765:デフォルトの名無しさん
09/02/05 15:14:45
DataSetはあります。
コードはこんな感じ(抜粋)
strSelectSQL(変数)へSELECT文を入れてます。

dba = new OleDbDataAdapter(strSelectSQL, dbc);
OleDbCommandBuilder builder = new OleDbCommandBuilder(dba);
dba.Fill(dtset);
dataGridView1.DataSource = dtset.Tables[0];

766:752
09/02/05 15:15:47
>>765 
名前入れ忘れたが、752です。

767:デフォルトの名無しさん
09/02/05 15:18:28
CommandBuilderからdatasetまで全部動的か

768:752
09/02/05 15:36:30
bindingSourceを追加してみたけど、速度は劇的に早くならなかった。
実行速度はこの位って事で満足したことにまつ。
なんか引っかかるけど・・・

ところでbindingSource下記で使い方間違ってない??
dba = new OleDbDataAdapter(strSelectSQL, dbc);
OleDbCommandBuilder builder = new OleDbCommandBuilder(dba);
dba.Fill(dtset, "TEST");
bindingSource1.DataSource = dtset;
bindingSource1.DataMember = "TEST";
dataGridView1.DataSource = bindingSource1;

教えて君で非常に申し訳なかったです。

769:760
09/02/05 15:36:38
動かしてないんでご両所くださいw
すべて妄想ですw

↓ソース開始↓

OleDbConnection odc = new System.Data.OleDb.OleDbConnection();
OleDbDataAdapter odda;

DataSet ds = new DataSet("GetData"); //データセットの名称を指定

//接続情報を指定
odc.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + @"\DUMMYDATA.mdb";

//実行SQL文と接続先情報を設定してアダプタを作成
odda = new OleDbDataAdapter("SELECT * FROM DUMMYDATA", odc);
//データを取得しテーブルを作成
//テーブル名称を設定(任意)
odda.Fill(ds, "tm_DUMMYDATA");

//データソースに設定
dataGridView1.DataSource = ds.Tables["m_DUMMYDATA"];  //インデックス値でもいい

↑ソース終了↑

いろいろ勘違いしてたらごめんね
反省はしないけど


770:752
09/02/05 15:44:25
>>769
ソースまで書いてもらって、しかもコメント付で!!
ほんとに親切にありがとう。
素直にうれしす。

771:636の者です。
09/02/05 16:40:08
コンストラクタについての質問です。
クラスが3つあります。クラスBは3つコンストラクタがあります。
ClassA
{
ClassB b = new ClassB(〜);
}
ClassB
{
public ClassB(N n){}
public ClassB(N n, M n){}
public ClassB(N n, M m, O o){}
}
ClassC
{
ClassB b = new ClassB(  );
b.〜
}
クラスAからクラスBを呼び出すときは、if文で分けてコンストラクタを1つだけ呼び出すことが
できたのですが、クラスCからクラスBを呼び出すときはどのように呼び出したら良いでしょうか?

772:デフォルトの名無しさん
09/02/05 16:42:45
こっちが聞きたい
ClassAとClassCは何が違うんだ

773:636の者です。
09/02/05 16:47:41
>>772
クラスAのwindowフォームからクラスBのwindowフォームを呼び出すんですが、
そのクラスBのフォームの選択欄を別のクラスCで使いたいのです。

774:デフォルトの名無しさん
09/02/05 16:49:37
それがどうした
>>772の答えになってないだろ

775:デフォルトの名無しさん
09/02/05 16:51:35
だったら
class A()
{
public B b;
C c;
public A(){b=〜;c=C(this)}
}

public class C()
{ public C(A a){} }
とかじゃだめ?

776:デフォルトの名無しさん
09/02/05 16:52:32
>>771
逆に聞く。
ClaaAからClassBを呼んだときと同じように、ClassCからClassBを呼ぶとどうなったんだ?


777:636の者です。
09/02/05 16:59:15
>>776
コンパイルエラーはでないのですが、
クラスCでは、クラスBの変数を呼び出しても未定義となってしまいます。

778:デフォルトの名無しさん
09/02/05 17:02:16
いいから失敗したコードを晒せ

779:デフォルトの名無しさん
09/02/05 17:03:42
>>777
確認だが、同一form(B)の情報をAとCで共有したいってことでいいの?
だったら両方でnewしてるから
今のコードだったら、AとCがそれぞれ別のform(B1,B2みたいな)を持ってることになる。

違うなら、そもそもやりたいことが分からん。

780:636の者です。
09/02/05 17:13:57
>>779
クラスAで入力したテキストの個数によってクラスBのコンストラクタをShow()を使って
1つ呼び出すだけですが、クラスBではリストボックスなどをSelectedItemで選んで、
その選んだ項をクラスCで使いたいのですが、クラスCでクラスBの変数を使いたいときに、
クラスBのインスタンス化を行うときに、どのコンストラクタを選択すればよいのかが分かりません。

781:デフォルトの名無しさん
09/02/05 17:25:00
禅問答みたいw

782:デフォルトの名無しさん
09/02/05 17:33:58
たぶんVB脳、それも極上のやつなんだと思う

783:デフォルトの名無しさん
09/02/05 17:47:52
小文字は大文字クラスのインスタンスだとする。

(1)
a → b1
c → b2

(2)
a → b ← c

どっちなんだ
ちなみに(1)はフォームが2つできる。そしてb1とb2は別物だからリストボックスなんかの情報は共有できない。
俺には(2)を実現したいのに(1)のコードを書いちゃってるように見えるんだが・・・

784:デフォルトの名無しさん
09/02/05 18:16:59
なんか、他のクラスを呼び出すときはNewしなきゃいかんという間違った固定概念をお持ちなのでしょう

785:デフォルトの名無しさん
09/02/05 18:32:58
×固定概念
○固定観念

786:デフォルトの名無しさん
09/02/05 18:46:17
もう少し勉強しましょう、としか言いようがない。

>クラスBのインスタンス化を行うときに、どのコンストラクタを選択すればよいのかが分かりません

クラスBは自分で書いたんでしょう? だったら自分で知ってるはず。
そうじゃなくてたぶんあなたの質問は、
「データをどうやってクラス間で渡したらいいですか?」というやつではないのかい?

なんか書いても書いても返答がないので手応えのない質問者だ

787:デフォルトの名無しさん
09/02/05 18:54:38
馬鹿がバレるのを恐れてるんじゃないの。

788:デフォルトの名無しさん
09/02/05 18:54:43
きょうもしつもんです。

「時間計るときに、System.Environment.TickCountを良く使うけど、
24.9日たったら一周しちゃうから、なんとかならないかなー」
なんて書き込みがよくありますが、
なんでSystem.Diagnotics.Stopwatchを使わないんでしょうか?

数十日間もパフォーマンスカウンタ取得し続けたら、CPUとかハード的に
負担(たとえばやりすぎたら故障しやすいとか)があるんでしょうか?

もしそうだとしたら、なんとかSystem.Environment.TickCountを64bit化する
コーディング方法はあるんでしょうか?

789:デフォルトの名無しさん
09/02/05 18:59:27
>>788
一周したかどうか、チェックすればいいんじゃないでしょうか。

790:デフォルトの名無しさん
09/02/05 19:01:24
フレームワークのバージョンのせいじゃねーの

791:デフォルトの名無しさん
09/02/05 19:05:27
じゃあやっぱりSystem.Diagnotics.Stopwatchでもいいんですかね。
なんかCPUのクロックからどうのこうのって言われるとCPUに悪そうなきがして。


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

5003日前に更新/209 KB
担当:undef