ふらっとC#,C♯,C#( ..
[2ch|▼Menu]
562:デフォルトの名無しさん
09/07/12 14:55:13
>>561
SQLそのものが表示コントロールになるの?

563:デフォルトの名無しさん
09/07/12 14:55:28
ExcelとAccess

564:デフォルトの名無しさん
09/07/12 14:58:38
既存のC#アプリのpanel内に新たに表示させなければいけないんです。

565:デフォルトの名無しさん
09/07/12 15:00:47
じゃあDataGridViewで良いんじゃないかな

566:デフォルトの名無しさん
09/07/13 20:35:02
DataGrid にはカラム名の上に、CaptionText という
タイトル名を表示するエリアがあったのですが
DataGridView にそれらしきプロパティが見つかりません。
DataGridView では CaptionText に相当する機能は切捨てられたのでしょうか?
よろしくお願いします。

567:デフォルトの名無しさん
09/07/14 18:09:07
DataGridは複数の階層状テーブルを表示する機能があったから必要だったけど
DataGridViewは単一テーブル表示になったから不要になった

568:デフォルトの名無しさん
09/07/14 19:39:56
>>567
そういう経緯があったんですか
ありがとうございます

569:デフォルトの名無しさん
09/07/15 09:34:20
Application.Idleにイベントハンドラを登録してディスプレイの毎フレームごとに処理を行うように
作っているところなのですが、
アプリケーションがアクティブなときは問題ないものの、(毎秒60回呼び出される)
アクティブでなくなったときは20フレーム程度まで落ちてしまいます。
これを回避する方法はありませんでしょうか?

570:デフォルトの名無しさん
09/07/15 09:46:21
>>569
呼び出す方法を変える

571:デフォルトの名無しさん
09/07/15 09:54:37
>>570
呼び出す方法を変えるとしたら、どのような方法が挙げられますか?

572:デフォルトの名無しさん
09/07/15 10:26:24
>>571
タイマーを使うとか、きっちり画面に同期させたいならDirectXを使うとか

573:デフォルトの名無しさん
09/07/15 10:57:12
>>572
タイマーでは50ms程度の精度しか出ないので60フレーム(16ms)レベルの処理では使えません。

ずばりDirectXを使用しているプログラムです。
リフレッシュレートが60Hzを超えているディスプレイでも秒間60フレームを維持できるようにしようと考えています。

DirectXのフレーム同期では、結果としてリフレッシュレートに同期することになると思うのですがいかがでしょうか。

574:デフォルトの名無しさん
09/07/15 12:19:33
>>573
APIで用意されているタイマーには種類がいくつかあって、約55ms間隔のもあるけど
もう少し速い約16ms間隔というのもある。

で、DirectX使ってるのに同期すると困るの?

575:デフォルトの名無しさん
09/07/15 12:49:46
その手のリアルタイム処理は標準的なメッセージループと相性があまりよくない
だからそこ弄るか素直にそういうことやってるの使うと吉

576:デフォルトの名無しさん
09/07/15 13:14:11
時間測って、必要に応じて中で何度か更新処理だけ繰り返せばいいだろ
描画のタイミングさえあっていれば、更新処理自体は別に等時間間隔で呼び出す必要はないんだから

577:デフォルトの名無しさん
09/07/15 13:44:12
質問内容については自己解決しました。
アクティブでないときに50msのウェイトをかける処理が残っていただけでした。

>>574
興味深いですね。そのような精度のタイマー(System.Timer)があるんですね。
System.Threading.Timerとは使い方が微妙に違うようです。
今回は結果として必要なくなったのですが、また必要になったときに詳しく調べてみることにします。
どうもありがとうございます。

578:デフォルトの名無しさん
09/07/15 13:54:13
>>576
ほかのウィンドウメッセージと同期的に動かさないといけないので、(フルスクリーンモード切替とか)
他のスレッドを立ててまわすのはまずいんです。

まあ、やってできないことはないんですけどね。

579:デフォルトの名無しさん
09/07/15 19:07:57
WebBrowser.NavigateToString メソッド が使いたくてソリューションエクスプローラー参照の追加で
PresentationFrameworkを追加し、namespace WindowsFormsApplication1内に
using System.Windows.Controls;
と記述しても
「'System.Windows.Forms.WebBrowser' に 'NavigateToString' の定義が含まれておらず、
型 'System.Windows.Forms.WebBrowser' の最初の引数を受け付ける拡張メソッドが見つかりません
でした。using ディレクティブまたはアセンブリ参照が不足しています。」
とエラー表示されて使用出来ません
同じ名前空間とアセンブリのWebBrowser.Navigate メソッドは問題なく使えるのですが
設定の仕方が間違っているのでしょうか?

580:デフォルトの名無しさん
09/07/15 19:27:11
System.Windows.Controls.WebBrowser使わないと駄目だぜ
でWinForm上で表示するならSystem.Windows.Forms.Integration.ElementHostが必要

581:デフォルトの名無しさん
09/07/15 19:45:35
つかHTMLを表示したいだけならSystem.Windows.Forms.WebBrowserでもDocumentTextとか使えば良いんだが…

582:デフォルトの名無しさん
09/07/15 20:30:56
>>578
自前でループ書き、メッセージ処理はApplication.DoEventsで処理させるというのはどう?

583:デフォルトの名無しさん
09/07/15 20:48:33
>>580
System.Windows.Forms.Integration.ElementHostが必要ということでまだそれを理解するには時間がかかりそうです
勉強してみます ありがとうございました

>>581
.WebBrowser1.DocumentText = "test";
と書いて表示する事が出来ました
ヘルプから調べられるWebBrowserメンバでtextとかstringで検索しても出てこなかったので
あることすら知りませんでした ありがとうございました



584:デフォルトの名無しさん
09/07/15 22:17:21
Windows.Formのクラスが

Form1.cs
Form2.cs
Form3.cs



とあってそれらフォームのタイトル、Textを取得することはできますか?
リフレクションでクラス名は取得できたんですが。
そのクラス名からActivator.CreateInstance()してTextも取れるんですが、
どうにも遅いです。
簡単に速い方法があったら教えてください。

585:デフォルトの名無しさん
09/07/15 22:21:55
ありません
そんなものが必要になること自体間違っています
まずは考え方を矯正しましょう

586:デフォルトの名無しさん
09/07/15 22:51:13
初心者がリフレクションを使う場合、本当は必要ないことがほとんどだ。

587:デフォルトの名無しさん
09/07/16 00:09:53
あらかじめ(静的に)FormのタイトルとTextを格納したデータを持てば?

588:デフォルトの名無しさん
09/07/16 00:14:51
if(hoge==null){return}
if(hoge!=null){...}
nullチェックってどっちがいいんでしょうか?好みでいいんですね?

589:デフォルトの名無しさん
09/07/16 00:24:43
>>588
nullかどうかの問題じゃなくて、
if-else は短い方から書けっていう格言があったりする。

590:デフォルトの名無しさん
09/07/16 00:28:35
APIを利用する為にテキストボックスに入力されたテキストを
constにする必要があるんですがどうすれば良いでしょうか?

591:デフォルトの名無しさん
09/07/16 00:29:50
>>589
ありがとうございます。
そんな格言があるんですね。いつも長い方から書いていた。この場合は前者を使用すべきですね。

592:デフォルトの名無しさん
09/07/16 01:01:03
>>590
ちょっとそのAPIのDllImportしてるところ書いてみろ

593:デフォルトの名無しさん
09/07/16 01:19:10
>>592
DllImportしてるなんて微塵も書いてないが…

594:デフォルトの名無しさん
09/07/16 01:26:37
じゃあどうやってAPI呼んでるんだ?

595:デフォルトの名無しさん
09/07/16 01:39:01
「APIを利用」とは何の事だよ

596:デフォルトの名無しさん
09/07/16 02:13:15
LoadLibraryとGetProcAddressをDllImportして
関数ポインタにMarshal.GetDelegateForFunctionPtr使ってデリゲート取得してAPI呼んでるとか?

597:デフォルトの名無しさん
09/07/16 02:27:35
>DllImportしてるなんて微塵も書いてないが
で、してるの?してないの?

598:デフォルトの名無しさん
09/07/16 02:43:36
APIを常人とは違う意味で使っているに10ゲイツポイント

599:デフォルトの名無しさん
09/07/16 03:35:54
APIと言っただけで、Win32APIと言った訳ではないしね

600:デフォルトの名無しさん
09/07/16 05:39:31
それがどうした

601:デフォルトの名無しさん
09/07/16 08:00:39
>>598
a πとか?

602:デフォルトの名無しさん
09/07/16 08:39:34
>>597
俺にきくな

603:デフォルトの名無しさん
09/07/16 11:09:05
>>600>>602
何で一々噛みついてんの?

604:デフォルトの名無しさん
09/07/16 18:04:11
APIはDLLだけだと思ってる人があらわれた!

605:デフォルトの名無しさん
09/07/16 18:12:03
あらわれなくていいよ

606:デフォルトの名無しさん
09/07/16 18:43:42
>>590は現れろよ

607:デフォルトの名無しさん
09/07/16 18:45:37
もう逃げたってば

608:デフォルトの名無しさん
09/07/16 19:30:34
WebAPIの類とか・・・
そんでもTextBox.Textがほにゃららの件は意味分からんけど

609:デフォルトの名無しさん
09/07/16 19:35:39
const char*の引数を持つAPIに
stringを渡したいけどどうすればいいかと
聞いてるだけとか

んで書き込んだ直後に解決してほったらかし

610:デフォルトの名無しさん
09/07/16 19:36:51
593が要らん突込みをしなければこんな伸びなかったな。

611:デフォルトの名無しさん
09/07/16 19:47:33
みんなこれくらいなら答えられそうだと思っててうずうずしてるんでしょ

612:デフォルトの名無しさん
09/07/16 22:54:46
C#ってフリーの開発環境あるんですか?

613:デフォルトの名無しさん
09/07/16 22:55:58
まずフリーの意味をだな

614:デフォルトの名無しさん
09/07/16 23:02:00
>>612
MONOというものがあるので使ってみたら?

615:デフォルトの名無しさん
09/07/16 23:21:31
フリーの開発環境・・・VisualStudioExpressEditionとSharpDevelopがあるが。

616:デフォルトの名無しさん
09/07/17 00:15:33
emacsでいいよ

617:デフォルトの名無しさん
09/07/17 00:17:44
へぼすぎて却下

618:デフォルトの名無しさん
09/07/17 00:52:15
emacsって、慣れてる人には良いんだろうけど、
とても俺には向いてない。

619:デフォルトの名無しさん
09/07/17 01:39:12
スクリプト言語ならともかくC#でemacsはかえって損だろw

>>603
どのあたりが噛まれてるんだ?
一方的におまいがプッツンしてるようにしかみえん



620:デフォルトの名無しさん
09/07/17 02:01:20
>>619
>どのあたりが噛まれてるんだ?
>一方的におまいがプッツンしてるようにしかみえん
↑こういうのが 噛みつく って言うんじゃね?
おまいもプッツンしてるようにしかみえん

621:デフォルトの名無しさん
09/07/17 02:49:05
いいからもう失せろよゴミ君

622:デフォルトの名無しさん
09/07/17 05:41:04
>>621
プッツンしてるの?

623:デフォルトの名無しさん
09/07/17 06:35:32
してないよチンカス君

624:デフォルトの名無しさん
09/07/17 06:51:44
「プッツン」って懐かしいなw

625:デフォルトの名無しさん
09/07/17 06:56:10
グリコが作ってるプリンだっけ

626:デフォルトの名無しさん
09/07/17 08:49:52
それプッチンや

627:デフォルトの名無しさん
09/07/17 09:03:57
>プッツン・ゴミ君・チンカス君
言葉の選び方が古臭いのは何でだろう。書いてる人の年齢が気になるw

628:デフォルトの名無しさん
09/07/17 09:35:04
IDありなら真っ赤な奴がいるな
単発のフリもしてそうだな

629:デフォルトの名無しさん
09/07/17 11:30:48
今、入力チェックの勉強中。
Validatingでやるのがいいようだけど問題もいろいろあるみたいで悲しい。
いまいちValidatingが発生する条件が分からん。
TextBox1にいてフィールド移動するとなぜかTextBox5のValidatingが発生したりする・・・
その時はTextBox5でエラー値入れてESCキャンセルでTextBox5のValidatingをスキップするようにしてTextBox1にフォーカス移動してる。
スキップはここ参考にした。URLリンク(www.atmarkit.co.jp)
で、TextBox1からフィールド移動するとなぜかTextBox5のValidatingが発生・・・
VS2003だけど古いから変なのかな?
マシン古いからVS2003でも遅いぜよ(Delphi2007はさくさく動いてるけど)

630:デフォルトの名無しさん
09/07/17 12:40:20
>>629
リソースファイルをエディタで書き換えると、コントロールとイベントハンドラの
関連付けがおかしくなるよ。
そういう変なことはやってないと言い切れるなら、あとは…

別のテキストボックスへ移る時、キーボード操作(Tabキーなど)とマウスの時とで
イベントの発生する順序が変わるってのがある。
URLリンク(msdn.microsoft.com)

631:デフォルトの名無しさん
09/07/17 15:13:10
XmlDocument doc = new XmlDocument();
doc.LoadXml("file.xhtml");

こんな感じで、DOCTYPE宣言のあるxhtmlを読み込んでみたんですが、
たかだか4kくらいのファイルでも1分はかかってしまいます。
こういう仕様なのでしょうか。


632:デフォルトの名無しさん
09/07/17 15:33:24
外部エンティティとか使ってない?

633:デフォルトの名無しさん
09/07/17 16:33:00
>>630
> リソースファイルをエディタで書き換えると、コントロールとイベントハンドラの
それは触ってない、っていうかC#始めたばっかりで
リソースファイルが何なのか分からなかったり。

> 別のテキストボックスへ移る時、キーボード操作(Tabキーなど)とマウスの時とで
> イベントの発生する順序が変わるってのがある。
その情報は見つけて問題ないようにはしたんだよねー

なんとなくこれと同じ感じなのかなって気が。
URLリンク(www.atmarkit.co.jp)
仕様なのか・・・ ウヒー

634:デフォルトの名無しさん
09/07/17 18:50:08
>>633
仕様じゃしょうがないよね。
イベントの発生順序はコントロールできないから、
グローバル変数に状態を覚えておいて
自前で制御ってのはよく使う手。

635:デフォルトの名無しさん
09/07/17 18:57:43
>>632
使ってないですー


636:デフォルトの名無しさん
09/07/17 19:07:54
>>635
DOCTYPE宣言でhttp://のDTD読み込んでないの?

637:デフォルトの名無しさん
09/07/17 23:08:32
[DllImport("ws2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
static extern Int32 recv(
Int32 s,
IntPtr buf,
Int32 Len,
Int32 flags);

こんな風にしてDLLを直接呼び出すんだけどwsock32.dllの方も同時に使いたい場合はどう書けばいいの?
例えばwinsock32の方はrecv1でws2_32の方はrecv2で呼び出せるようにしたい

直接呼び出すことに意味のあるプログラムなんで、他に便利なクラスがあるだろとか
片方だけ使えとかそういうのは無しの方向でお願いします

638:デフォルトの名無しさん
09/07/17 23:20:27
[DllImport("wsock32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
static extern Int32 recv1(
Int32 s,
IntPtr buf,
Int32 Len,
Int32 flags);

[DllImport("ws2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
static extern Int32 recv2(
Int32 s,
IntPtr buf,
Int32 Len,
Int32 flags);

639:デフォルトの名無しさん
09/07/17 23:22:03

[DllImport("wsock32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall, EntryPoint="recv")]
static extern Int32 recv1(
Int32 s,
IntPtr buf,
Int32 Len,
Int32 flags);

[DllImport("ws2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall, EntryPoint="recv")]
static extern Int32 recv2(
Int32 s,
IntPtr buf,
Int32 Len,
Int32 flags);

640:637
09/07/17 23:22:37
自己解決した

641:デフォルトの名無しさん
09/07/17 23:23:20
>>639
その通りでした。どもども

642:デフォルトの名無しさん
09/07/17 23:28:01
クラス分けるとかって手もあるけどな

643:デフォルトの名無しさん
09/07/18 00:31:37
AutoElipsis = trueの時にテキストの省略された部分が
...ではなく…になるのは日本固有の領土ですか?

644:デフォルトの名無しさん
09/07/18 00:40:12
>>643
フォントの問題では?
欧文フォントだと「…」のグリフが、 ... のように下のほうに点が配置されているのはよくあるよ。
実際、MS Sans Serif、TahomaやSegoe UIとかの歴代の欧米のUIフォントも軒並みそうなっている。

645:デフォルトの名無しさん
09/07/18 00:50:21
とりあえず「日本固有の領土」と関係ないのは確かだw

646:デフォルトの名無しさん
09/07/18 01:32:11
MS-IMEの変換候補でも下の方に小さい点が並んだやつが出てくる
まぎらわしいからやめてほしいんだが

647:デフォルトの名無しさん
09/07/18 02:35:20
>>481
簡単にいってよー
プロばかりじゃないんだよー

648:デフォルトの名無しさん
09/07/18 02:56:53
>>647
JITに任せておけば勝手に上手い事やってくれる。 これだけ頭に入れときゃおk

649:デフォルトの名無しさん
09/07/18 08:09:13
>>643
同じ約物であっても言語によって組み方が変わるのはよくあること。

650:デフォルトの名無しさん
09/07/18 19:25:57
Winsockで作ったSOCKETをSocketクラスに割り当てることって出来ますか?

651:デフォルトの名無しさん
09/07/18 19:34:24
>>650
「割り当てる」ってなにをすること?

652:デフォルトの名無しさん
09/07/18 20:16:55
「SafeFileHandleを引数に取るFileStreamコンストラクタのようなもの」のソケット版が欲しいということだろう。

653:デフォルトの名無しさん
09/07/19 20:46:16
List<string> hogeA の中身

c:\temp\01.dat
c:\temp\02.dat
c:\temp\03.dat
c:\temp\04.dat
c:\temp\05.dat


List<string> hogeB の中身

01.dat
03.dat
05.dat


hogeAのうち、hogeBに含まれない
c:\temp\02.dat
c:\temp\05.dat
を残し、これをあらためてhogeAとしたいです。

これを実現するにはどのようにプログラムを組めばよろしいでしょうか?

654:デフォルトの名無しさん
09/07/19 20:49:53
1. hogeA の要素を列挙する
2. 各要素が hogeB に含まれているか判断する
3. 含まれていなければ、 hogeC に追加
4. これを繰り返す
5. hogeC を hogeA に設定

655:デフォルトの名無しさん
09/07/19 20:50:28
hogeB に含まれてたら、hogeA から削除、って方がわかりやすいね。

656:デフォルトの名無しさん
09/07/19 20:57:53
LINQ に Except ってのがあるよ。
URLリンク(ufcpp.net)

657:デフォルトの名無しさん
09/07/19 20:59:01
2重のfor文を回す必要があるというわけでしょうか?

658:デフォルトの名無しさん
09/07/19 21:01:20
>>657
突き詰めればその通り。
List<T>.ExistsとかEnumerable.Exceptで見た目上のループは減らせるけどな。

659:デフォルトの名無しさん
09/07/19 21:03:31
この辺の繰り返し処理はプログラミングの基本の基本。便利なライブラリの機能に
お任せしちゃうのではなく、一度は自分で実装してみることをお勧めするよ。

660:デフォルトの名無しさん
09/07/19 21:24:42
そして一度実装したあとは、ライブラリの機能のほうを使うようにすべき、だね。

661:デフォルトの名無しさん
09/07/19 22:47:22
バーで繋いで正規表現にする方法もあるな。あまりお勧めは出来ないが。



662:653
09/07/19 23:08:25
removeAllメソッドを使って除去しようと試みました。

for (int i = 0; i < hogeB.Count; i++){
 hogeA.removeAll(
  delegate(string s)

 );
}

663:653
09/07/19 23:10:26
失礼、途中で投稿してしまいましたorz・・・

removeAllメソッドを使って除去しようと試みました。

for (int i = 0; i < hogeB.Count; i++){
 hogeA.removeAll(
  delegate(string s)
   {
    s == @"c:\temp\" + hogeB[i];
   }
 );
}

ただこれだとコンパイル時にエラーが発生してしまいました。
どこか書き方に間違いでもあるでしょうか?

664:デフォルトの名無しさん
09/07/19 23:16:01
エラー読めよ

665:653
09/07/19 23:20:54
最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。
匿名メソッド' から 'System.Predicate<string>' に変換できません。
割り当て、呼び出し、インクリメント、デクリメント、および新しいオブジェクトの式のみがステートメントとして使用できます。

表示されているエラーはこの3つでした

666:デフォルトの名無しさん
09/07/19 23:22:06
匿名メソッドの戻り値が明示されていない
returnをしてないし

667:653
09/07/19 23:38:18
>>666
そういうことでしたか( ̄□ ̄;)!!

for (int i = 0; i < hogeB.Count; i++){
 hogeA.removeAll(
  delegate(string s)
   {
    if ( s == @"c:\temp\" + hogeB[i] )
     return true;
    else
     return false;
   }
 );
}

で、ひとまずはビルドは通ったようです。
これで様子を見てみます。
ありがとうございました。

ちなみにこれよりもっとスマートな記述方法はあると思いますか?
ベースは C#2.0 + .Net Framework2.0 ということで。

668:デフォルトの名無しさん
09/07/19 23:39:51
.NET 2.0はともかく、C#2.0はもう捨てようよ。

669:デフォルトの名無しさん
09/07/19 23:40:28
return (s == @"c:\temp\" + hogeB[i]);

670:デフォルトの名無しさん
09/07/19 23:41:36
3.0
removeAll( (s)=>(s == @"c:\temp\" + hogeB[i]) );

671:653
09/07/19 23:48:52
>>669
あ、そんな略記があったのね(;^ω^)

>>668
>>670
それが持ってるのがVS2005なもんで(´・ω・`)・・・

672:デフォルトの名無しさん
09/07/19 23:49:55
略記って……
おまえが勝手に複雑に書いてるだけだろ……

673:デフォルトの名無しさん
09/07/19 23:50:59
低品質なスレですね

674:デフォルトの名無しさん
09/07/20 01:37:43
>>671
2005 でも LINQ 使えるようにできるだろ

675:デフォルトの名無しさん
09/07/20 01:39:09
すまん LINQ じゃなくてラムダ式か

676:デフォルトの名無しさん
09/07/20 01:43:14
>>674
2008で.NET 2.0対象のときでもラムダ式を含むC# 3.0の構文が使えるということとごっちゃにしていない?

677:デフォルトの名無しさん
09/07/20 02:12:31
>>671
Expressでいいからとっとと2008にすべき

678:653
09/07/20 02:12:39
>>674
2005じゃλは使えない気が(;・∀・)・・・

679:デフォルトの名無しさん
09/07/20 02:18:56
hogeBのループはforじゃなくてforeach使うべきだね

680:デフォルトの名無しさん
09/07/20 02:27:11
JITなんだジットってもー
地頭か?何だ?簡単に頼むよ

681:デフォルトの名無しさん
09/07/20 02:47:26

λ......        ザッザッザッ… λ......       λ......λ......         λ......       λ......
     λ......            λ......λ......         λ......       λ......
樹     λ......      λ......            λ......λ......         λ......       λ......
海  λ......                  λ......λ......         λ......       λ......
←       λ......          λ......λ......         λ......       λ......
                λ......λ......         λ......       λ......
    λ......       λ......        λ......         λ......       λ......  λ......トボトボ
                              ザッザッザッザ…

682:デフォルトの名無しさん
09/07/20 02:49:36
>>679
どうして?

>>681
ちょっwwwww

683:デフォルトの名無しさん
09/07/20 09:25:26
C#2,0捨てようとかアホか。
ラムダ式なんて無理に使う必要ねーよ。

684:デフォルトの名無しさん
09/07/20 10:15:07
ラムダ式をありがたがる心理って簡潔至上主義だと思ってるが、どうなんだろ。
簡潔さ以外にメリットある?
そして簡潔さによる保守性低減のトレードオフって収支は本当にプラス?

685:デフォルトの名無しさん
09/07/20 10:21:06
>>684
2chスレのラムダ支持層レベルだとトレードオフにはならないね。
無駄に使いたがる印象しかない。

686:デフォルトの名無しさん
09/07/20 11:39:29
>>684
遠く離れたところに1行関数を作って呼ぶよりも、ラムダにしたほうが簡潔で保守性は良くなるね。

それ以上に凝るのは趣味の世界だね〜。

687:デフォルトの名無しさん
09/07/20 11:40:53
>>684
その場に処理書かないとかえって見づらい場合ない?

1・2行だけDispatcher.Invokeしたいときとか、
変換テーブル作りたいときとか。

要するに↓みたいな。

Dispatcher.BeginInvoke(() => { OutputText.Text = hoge; });

var table = new Dictionary<string, Func<int, int>> {
 { "TypeA", x => x * x },
 { "TypeB", x => Math.Abs(x) },
...

688:デフォルトの名無しさん
09/07/20 11:43:01
LINQ の仕組みにはラムダ必須だし、

あと、ローカル変数をキャプチャしたい場合、
ラムダ(というか匿名デリゲート)がなかったら
わざわざinnerクラス1個書かなきゃいけなくなるしねぇ。


689:デフォルトの名無しさん
09/07/20 11:48:18
>>686
デリゲート使えば遠くに関数作る必要はない。

690:デフォルトの名無しさん
09/07/20 12:07:54
匿名メソッドで済むって話でそ。
まあ最初からラムダが使えれば匿名メソッドはあんまいらんけど。
濫用するような話とはまた別ね。


691:デフォルトの名無しさん
09/07/20 12:18:38
あー、() => {} 構文じゃなくて delegate(){} 構文使うのじゃダメかって話か。

あれもでも、C# 開発者曰く
「ラムダを先に導入してたらdelegate構文なんて用意しなかった」
って言ってるしなぁ。


692:デフォルトの名無しさん
09/07/20 12:29:58
{}で囲めばラムダでも複数のステートメントもreturnも書けるから実際匿名メソッドは要らない
匿名メソッドの唯一のメリットはパラメータを省略できることだけど、
それだけのために表記のゆらぎを許す価値があるかどうか

693:デフォルトの名無しさん
09/07/20 12:37:41
そのうちMSがガイドラインで何か言い出すんじゃないかと思ってる

694:デフォルトの名無しさん
09/07/20 12:44:38
λ式のトレードオフを語っている割に、デメリットが出ていない気がw

695:デフォルトの名無しさん
09/07/20 12:47:32
delegateより視認しにくいくらいじゃねえの

696:デフォルトの名無しさん
09/07/20 12:56:09
言語の方向性として、関数型を取り入れていくよと明言されてるわけで
わかりにくいとかいうのは無意味だな

697:デフォルトの名無しさん
09/07/20 13:12:06
構文の親和性の低さによる視認性の悪さもあるけど
引数の型を省略できることの分かりづらさってのはどうなの。

698:デフォルトの名無しさん
09/07/20 13:12:59
いずれにせよ、初心者用スレで延々と語る話じゃない。

699:デフォルトの名無しさん
09/07/20 13:31:53
キャプチャ周りの罠は初心者も気をつけるべきだろ

700:デフォルトの名無しさん
09/07/20 14:07:20
保守性下がるので業務では使えない。

701:デフォルトの名無しさん
09/07/20 14:29:34
保守性下がるのでC#は使えない。

702:デフォルトの名無しさん
09/07/20 14:50:59
ラムダ厨はテスト端折るので一緒に仕事したくない。

703:デフォルトの名無しさん
09/07/20 15:00:41

462 名前:デフォルトの名無しさん[sage] 投稿日:2009/07/06(月) 20:59:27
LINQ書く奴ってなんでテスト端折る奴ばかりなんだ?

469 名前:デフォルトの名無しさん[sage] 投稿日:2009/07/06(月) 21:58:25
テストまで1/3にしないでください。

702 名前:デフォルトの名無しさん[sage] 投稿日:2009/07/20(月) 14:50:59
ラムダ厨はテスト端折るので一緒に仕事したくない。






余程な職場環境におかれておられる様で
無様で惨めだな

704:デフォルトの名無しさん
09/07/20 15:07:01
職場とか業務でどうとか言われてもねえ…。
ここ初心者スレだし、「そうですか。おつかれさまです」としか言いようがないな。

それともあれか?報われないのを褒めて欲しいのか?
そういうのはマ板でやってくれよ。

705:デフォルトの名無しさん
09/07/20 15:08:26
3.0仕事で導入してるのってどんぐらいなんだろうな
今はまだ2.0のほうが意思合わせ楽そうだけど

706:デフォルトの名無しさん
09/07/20 15:13:06
>>704
どこの初心者スレも似たようなもんだけどな
javaスレとか

明らかに底辺ドカタのストレス発散場になってる
そんなことをしていてもお前の暮らしは向上しないのにな

707:デフォルトの名無しさん
09/07/20 15:19:57
独立すりゃいいのに

708:デフォルトの名無しさん
09/07/20 15:22:04
ラムダスレとか建てても、結局初心者スレを荒らしに来るから意味なし。

709:デフォルトの名無しさん
09/07/20 15:28:41
弱い者達が夕暮れさらに弱い者をたたく構図ですね、わかります。

710:デフォルトの名無しさん
09/07/20 15:41:38
c#はまだおわらんよ!でもVCのほうも同じぐらい力入れてくれるとありがたいです;;

711:デフォルトの名無しさん
09/07/20 15:43:42
C#でWindowsコンポーネントを使わないUIってどうやったら作れますか?
情報が載ってる本かサイトを教えてもらえると嬉しいです。
例えば、Mac風デザインのような感じです。

712:デフォルトの名無しさん
09/07/20 15:49:45
>>711
GUI ツールキットを使うことになるんだろうけど、あんまりないなぁ。
Qt は使えるんだっけ。

713:デフォルトの名無しさん
09/07/20 15:51:32
WPFだろ
デザインは自由自在

714:デフォルトの名無しさん
09/07/20 16:02:31
WPFってガワ部分は変えられないんですか?

715:デフォルトの名無しさん
09/07/20 16:05:14
ガワ?

716:デフォルトの名無しさん
09/07/20 16:13:32
最大化や閉じるボタンなどがある枠です。
その内側では何でもできそうな感じで、かなり素晴らしいのですが。

717:デフォルトの名無しさん
09/07/20 16:13:43
ウィンドウの枠を非表示にしてそれっぽいのを自分で描く

718:デフォルトの名無しさん
09/07/20 16:16:47
>>717
なるほど。WPFをMSサイトで勉強してきます。
参考になりました。ありがとう。

719:デフォルトの名無しさん
09/07/20 17:10:08
入門書でC#の基礎文法を一通り勉強しました。
しかし、今までスクリプター(Perl, JavaScript, Ruby)で、
GUIアプリケーションの制作経験は皆無であるため、
Visulal Studio でGUIアプリケーションを作る方法がよく理解できません。
何となくならいじれるのですが、体系的に勉強するにはどうするのがオススメでしょうか?

720:デフォルトの名無しさん
09/07/20 17:14:19
>>719
畳の上の水泳より、下手でもとにかく水の中で泳ぐほうが学習効率高いんじゃない?
GUIは特にそうだと思うけど。
(必要なら)体系的学習は後追いでもできるし。

721:デフォルトの名無しさん
09/07/20 17:22:27
>>720
入門書は全てcsc.exeを使ってコンソールで作業していたので、
まずは、チュートリアル的なサンプルアプリケーションを何個か作りたいんですよね。

広く浅くでいいので、VSおよびGUIアプリ制作を把握したいのですが、
MS公式の解説書は何だかMSDNチュートリアル同様で、入門の入門という感じだし、
他の入門書は、VSについてほとんど書かれていないしで困っています。

訳分からなくてもとりあえず慣れるがベストなのかなぁ? やはり。


722:デフォルトの名無しさん
09/07/20 17:31:14
フォームに手当たり次第にコントロール貼りまくって適当に連動させてごらんよ
方向性は決めなくていいから

723:デフォルトの名無しさん
09/07/20 17:36:17
どのコントロールでどんなことができるか、を一通り確認するくらいかなぁ。

具体的な実装は、システム要件に応じて考えるし。

724:デフォルトの名無しさん
09/07/20 18:04:40
>>721
C#でcsc.exeを使わせる入門書って、なんて悪書?

725:デフォルトの名無しさん
09/07/20 18:11:30
MSの公式解説書だろ
C#できると言ってcsc.exe使えないなんて話もあるまい

726:デフォルトの名無しさん
09/07/20 18:23:13
>>724
独習C#です……。プログラミングC#は、最初からは敷居高いかなと思って。

727:デフォルトの名無しさん
09/07/20 20:06:49
cscのオプションなんて覚えてもいないぜ。


728:デフォルトの名無しさん
09/07/20 21:31:56
>>726
あーあ、かっちゃったかw

729:デフォルトの名無しさん
09/07/20 21:33:18
あんなもん立ち読みでいいのに

730:デフォルトの名無しさん
09/07/20 23:47:04
泳げないやつは沈めばいい

731:デフォルトの名無しさん
09/07/20 23:53:31
プログラミングC#が敷居高いって絶対読んでなさそう
GUIオンリーだった俺はRonRやってるがスクリプトわけわかめw

732:デフォルトの名無しさん
09/07/21 01:34:19
delegateとかもうちょっと綺麗に実装出来なかったのかね

733:デフォルトの名無しさん
09/07/21 02:06:53
例えばどういう風に?

734:デフォルトの名無しさん
09/07/21 02:30:50
例えばキーワードを省略してdelにするとか

735:デフォルトの名無しさん
09/07/21 02:47:47
delだとdeleteの略みたいになるから却下

736:デフォルトの名無しさん
09/07/21 03:10:41
もうちょっと綺麗に実装 → 省略してdelに

wwwwwwwwwwwwwww

737:デフォルトの名無しさん
09/07/21 03:38:19
俺の知ってる英単語を使ってくれ
デレゲートなんて意味がわからんわ

738:デフォルトの名無しさん
09/07/21 03:54:37
普通にクラスポインタみたいなのを残せばいいのに
なんでいちいち全部の関数のdelegateを定義して呼ばないといけないんだ

739:デフォルトの名無しさん
09/07/21 04:28:36
>>735
じゃあdeleで

740:デフォルトの名無しさん
09/07/21 05:28:15
tsun-dele

741:デフォルトの名無しさん
09/07/21 08:26:30
tsun-delete

742:デフォルトの名無しさん
09/07/21 08:35:08
>>738
FuncとかActionがあるけど

743:デフォルトの名無しさん
09/07/21 09:49:41
>>734
キーワードの省略は最悪。
Unix 系のライブラリとか、ときどき見れたもんじゃないのがある。

C# は省略形のキーワード1つもないでしょ。

>>738
型安全性のため。

744:デフォルトの名無しさん
09/07/21 14:15:48
タイプセーフはデリゲートの目的であって理由じゃない

そうなると別にどういう構文でもタイプセーフなら良いことになるでしょ
実際にそうなってるしね

745:デフォルトの名無しさん
09/07/21 15:28:29
複数のファイルを連結する方法を教えてください。
下記のようなことって、C#だとどう書くんですか?
ひとつひとつFile.ReadしてFile.Writeしないとだめですか?
copy file01.txt+file02.txt+file03.txt+file04.txt newfile.txt


746:デフォルトの名無しさん
09/07/21 15:45:26
C#で製品を作ってる会社はexeを暗号化してるんでしょうか?
ソースコード丸見え・・・

747:デフォルトの名無しさん
09/07/21 15:47:34
>>745
File.ReadAllText()で読んでFile.AppendAllText()で追加してけば楽なんじゃない
使ったことないけどw

748:デフォルトの名無しさん
09/07/21 15:48:12
今時はライセンスで縛るから丸見えでもどうでもいいのです
難読化くらいはしてるかもね

でも初心者には関係ないよ
お前のコードなんてわざわざ見る気にもならないからね

749:デフォルトの名無しさん
09/07/21 15:53:53
>>747
やっぱりそれしかないんだ…。
配列に配列を追加するにはどうしたらよいですか?
copy file01.txt+file02.txt+file03.txt+file04.txt newfile.txt
string[] keywords = File.ReadAllLines("file01.txt");
keywords = keywords + File.ReadAllLines("file02.txt");
keywords = keywords + File.ReadAllLines("file03.txt");
keywords = keywords + File.ReadAllLines("file04.txt");
とかで追加できるんですか?


750:デフォルトの名無しさん
09/07/21 15:55:06
どの言語でも初心者が一番初めに気にする所だよな。
「ゲームは作れますか?」と「中身の暗号化できますか?」は。

少なくともそんなことを聞かなきゃ分からない内は全く関係のない話だ。

751:デフォルトの名無しさん
09/07/21 15:56:33
>>749
配列ってさあ

string[] strArray = new string[]{ "aaaaa" , "bbbbb" , "ccccc" }

こう書けるのは分かる?


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

5390日前に更新/162 KB
担当:undef