C#, C♯, C#相談室 Part58at TECH
C#, C♯, C#相談室 Part58 - 暇つぶし2ch700:デフォルトの名無しさん
10/05/02 20:21:29
俺は状態を管理するクラスを作るかな。

701:デフォルトの名無しさん
10/05/02 20:24:30
var b = a != 1;
b &= a != 2;
b &= a != 3;
if (b)
{
}
だろ

702:デフォルトの名無しさん
10/05/02 20:24:47
ただ条件文自体は普通に書くのが一番分かり易いし取り回しもいいと思う。

703:デフォルトの名無しさん
10/05/02 20:25:45
>>702
まあ状況によりけりだが素直に条件式書く方がスマートだったりするよな

704:デフォルトの名無しさん
10/05/02 20:31:55
拡張メソッドでNotIn作れば良いよ

705:デフォルトの名無しさん
10/05/02 20:34:00
素直に条件式書いた方がコンパイラ的にも最適化しやすいと思うし。

706:デフォルトの名無しさん
10/05/02 20:40:56
業務アプリならifのパフォーマンスなんかどうでも良くて人間が見やすいことが優先されることが圧倒的に多いけどな

707:デフォルトの名無しさん
10/05/02 20:50:31
業務アプリなら他のプログラマが見ることもあるだろうから普通に書いた方がいい。
個人なら好きにすればいいよ。

708:デフォルトの名無しさん
10/05/02 20:57:54
>>695
つまらないこだわりはよせ
月にロケットを飛ばすプログラムが一行で書けたところで
何の意味もない

709:デフォルトの名無しさん
10/05/02 21:07:20
あれ?2010からはヘルプはドキュメントブラウザじゃなくてウェブブラウザになったの?
しかもオンラインのみ?
ローカルに設定したんだけど・・・

710:デフォルトの名無しさん
10/05/02 21:13:25
あ、失礼w
ローカルアドレス参照になってましたorz

711:デフォルトの名無しさん
10/05/02 21:18:03
>>708
意味あるだろ

712:デフォルトの名無しさん
10/05/02 21:32:35
>>711
どこに?

713:デフォルトの名無しさん
10/05/02 21:36:39
俺ルールだと
if ( a != 1
&& a != 2
&& a != 3
) {
}
条件の追加削除が楽だし、&&なのか||なのかが前に並んで、俺が分かりやすい。
後ろに置くとチェック変数の変数名長でガタついて見間違えやすいから。
横並びなんて誰得。複合条件ならカッコつけてインデント。複雑なら変数方式。
これを部下に押し付けてる。

途中で||とか変な条件入ったら693なんてどーすんの?

714:デフォルトの名無しさん
10/05/02 21:38:20
大昔のパソコン雑誌(確かASCII)にはその手のコンテストがあったな。
一行プログラムコンテストだっけ?

オッサンの独り言でした

715:デフォルトの名無しさん
10/05/02 21:40:59
>>713
これとか、カンマを文頭に書くのは好きになれないなぁ。
確かに見やすい&わかりやすいけどね。

716:デフォルトの名無しさん
10/05/02 21:52:31
>>713
途中で||が入ったとしても、&&で括れるグループ毎にまとめるとかはできるでしょう。
それに様々な条件が入り交ざったモノってそこまで条件式自体は長くないのが多いし、仮に長かった場合には関数なりなんなりでわかりやすく分離すればいいかと。

717:デフォルトの名無しさん
10/05/02 21:57:35
>>716
分解したら今度は読み解くのにあっちこっち見に行かなければならない

718:デフォルトの名無しさん
10/05/02 22:02:28
神経質な人はやりたくなるのは分かるけど、
手作業でコードの整形とか時間の無駄なんだよな。

719:デフォルトの名無しさん
10/05/02 22:15:44
そんなことよりswitch文で必ずbreak入れなければならない仕様は改悪だと思うんだ

720:デフォルトの名無しさん
10/05/02 22:18:14
caseの中身書かなければ並べられるので不便だと感じたことはないな

721:デフォルトの名無しさん
10/05/02 22:28:38
>>719
少数意見だろうな。

722:デフォルトの名無しさん
10/05/02 22:30:54
URLリンク(1.bp.blogspot.com)

723:デフォルトの名無しさん
10/05/02 22:33:40
フォールスルーの読みづらさは凶悪
フォールスルーが言語でもめったに使われてないからたまに使われてるとほぼ確実に見落とす

724:723
10/05/02 22:35:15
フォールスルーが許されてる言語でも の間違い

725:デフォルトの名無しさん
10/05/02 22:38:46
>>722
交通事故かな

726:デフォルトの名無しさん
10/05/03 00:51:47
まさかプログラム板でグロ画像見るとは思わなかった。

727:デフォルトの名無しさん
10/05/03 01:27:07
病んでるんだろ
ほっとけ

728:デフォルトの名無しさん
10/05/03 01:33:15
>>726
まあ休みの深夜だしw

729:デフォルトの名無しさん
10/05/03 03:27:15
長期休暇は変な人があちこちに出没するなぁw

730:デフォルトの名無しさん
10/05/03 09:47:15
>>723
フォールスルーするならコメント書いとけ

731:デフォルトの名無しさん
10/05/03 13:15:11
これもヘンな人?

URLリンク(ameblo.jp)

732:デフォルトの名無しさん
10/05/03 13:24:51
削除ガイドライン違反

8. URL表記・リンク
宣伝・罠・実行リンク
・明らかに宣伝を目的としたリンク・クリックや訪問で課金が発生するもの等は、宣伝掲示板以外では削除します。

733:デフォルトの名無しさん
10/05/03 14:23:53
コピペ君も同類だけどな、まで読んだ。

734:デフォルトの名無しさん
10/05/04 00:25:02
このプログラムなのですが、どうしてもエラーが消えません。
どこがおかしいのでしょうか?

C:\Documents and Settings\tutomu\My Documents\Visual Studio 2008\Projects\gomokuproguram\sironoisi.cs

735:デフォルトの名無しさん
10/05/04 00:30:23
>>734
知りません。
答えようがありません。

736:デフォルトの名無しさん
10/05/04 00:31:21
キチガイの相手すんな

737:デフォルトの名無しさん
10/05/04 00:32:48
知らんがな。つとむくん。

738:デフォルトの名無しさん
10/05/04 00:58:19
うお、うpろだにあげるの忘れてた

739:デフォルトの名無しさん
10/05/04 01:01:27
つとむくん
忘れてたってレベルじゃねぇぞ!

ところで
gomokuproguram

GomokuProgram
ではないか?

740:デフォルトの名無しさん
10/05/04 01:04:52
もうやめて!つとむくんのライフゼロよ!

741:デフォルトの名無しさん
10/05/04 01:07:32
つとむくんは盲点だったわww
確かにwwww

742:デフォルトの名無しさん
10/05/04 01:10:06
山口さんちのツトム君
このごろ少し変よ どうしたのかナ

743:デフォルトの名無しさん
10/05/04 01:12:46
何歳だよお前

744:デフォルトの名無しさん
10/05/04 01:20:32
うpろだにつながらなくなってしまった
なんで名前知ってるの・・・?

いちようウイルスソフトは入れている
2chになんかカキコするんじゃなかった

745:デフォルトの名無しさん
10/05/04 01:24:02
誰だよお前

746:デフォルトの名無しさん
10/05/04 01:26:50
例え私が滅びようが第二、第三のツトムが五目プログラムを作るであろう・・・

グフッ

747:デフォルトの名無しさん
10/05/04 01:34:27
>>744
ウイルスソフトなんて入れてるから駄目なんだと思います。
>>746
ワロタww

748:デフォルトの名無しさん
10/05/04 01:39:30
ツトム君の人気に嫉妬した

749:デフォルトの名無しさん
10/05/04 02:25:23
プログラム一通り見たけど、設計がなってない

750:デフォルトの名無しさん
10/05/04 02:44:44
シロノイシ

なんか小説でも書けそうなタイトル

751:デフォルトの名無しさん
10/05/04 09:32:12
つとむ君のスレになりそうだな
【五目】C#相談室【白の石】

752:デフォルトの名無しさん
10/05/04 09:50:42
こうだろ
【五目】C#相談室(ツトム君専用)【白の石】

753:デフォルトの名無しさん
10/05/04 10:07:25
OSに頼らずにジェスチャーを実装することって可能かなあ・・・
マウスだとボタンとポインター移動部分が独立してるけど
タッチパネルとなるとタッチした瞬間にカーソル移動+
MouseDownとかイベント発生しそうだし・・・

754:デフォルトの名無しさん
10/05/04 10:25:11
>>753
戦車ゲームが難しいな
タッチしたら旋回して即発射
つねに振り向きざま即発射

755:デフォルトの名無しさん
10/05/04 11:09:10
白の意思・・・か・・・
ついにはじまるのか・・・

756:デフォルトの名無しさん
10/05/04 11:46:18
燃え尽きた・・・真っ白に・・・

757:デフォルトの名無しさん
10/05/04 12:38:42
原因がわかりました
iとjをまちがいていました
変数名をtateとyokoにすることによって解決。
forの変数はiから順に使うとならったけど
名前を使ったほうが分かりやすいと思う

あと名前をカキコするのはやめてください。
どこで知ったのかわかりませんが
ちゃんとうpろだに成功してたのかな?



758:デフォルトの名無しさん
10/05/04 12:41:08
"つとむ" はローマ字だと"tsutomu"だよ。
"tutomu"じゃないよ。

759:デフォルトの名無しさん
10/05/04 12:41:58
>>757
ネタなのかマジなのか
>>734で自分で晒してるよ

IDEのデフォルトの保存場所にするとマイドキュメントになるので
下手にプロジェクトとか晒すとユーザーネームまるばれなんだよw

760:デフォルトの名無しさん
10/05/04 12:42:48
>>758
僕はtutomuって書くことが多いですね
最近はローマ字で名前書いたことないですけど

761:デフォルトの名無しさん
10/05/04 12:44:00
>>759
はぁー!
フォルダに名前使ったおぼえないのに
C#が勝手に作った!?_

762:デフォルトの名無しさん
10/05/04 12:45:34
>>761

お前面白いなwww

763:デフォルトの名無しさん
10/05/04 12:45:42
>>761
プロジェクト保存するときに保存先を聞いてくるので
見逃してたら自己責任だろうw

764:デフォルトの名無しさん
10/05/04 12:47:14
>>758
訓令式というものがあってな

765:デフォルトの名無しさん
10/05/04 12:55:48
だめだフォルダの名前が変えれない
名前フォルダの中にデスクトップがあるし訳が分からない
デスクトップの中にエクスプローラーがあってその中にデスクトップがある。
でも普通にファイル開けた


766:デフォルトの名無しさん
10/05/04 12:59:30
もうやめてあげて!ツトムくんが人間の形を留めていられなくなっちゃう!

767:デフォルトの名無しさん
10/05/04 13:07:42
鼠人間ツトム

768:デフォルトの名無しさん
10/05/04 13:12:11
そろそろ板違いだから。
これ以上やりたければ、パソコン初心者板でも行こうな。つとむくん。

769:デフォルトの名無しさん
10/05/04 13:14:15
>>768
既に聞きに行っているみたいだぞwww
スレリンク(win板:828番)

770:デフォルトの名無しさん
10/05/04 13:26:27
ネタじゃなくてマジだったのかw

771:デフォルトの名無しさん
10/05/04 14:08:40
板を超えた釣りだろ

772:デフォルトの名無しさん
10/05/04 16:53:13
>>769
予想の斜め上www

773:デフォルトの名無しさん
10/05/04 17:02:31
プログラム作る前にやることあるだろ

774:デフォルトの名無しさん
10/05/04 17:56:23
「白の石」って響きがすごくかっこよいんですけど。

775:デフォルトの名無しさん
10/05/04 20:02:39
でも、黒の石と別にする合理的な理由が思いつかない

776:デフォルトの名無しさん
10/05/05 00:20:35
黒の意思か・・・
・・・風が吹いてきたな・・・

777:デフォルトの名無しさん
10/05/05 03:14:02
本人だけじゃなくてパソコンの先生にも問題があると思う
無条件に変数をiから使うとか教えてるっぽいし

778:デフォルトの名無しさん
10/05/05 08:52:18
パソコンの先生wwwww

779:デフォルトの名無しさん
10/05/05 09:26:18
VS2008を使ってます。
httpでHEADリクエストを送るにはどうすればいいでしょうか。

WebRequest, WebResponseを使うとGETで全部取ってきてしまうので・・

780:デフォルトの名無しさん
10/05/05 09:33:54
>>779
Method プロパティに "HEAD" 入れりゃいいだけの話。
"POST" したことあるならやり方わかるよね?

781:デフォルトの名無しさん
10/05/05 09:54:38
>>780
Method指定でできましたー
どうもありがとうございます

782:デフォルトの名無しさん
10/05/05 15:10:58
VS2005なんですが、デザイナで自動生成されるコードで、
プロジェクト規定の名前空間を含めないようにすることはできますか?

規定の名前空間が'hoge'で、コンパイル時に
型名'hoge1'は型'hoge.hoge'に存在しませんとなるのを避けたいのですが・・・

783:デフォルトの名無しさん
10/05/05 15:29:35
テンプレートをいじればいけるかも。

784:デフォルトの名無しさん
10/05/05 18:29:47
C#をやってみようと思いますが、
Visual C# 2010 Expressというのは製品版と比べて
どんな制限があるんでしょうか?

785:デフォルトの名無しさん
10/05/05 18:43:22
>>784
普通にやる分には、全く制限が無いと思ってもいい。

786:デフォルトの名無しさん
10/05/05 18:52:04
>>785
えーっすごいですね!
早速参考書を買いに行ってきます。

787:デフォルトの名無しさん
10/05/05 18:53:26
そういやC#部分だけ見たらほとんど制限ないな

788:デフォルトの名無しさん
10/05/05 18:54:40
ところで、どこかに比較表とかありますか?

789:デフォルトの名無しさん
10/05/05 18:58:45
2010の比較表はまだ無いようだ。
参考書はとりあえずやめとけ。ネットで調べたらいくらでも出てくる。

790:デフォルトの名無しさん
10/05/05 18:59:40
MSのサイトにあるだろ。

791:デフォルトの名無しさん
10/05/05 19:07:52
>>789
勉強時間が移動中か寝る直前ですし、
本のほうが集中して読めるので。。

>>790
URLリンク(www.microsoft.com)
このページの右の「Compare Express Products」ですか?
読んでもよくわかりません…(英語がわからないのではなく)


792:デフォルトの名無しさん
10/05/05 19:08:56
出来ること
URLリンク(www.microsoft.com)

これは広告だから制限は書いていない。
重要な制限としてはテスト周りが制限されている。
・ 単体テスト機能が無いので、外部ツールの NUnit を使う必要がある。
・ アドインが使えないので、TestDriven.Net を使うには工夫が必要がある。
・ C++ とか C# とか言語別製品になっているため、言語の混在したソリューションが作れない。
→ C++で作ったDLLを参照して使うC#のプロジェクトのデバッグでC++のソースは見えない。
えーと、間違いとか校正よろしく。

793:デフォルトの名無しさん
10/05/05 19:18:27
> 1. 無償
> Visual Studio 2008 Express Edition は無償で提供しています。さらに作ったアプリケーションは商用利用が可能です。

これすごいですね

794:デフォルトの名無しさん
10/05/05 19:21:14
>>789
オヌヌメのサイトある?

795:デフォルトの名無しさん
10/05/05 19:21:40
初心者スレ行けば?

796:デフォルトの名無しさん
10/05/05 19:25:04
ちょいと行ってくる

797:デフォルトの名無しさん
10/05/05 20:10:15
>>793
すごくない
当たり前のこと

798:デフォルトの名無しさん
10/05/05 20:13:23
C# Builder Personalとか、商用利用はダメじゃなかったっけ?
それを考えれば「当たり前」とは言えないでしょ。

799:デフォルトの名無しさん
10/05/05 20:33:50
何でも人の逆を言ってみたいだけのガキを相手にしてくてもいいのに

800:デフォルトの名無しさん
10/05/05 20:35:21
天邪鬼か

801:デフォルトの名無しさん
10/05/05 21:22:35
「天邪鬼」とは言えないでしょ。

802:デフォルトの名無しさん
10/05/05 22:20:26
C#ExpressはFormだけで完結するアプリ作るんなら必要十分だが
DB絡むと途端に使えない子になる
まあ無償だからしょうがないが

803:デフォルトの名無しさん
10/05/05 22:30:24
>>792
>・ アドインが使えないので、TestDriven.Net を使うには工夫が必要がある。

どうすれば使えるんですか?
ご教示ください。

804:デフォルトの名無しさん
10/05/05 23:47:48
>>803
スマンやり方を忘れてしまった。
URLリンク(project.iifp.biz)
から拾ってきたテンプレートでごしょごしょやった気がしたが・・・

NCover単体でやってたのかな?カバレッジのために使ってたし。

805:デフォルトの名無しさん
10/05/06 05:58:35
>>802
そんなことないよ。

806:デフォルトの名無しさん
10/05/06 14:59:05
スレッドの意味がよくわかりません。
デリゲートと比較すると引数もコールバックも渡せない。
敢えてスレッドを選択するのはどういう場面なんでしょうか。

807:682
10/05/06 15:03:43
自力でなんとか調べて、InsertionMark.NearestIndexとEnsureVisibleで
ある程度D&D時のスクロールは実現出来た
ただ、上方向へはスクロールするけど下方向がスクロールしない
マウス近くのアイテムが表示範囲に入ったところで止まってしまう
下方向へもスクロールするにはどうしたらいい?

808:デフォルトの名無しさん
10/05/06 15:08:32
>>806
常にバックグランドで待ち構えていなければならないような用途かな
例えばアーカイバプロジェクトDLLはほとんどがマルチスレッドに対応していない
だからアクセス専用スレッド待機させて、生産者消費者パターンでシリアル化する、みたいな

まあUIスレッドのために存在する、って言っちゃってもいいんだけどw

809:デフォルトの名無しさん
10/05/06 15:34:01
>>808
なるほど。
スレッド=タスク分散のためのマルチスレッド処理に使う物
と勝手に思い込んでたのでなんでこんな糞仕様なのかと疑問だったのですが
そもそもそういうことに使うものじゃないんですね。
もやが晴れましたどうもありがとうございました。

810:デフォルトの名無しさん
10/05/06 17:48:37
>スレッド=タスク分散のためのマルチスレッド処理に使う物

これはこれで合ってるんじゃね?

811:デフォルトの名無しさん
10/05/06 17:50:49
デリゲートの非同期呼び出しやスレッドプールはスレッドを使って実装されてる
ややこしい手続きを引き受けてくれる代理店みたいなもん

812:デフォルトの名無しさん
10/05/06 20:19:22
非同期呼び出しのおかげで明示的にスレッドを使う機会がめっきり減った。

813:デフォルトの名無しさん
10/05/06 21:10:36
ExcelやVisualStudioのタブみたいなTabControlが使いたい件。

814:デフォルトの名無しさん
10/05/06 21:20:29
メールのタイトル?

815:デフォルトの名無しさん
10/05/06 21:21:39
つWPF

816:デフォルトの名無しさん
10/05/06 22:17:45
コードプロジェクト行けばそういうサンプルなんて何ぼでもあるぞ
とくにそれは見掛けたことがあるから絶対になるわ

817:デフォルトの名無しさん
10/05/06 22:25:55
>>816
You've got my 5!

818:デフォルトの名無しさん
10/05/07 03:39:53
てs

819:デフォルトの名無しさん
10/05/08 02:12:36
ThreadPoolもどきを実装してるのは俺だけでいい

820:デフォルトの名無しさん
10/05/08 07:42:37
CCRもどきを実装するのも俺だけで十分だ( ^ω^)・・・

821:デフォルトの名無しさん
10/05/08 08:56:32
時間で消えるメッセージボックスもどきを実装させられるのも俺だけで十分だ

822:デフォルトの名無しさん
10/05/08 10:49:32
それは割とよくあるな。

823:デフォルトの名無しさん
10/05/08 11:39:24
そんなもん非同期にしなくてもWinFormsのタイマで頻繁に時間調べればいいだけじゃね
5分で作れる

824:デフォルトの名無しさん
10/05/08 12:20:56
>>823
安価付けろタコ

825:デフォルトの名無しさん
10/05/08 13:30:30
User32.dllに MessageBoxTimeout という関数があってな。

826:デフォルトの名無しさん
10/05/08 13:56:24
>>825
当然それじゃ要求に満たないわけでな。

827:デフォルトの名無しさん
10/05/08 14:36:21
>>823
メッセージボックスの場合はDialogResult返さないといけないから、
普通はそう単純にはいかない。

あと数値だけ受け付けるTextBoxとかComboBoxなんかも
かなりの頻度で車輪の再発明されてそうだな。

828:デフォルトの名無しさん
10/05/08 14:46:23
入力内容の制限は本来はバインディングでやるべきだな
WPFでは実際にそうなってるが

829:デフォルトの名無しさん
10/05/08 14:56:51
>>828
それって「馬鹿の一つ覚え」でしょ。
そういう方法論もあるとは思うが、それが「べき」なんていえる万能な方法なわけがない。

だいいち、入力を弾くなんていうGUI寄りの泥臭い処理を
データを持ってるオブジェクトが担当するなんて、どう考えても悪い設計にしか思えない。

830:デフォルトの名無しさん
10/05/08 15:06:09
>>829
「入力を弾く」のはロジックであって、そもそもGUIの仕事ではない。
逆に入力ルールをUIに持たせようとする神経を疑う。
UIは、あくまでデータの見せ方を定義するもの。ロジックは他に任せろ。

831:デフォルトの名無しさん
10/05/08 15:07:39
いい加減スレ違い。

832:デフォルトの名無しさん
10/05/08 15:13:47
>>830
話が噛みあってないな恐らく。
同じ「入力を弾く」という言葉を使っていても、
君は例えば設定範囲外の数値を弾くようなことを想定しているんだろう。

俺はそんな話はしてないの。(>>827)

833:デフォルトの名無しさん
10/05/08 15:46:18
C#ってもしかしてJavaにそっくり?
Javaが使えれば、何となくC#もできちゃう?

834:デフォルトの名無しさん
10/05/08 15:47:25
よくわからんな、入力書式のチェックの話でしょ?別に勘違いはしてないと思う。
指定したキー(文字)以外の入力は受け付けない、という機能であればViewの仕事だと
思うけど、そういう話?

# 単にキーで入力制限すると、数値しか入力させないつもりが"1.1.0-"なんて
# 入力ができちゃったりするから、個人的にはあんまり意味ないと思うけど。


835:デフォルトの名無しさん
10/05/08 15:56:58
>>834
そうそういう話。
君自身言ってるとおり、そんなのはViewあるいはGUI部品の仕事でしょ。

1個以上の小数点の入力を抑止したり、先頭以外の-の入力を抑止(あるいは、初めて
-が入力された時、先頭に-を表示する)するのは別に難しくない。というか普通そうする。

836:デフォルトの名無しさん
10/05/08 16:00:08
>>833
Javaよりだいぶ洗練されてるけど、まあ、似てるっちゃ似てる。

元々が「SUNがあまりに要領得ないからうちでJavaに似た別言語創るよ」みたなノリだし。
今やJavaよりかなり高機能になってるけど、逆にJava側がC#の機能を輸入してたりするし。


837:デフォルトの名無しさん
10/05/08 16:03:23
Javaより良いのか!
今まで興味なかったけど、何だか急に興味が沸いてきちゃったじゃないか。

838:デフォルトの名無しさん
10/05/08 18:11:36
ただ最近ちょっと言語仕様太りすぎじゃね?って気もしてきたけど
IDEが優秀だからあんまり気にならなかったり

839:デフォルトの名無しさん
10/05/08 18:18:31
>>837
後発で MS が作ってるものが悪いわけないじゃん。
MS が Java の仕様をあれこれ改善しようとして、それを SUN が断固拒否しなけりゃ
今頃 Java はいい言語になってただろうにねぇ。

>>838
IDE 抜きでもなかなかきれいにまとめてると思うよ、あれだけの高機能を。

840:デフォルトの名無しさん
10/05/08 18:19:42
実際はVJ++で改悪しようとしてたけどな

841:デフォルトの名無しさん
10/05/08 18:33:44
VJ++のどこら辺が悪いかな?
Write once, run everywhere. でなくなることぐらいだったような。
いろいろ便利なので、JDK1.1で成長を止められてしまったのに、長々と使われていた(日本ではほとんど使われなかったけど)。

842:デフォルトの名無しさん
10/05/08 18:35:06
テキストボックスに開いたCSVを、1次元配列に入れていこうとしたのですが
配列の要素数が後ろに増えていくと思ったのですが
1行分の要素しか格納されていきません
要素全てを格納したいのですがどう直せばいいのでしょうか?

// 変数の宣言
string Str = "";
string[] stArrayData = {};

// テキストボックスの1行単位処理
for(int i=0;i<textBox1.Lines.Length;i++){
Str = textBox1.Lines[i]; // テキストボックスから1行取得
stArrayData = Str.Split(','); // カンマでsplit
}




843:デフォルトの名無しさん
10/05/08 18:35:39
> Write once, run everywhere. でなくなることぐらいだったような。
それ駄目だろ、最大のウリだったのに。

844:デフォルトの名無しさん
10/05/08 18:42:31
カンマでSplitした配列をListにAddすれば?

845:デフォルトの名無しさん
10/05/08 18:46:33
>>841
当時 Pure Java とか言ってたくらいだし、
亜種作ることを SUN がとことん嫌ってたから。
なんか係争に発展してなかったっけ?

846:デフォルトの名無しさん
10/05/08 18:49:19
>>841
Write once, run anywhere.
Write once, debug everywhere.

混ざってないか

>>842
stArrayData = textBox1.Lines.SelectMany(s => s.Split(',')).ToArray();

847:デフォルトの名無しさん
10/05/08 18:50:11
>>844
すみません。頂いたヒントからググっても
どうにも上手くいかず

上のコードをどう直していけばよいのでしょうか

848:デフォルトの名無しさん
10/05/08 19:02:26
C# の欠点はオープン系のみで構築したいなんて案件だとちょっと辛いってとこぐらいかな。
MONOってどうなの?業務で使った人居る?

849:デフォルトの名無しさん
10/05/08 19:39:02
GPLが混入した時点で全く使い物にならないだろ
.NET関連のオープンソースプロジェクトってGPLより緩いライセンスがほとんどだし
サードパーティのライブラリとかも全滅

850:デフォルトの名無しさん
10/05/08 19:41:02
>>847

// 変数の宣言
string Str = "";
List<string> arrayData = new List<string>();

// テキストボックスの1行単位処理
for (int i = 0; i < textBox1.Lines.Length; i++)
{
Str = textBox1.Lines[i]; // テキストボックスから1行取得
arrayData.AddRange(Str.Split(','));
}

// string[]に変換
// arrayData.ToArray();


851:デフォルトの名無しさん
10/05/08 19:52:00
>>850
ありがとうございます!できました
…C#難しいよ…Perlのが楽だよ

852:デフォルトの名無しさん
10/05/08 19:54:14
面倒というならわかるが難しいならそりゃPerlもわかってないんだよ
オブジェクト指向してないでしょ

853:デフォルトの名無しさん
10/05/08 20:03:39
2002年以前の情報のままの奴がいるな。
GPLじゃなくなってから8年もたつのに。

854:デフォルトの名無しさん
10/05/08 20:09:30
>>850
Strの場所おかしくないか?(そして何故大文字)

855:デフォルトの名無しさん
10/05/08 20:13:44
>>854
元のソースで、とりあえずそのままでもいいところは
そのままにしているだけ、だと思う。

856:デフォルトの名無しさん
10/05/08 20:14:16
本家もできてないけどな

857:デフォルトの名無しさん
10/05/08 21:14:17
Perlでもあのロジックじゃ上手く行かないと思うのは俺だけか

858:デフォルトの名無しさん
10/05/08 22:20:25
Perl はぶっちゃけオブジェクト指向する必要ないと思うぜ

859:デフォルトの名無しさん
10/05/08 23:47:15
Perlでオブジェクト指向するくらいならRubyがいいな。

860:デフォルトの名無しさん
10/05/09 00:01:58
スレ違い。

861:デフォルトの名無しさん
10/05/09 20:52:45
enum を作るときって、関連するクラスの中に作ります?
それとも同じ名前空間内のクラスの外側に作ります?

862:デフォルトの名無しさん
10/05/09 20:54:41
そのクラスの外に見せるならクラスの外に作らないとガイドライン違反

863:デフォルトの名無しさん
10/05/09 21:35:19
>>862
ソースは?

864:デフォルトの名無しさん
10/05/09 21:38:28
>>862
何のメリットが

865:デフォルトの名無しさん
10/05/09 21:54:25
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)
公式には完璧にアウト

866:デフォルトの名無しさん
10/05/09 22:06:36
キリ

867:デフォルトの名無しさん
10/05/09 22:09:19
クラス内のenumを使うユーザーコントロールがデザイン時にエラーになってかなり困ったことがあるよ。
あんまり想定されてなくて危ないのでやめたほうがいい。

868:デフォルトの名無しさん
10/05/09 22:27:07
わかりにくいし使いにくいし探しにくい

869:デフォルトの名無しさん
10/05/09 22:28:07
>>862,865,867
なるほど。
確かに名前空間の分離で充分賄える内容でした。

とはいえ流石に enum 用の名前空間分けるのも変なかんじなんで
"Foo"StatusType みたいにそれっぽいプリフィクス付けて対処してみます。

ありがとうございました。



870:デフォルトの名無しさん
10/05/10 11:51:30
めんどくせーからpublic classの中にpublic enumでつくってもごもご。

871:デフォルトの名無しさん
10/05/10 12:00:24
namespace HogeProject
{
  public class HageClass
  {
    //(ry
  }
}
namespace HogeProject.HageClass
{
  enum StatusType
  {
    hoge = 0,
    hage = 1,
  }
}

872:デフォルトの名無しさん
10/05/10 12:02:19
禿ワロタw

873:デフォルトの名無しさん
10/05/10 12:04:06
if(this.Status == HogeProject.HageClass.StatusType.hage)
{
  MessageBox.Show("禿");
}

874:デフォルトの名無しさん
10/05/10 12:46:53
C#は糞2.0
スレリンク(tech板)

875:デフォルトの名無しさん
10/05/10 13:27:17
>>871
using HogeProject;

var hage = new HageClass(); // <- 名前空間はnewできない

って書けなくなるじゃん

876:デフォルトの名無しさん
10/05/11 05:38:15
URLリンク(www.itmedia.co.jp)
これってどうよ?

877:デフォルトの名無しさん
10/05/11 06:07:53
C#で文字解析をしたいのですが、
なにかいい方法はあるでしょうか?
例えば、テキストボックスにある
文字列が
"A B" C | D -E
という場合は、
A B AND C OR D ANDNOT E
という文字列に置換したいです。
今は文字列を1バイトずつ調べて
いますが、なにかmethodを使い
よい方法があればと思い質問します。

C#は初心者ですが、よろしく
お願いします。

878:デフォルトの名無しさん
10/05/11 06:38:39
正規表現とか

879:デフォルトの名無しさん
10/05/11 07:45:43
ぶっちゃけいうとF#でFslex,yacc使った方が幸せになる

880:デフォルトの名無しさん
10/05/11 10:04:31
C#でExcelシートを読み込む処理を作っています。
OleDbで接続して読み込むことはできるのですが、
どうしても読み込むことのできない列があり、その列の値だけは
何行目でも空になってしまいます。
試しに他のExcelファイルに変えてみましたが、最初のファイルとは別の
列がまったく読み込めませんでした。
Excelファイルに問題があるのでしょうか?
それともOleDbでDBのように読み込むには何かの制限があるのでしょうか?

よろしくお願いします。

881:デフォルトの名無しさん
10/05/11 10:17:39
で、それはどんな列なんだ?

882:デフォルトの名無しさん
10/05/11 10:22:23
>>881
商品一覧のようなシートで、読めない列には金額が入っています。
他の列にも同じような値が入っているのですが、一部の列だけ読めないんです。
やはりこれだけの情報では厳しいでしょうか?

883:デフォルトの名無しさん
10/05/11 10:26:28
じゃぁその読めない列と読める列の適当なサンプル提示してみれば?
個人情報が残らないようにしてソースの一部とともに公開すれば親切な誰かが見てくれるかもしれんよ


884:デフォルトの名無しさん
10/05/11 10:35:27
接続文字列に IMEX=1とか?

885:デフォルトの名無しさん
10/05/11 10:59:30
皆さんありがとうございます。
>>884さんの仰るとおりIMEX=1を追加したところ
動作しました。

C#に全然関係ない質問しちゃって失礼しました。

886:デフォルトの名無しさん
10/05/11 11:09:52
>>883

いつもソース要求しかしないアホ丸出し


887:デフォルトの名無しさん
10/05/11 11:13:01
どっちにしてもソース晒すのが礼儀

888:デフォルトの名無しさん
10/05/11 11:20:25
>>886
予想が当たったけど、データがなければ分からんのだから、指摘変だよ。

889:デフォルトの名無しさん
10/05/11 11:38:01
接続文字列の情報があれば
IMEX=1
が無かったは明白だったわけだから解決は早かったかもしれんの

890:デフォルトの名無しさん
10/05/11 15:56:07
C#2010で2008のプロジェクトを変換すると
プロジェクトプロパティにビルド構成が表示されるように
なったんですが、2008と同じようにする方法はありますか?
2010の新規プロジェクトを作ると2008と同じになるようですが・・。


891:デフォルトの名無しさん
10/05/11 19:54:46
上の件で、どうも元のソリューションのプラットフォームがAnyCPU
だと変換後に2008と同じような表示にならないようでした。
(テキストエディタでslnとcsprojのAnyCPUをx86に書き換えて確認)
書き忘れましたが環境はC# 2008 Express(一度削除)→C# 2010 Expressです

2010ExpressだとAnyCPUは推奨されないーとか、AnyCPUのときは手動で
ビルド構成の切り替えが必要ーとか、何か関連がありそうな事があれば
教えていただきたい。

892:デフォルトの名無しさん
10/05/11 21:47:27
>>891
メニューの「ツール」ー「設定」に基本設定と上級者設定があるからそれで切り替える。
変換元が基本設定でカバーできない範囲だったら上級者設定になるんじゃねーか?
その他の微調整はカスタマイズ、オプションで。


893:デフォルトの名無しさん
10/05/11 22:02:23
VisualStudioのエディタのデフォルトエンコードを UTF-8 から ShiftJIS に
したいのですが、何かレジストリとかで設定できないでしょうか?
保存オプションの詳細設定でいちいち変更するのが面倒になりました。
UTF-8でいいじゃないかという意見もあるでしょうが、UTF-8 をサポートしない
ツールにソースをコピーペーストすると文字が化けるので。
例) かちゅ~しゃ
/// <summary>
/// 繝�繧ケ繝�
/// </summary>


894:デフォルトの名無しさん
10/05/11 22:11:27
一旦メモ帳にペーストして再コピーすると良いよ

多分無いんじゃないかな

895:デフォルトの名無しさん
10/05/11 22:18:08
テンプレートを修正するんだったかな。

896:デフォルトの名無しさん
10/05/11 22:26:34
そもそもファイルの文字コードと関係なくクリップボードはUnicodeでコピーされる。



897:デフォルトの名無しさん
10/05/11 22:30:15
つまり、vsのファイルはシフトJISだから、そのファイルを他の
エディタで開けば読めると思うが、コピペだと文字化けする、
ということか。

898:デフォルトの名無しさん
10/05/11 22:34:14
>>896は大嘘だけどな

899:デフォルトの名無しさん
10/05/11 22:44:03
嘘と言い切ることもできないが(CF_UNICODETEXTも付いてるから)
しかしCF_TEXTにUTF-8とか止めて欲しいもんだ

900:デフォルトの名無しさん
10/05/11 22:45:28
UTF-8 をサポートしないツールを捨てよう

901:デフォルトの名無しさん
10/05/11 22:48:49
WinDiffのことかー!

902:デフォルトの名無しさん
10/05/11 22:57:29
windiffはもうずっと使っていないなぁ。WinMerge便利だし。
変な文字コードのクリップボードはxyzzyでクリップボードエンコーディングを指定して貼付けがいいよ。
xyzzyは貼付けの文字コード自動判別もできると楽なんだけどなぁ。

903:デフォルトの名無しさん
10/05/11 23:01:33
秀丸はOK

904:デフォルトの名無しさん
10/05/11 23:07:10
>>893
そんな問題に対応するクリップボード拡張ツールがあってもおかしくないな、
と思って検索したら、ベクターにこんなのあったよ。

URLリンク(www.vector.co.jp)

使えるかどうかは確認してない。

905:デフォルトの名無しさん
10/05/11 23:59:26
/// <summary>
/// テスト
/// </summary>
うん、Windows7で動作。
オプションでShiftJISに変換するのとどちらが便利か比べてみる。
ありがとう。

906:デフォルトの名無しさん
10/05/12 08:11:27
C#の本でVisualStudioのGUI操作を主に取り扱ってる、お勧めな本ありますでしょうか?
C#の言語仕様や文法については他の言語を知っているので詳しく書いてなくてもいいのですが。
特に、GUIコンポーネントの継承、VSS、外部参照方法など
エンタープライズ向けの操作方法が乗ってるのがありましたら教えてください。

907:デフォルトの名無しさん
10/05/12 08:20:31
URLリンク(www.amazon.co.jp)

908:デフォルトの名無しさん
10/05/12 12:06:03
>>892
 ありがとう。色々いじってみました。
2010ってデフォルトがAny CPUからx86に変わったんですね。
とりあえずは32ビットwinだとx86じゃないと必ず表示されるという結論
に達しました。
 これに関連してか、Any CPUだと「プロジェクトおよびソリューション」
の「ビルド構成の詳細を表示」をOFFにしても「ソリューションのビルド」
でリリース構成としてビルドされないっぽい事がわかりました。

また何か情報あったら教えてください
ありがとうございました。



909:デフォルトの名無しさん
10/05/12 12:22:26
>>908
AnyCPUで作っちゃうといろいろ問題が起きるから2010では
デフォルトをx86つまり32bitにしておくことになったはず
この辺はAnyCPU vs2010とかググるとでてくるよ

まあこちらで経験した中ではブラウザコアを使った件はもろこれにあたったな
AnyCPUでブラウザコアを使うアプリ組むと64bitOS上だと64bitのIEが呼び出され
Flashまわりも64bitの物を要求するらしいんだけどないのでエラーになるとか
まあそれ以外にもいろいろあるようだけど
radikoのアプリ書いたときもろこれになった

そういう問題があるので2010ではデフォルトをx86にしてWOW64を当てにして
動かすようにしたとか

910:デフォルトの名無しさん
10/05/12 12:28:57
>>909
あれから開発は進んだ?

911:デフォルトの名無しさん
10/05/12 12:30:02
>>910
誰と勘違いしてるのか知らないけどradiko関連は最初に作った以上はやらないよw

912:デフォルトの名無しさん
10/05/12 13:43:14
普段から64bitOSで作業してるからこれにすぐ引っかかる
コーディングしてデバッグ開始して外部DLLの初期の時にもう落ちるからねえ

913:デフォルトの名無しさん
10/05/12 18:38:59
>>845
亀だが、係争に発展した挙句SUNが負けたような

914:デフォルトの名無しさん
10/05/12 18:40:53
>>912
.netとかいっても内部はネイティブDLLなんかの単なるラッパーだったりするからねえ

915:デフォルトの名無しさん
10/05/12 19:52:30
よろしくお願いします。

VSC#2008です。

int.Parseに続くカッコ内に2バイト文字の数字を入れると、挙動がおかしいのですが
デバッグ付実行でエラーでず、素通りしてしまいます。
2バイト文字の数字をint型にするには、どういった方法がよいでしょうか。


916:デフォルトの名無しさん
10/05/12 20:08:30
2バイト文字をint型に入れようって考えるのがそもそもおかしいと思うが…
Parseする前にワンクッション、全角数字を半角数字に置換するようにすればいい。

917:デフォルトの名無しさん
10/05/12 20:11:08
いったん半角にすればいいじゃん。

918:デフォルトの名無しさん
10/05/12 20:11:38
むしろReplaceで充分。

919:デフォルトの名無しさん
10/05/12 20:19:12
その前に
>デバッグ付実行でエラーでず、素通りしてしまいます。 
の部分が変だな。どんなコードかいてるの?

920:915
10/05/13 12:34:06
Microsoft.VisualBasic.Strings.strConvでNarrowにするのって、
半濁音のピは、ヒと゜に分解されるんですね・・・2文字になるのか・・・orz..

921:デフォルトの名無しさん
10/05/13 12:40:22
濁点付き文字を別に用意したら文字数が増えすぎて文字コードの隙間に入りきらないだろ
視認性も確保できない
*作られた当時の話

922:デフォルトの名無しさん
10/05/13 12:40:42
復活のじゅもんだって半濁音は2文字だろうが!

923:915
10/05/13 12:48:42
そうでしたね、ありがとうございます・・・。
ファイル名から数字をChar.IsDigitを駆使して抜き出してから
strConvしたらうまくいきました・・。

便乗質問ですが、
int.Parseで変換しようとしている文字列が表現する数字の桁数が相当多くて、
intに入りきらない場合ってあるじゃないですか。
でね、そんなケースを実験してみたら、

return int.Parse(Microsoft.VisualBasic.Strings.StrConv(str.Substring(startindex, finalindex - startindex + 1), Microsoft.VisualBasic.VbStrConv.Narrow, 0));

デバッグ付実行なのに、何らエラー(バグったり凍ったりダイアログが勝手に出たり)でずに
素通りして、何食わぬ顔でシステムアイドル状態に戻るんですよね。

うーん。うまくいってんのかいってないのかわかんねーと悩んでいます。

924:915
10/05/13 12:51:02
なるほど、
これを
OverflowException
s が MinValue 未満の数値か、MaxValue より大きい数値を表しています。
というんですね・・・。
try catch finallyで囲って強制的に例外を吸い上げる(何もしないとスルーしやがるので)しか
ないのでしょうかね・・・ORZ

URLリンク(msdn.microsoft.com)

925:デフォルトの名無しさん
10/05/13 12:53:09
COM系のイベント内でやってないか?

926:915
10/05/13 12:53:53
>>919さん

わかった!INT.PARSEって明示的に例外処理を用意してやんないと
スルーするんですね?ってことであってますでしょうか。

で、厄介なのはスルー後、何事もなかったかのようにシステムアイドルに
戻るっていうこと。
何食わぬ顔で実行中のFOREACHから抜けだすし、それが記述されてるメソッドからも
抜け出す・・・。

927:915
10/05/13 12:54:42
>>925
private void MainForm_DragDrop(object sender, DragEventArgs e)

内でやっています。
(MAINFORMはFORM1のことです)

928:デフォルトの名無しさん
10/05/13 13:02:35
DragDropイベントもCOM系だな
.NETの例外はHRESULTに変換されてCOMの呼び出し元に返値として渡されるので
例外は外部に通知されない

929:デフォルトの名無しさん
10/05/13 13:35:36
>>928さん

まじでつか・・・ORZ
どうすりゃいいの変になりそう(byビース、ZEROより)

930:デフォルトの名無しさん
10/05/13 13:51:48
いきなりParseせずチェック入れた後に変換すればいいのでは?
多倍長ライブラリでInt範囲にあるかチェック→変換
もしくは
文字数カウント→Decimal変換→Int範囲にあるかチェック→変換

931:デフォルトの名無しさん
10/05/13 14:02:07
イベント内で例外処理すれば良いだけじゃん?

932:デフォルトの名無しさん
10/05/13 14:03:35
>>915MSDNくらい読め、くそが。
TryParse

933:デフォルトの名無しさん
10/05/13 14:06:39
TryParse()使えば

934:915
10/05/13 14:20:13
>>932、933さん

ですね・・・クビ吊ってきます・・・ORZ

935:デフォルトの名無しさん
10/05/13 14:32:32
お前は既に釣っている

936:デフォルトの名無しさん
10/05/13 15:29:06
だれうま

937:デフォルトの名無しさん
10/05/13 15:31:15
ついでに、intで範囲外ならlongを使えばいいじゃない
幾ら何でもlongを超えるような桁数扱う訳じゃないだろ
あ、先に言っとくがlong.TryParse()だからな?
intからキャストするとかマヌケなことはナシだぜ

938:915
10/05/13 16:06:38
ファイル名に日付が入っている場合は、
例えば20100513で8桁。
更に時刻も入っていれば、
201005131606で12桁。

ファイル名から数字を抽出する作業でインチージャを使うのは
その時点ですでに無謀ですね・・・おrz

939:デフォルトの名無しさん
10/05/13 16:09:11
>>938
結局何がしたいの?
無理して数値型を最初の器にするからはまるんじゃないの?

940:デフォルトの名無しさん
10/05/13 16:09:19
計算に使うんじゃないのかよw

941:デフォルトの名無しさん
10/05/13 16:19:58
もういいから正規表現使えよwwwwww

942:915
10/05/13 16:26:38
そんなにいっぺんにいろいろ言わないで下さい・・・滝汗

加工したいファイルをアプリにDDする。
DDされたファイルのファイル名を解析する。
ファイル名は、どのような形式か予測できない。
ファイル名は、おそらく少なくとも1文字の0でない数字が入っているものと想像する。
ファイル名の文字列のうち、頭から探っていって最初に0でない数字と出くわしたら、
そこから、数字の連続が途切れるまでシークし、
少なくとも1文字以上の数字列を抜き出す。

ということをしているんです。
抜き出した数字列をとりあえずイントにしていた、というだったんです。

シクシク・・・

943:デフォルトの名無しさん
10/05/13 16:46:58
だったらなおさら正規表現使え
見た目難解とかの言い訳は聞かん

944:デフォルトの名無しさん
10/05/13 16:47:39
(ノД`)シクシク

945:デフォルトの名無しさん
10/05/13 16:49:39
おれもそれやるなら正規表現でやるわ。

946:デフォルトの名無しさん
10/05/13 16:49:57
>>943
難解かね?
最悪わからなければ正規表現スレで書いてもらえばいいだけだし
,netの正規表現はperl5互換だったのでその旨だけ書いておけば
人がいれば書いてくれるよ

947:915
10/05/13 16:53:47
kwsk(ノД`)シクシク

948:デフォルトの名無しさん
10/05/13 16:56:10
>>946
だな
とにかく>>942みたいなことをやりたいなら正規表現一択
そっから数値型に落としたいならVBのStrConv()をC#で使えばいい

949:915
10/05/13 16:57:59
URLリンク(www.2shared.com)
(ノД`)シクシク

950:デフォルトの名無しさん
10/05/13 16:58:18
ところでたとえば>>938をどういう風に加工するの?
>例えば20100513で8桁。
>更に時刻も入っていれば、
>201005131606で12桁。
これをどうintの範囲に収めるか

ルールがないとねえ・・・

951:デフォルトの名無しさん
10/05/13 17:00:30
intの最大がこれか
2147483647

952:デフォルトの名無しさん
10/05/13 17:07:23
>>950
いや日時って事前に解ってればDateTime型にするだろJK
例え日時と連番が混在してたとしても、正規表現で一工夫すればある程度分離可能

953:デフォルトの名無しさん
10/05/13 17:09:32
>>952
いやいや
事前にわかってない物をルール決めて
intの範囲に落とし込むんでしょ?

そのルールというか仕様を決めないとどうしようもないって話・・・

954:915
10/05/13 17:17:34
とにかく949でアップしたおソースをゲットして、
諸先輩方からの辛口批判を希望します。

955:デフォルトの名無しさん
10/05/13 17:21:28
この意図不明なソース見てどうしろと?
意味じゃなくて意図が不明
まず仕様をはっきりさせるのが先だ

956:デフォルトの名無しさん
10/05/13 17:21:55
>>954
本人だったのか
使い方わからんし、いろいろポップアップするしでスルーしてたわw
できれば>>4>>7のコード貼るサイト使ってくれ

957:デフォルトの名無しさん
10/05/13 17:22:52
949は怖くてダウンロード出来ません

958:デフォルトの名無しさん
10/05/13 19:25:45
>>942-943
new Regex("(\D*?(\d*?)\D*?)", RegexOptions.IgnoreCase)
要するにこうか?
未検証だからこのまま動くかどうかは知らん

959:958
10/05/13 19:27:11
おっと最後の繰り返しが抜けてた
new Regex("(\D*?(\d*?)\D*?)*", RegexOptions.IgnoreCase)
こうだな

960:デフォルトの名無しさん
10/05/13 21:33:49
なんのこっちゃさっぱり分からん。
915が説明すらまともに出来ないクズなのか、俺の頭が悪いのか

961:デフォルトの名無しさん
10/05/13 23:05:51
さっぱり分かるけど、21億、または42億を超えるような数字が取れてしまった場合どうするのかと、
数字が含まれていない可能性もあると書いているのに、1文字以上の数字列を返すところ

後者は"0"返せばいいのかな。

962:デフォルトの名無しさん
10/05/13 23:07:27
そもそも数値が欲しいのか数字列が欲しいのかすら分からんわけで

963:デフォルトの名無しさん
10/05/14 01:45:28
おまんこが欲しいです…

964:デフォルトの名無しさん
10/05/14 03:13:16
だったらこんな板にいないで歌舞伎町にでも飛び出せ
早くしろ

965:デフォルトの名無しさん
10/05/14 08:40:37
要するに文字列から「連続した数字文字列」を抽出したいといことなんだろう。
何に使用するかは知らないけど。

966:915
10/05/14 09:27:23
>>965
そのとおりでつ!
ただし、数字文字列の先頭は0であってはならない。
抽出した数字文字列は1バイト文字に変換しなければならない。

でっつ!

967:デフォルトの名無しさん
10/05/14 09:54:03
あ、いや、むりして数字にしなくても、数字文字から成る文字列stringのままでもいいかも・・・。
でも、その代わり全角か半角か混在している場合はどちらかに統一するような処理をしたいけれどもでつ。

968:デフォルトの名無しさん
10/05/14 10:09:35
ジョニー・デッツ

969:デフォルトの名無しさん
10/05/14 12:26:36
でっつ奉公

970:デフォルトの名無しさん
10/05/14 13:28:59
>>966
>>959

971:デフォルトの名無しさん
10/05/14 14:35:15
>>966
間違っています。
以上。
はい次の方。

972:967
10/05/14 15:16:49
915です、とりあえず戻り値をintじゃなくstringのままにしたら、全く問題ありませんでした。
諸先輩方、ありがとうございました。

973:デフォルトの名無しさん
10/05/14 15:31:59
ゆとりらしい解決だったな

974:デフォルトの名無しさん
10/05/14 17:45:06
結局設計意図がわからなかった

975:デフォルトの名無しさん
10/05/14 19:43:33
ぽかーん

976:デフォルトの名無しさん
10/05/15 13:54:24
f

977:デフォルトの名無しさん
10/05/15 20:23:26
機械制御プログラムとかで、コマンド送信時にタイムアウト値を指定する必要があります。
それぞれのコマンドに推奨の最低タイムアウト値が存在するのですが、
こういうのは enum で定義した方がいいんでしょうか?
それとも const int の方が良いのでしょうか?

それぞれのコマンド送信メソッドではタイムアウト値は int で受けつける仕様にする予定です。
(最低タイムアウト値 +- αの値を指定する必要があるため)


978:デフォルトの名無しさん
10/05/15 20:25:11
readonly int

979:デフォルトの名無しさん
10/05/15 20:27:42
static readonly intに訂正
constはできるだけ使わない(値そのものに意味があるenumも同じ)

980:977
10/05/15 21:25:43
値そのものに意味がある enum は NG ですか。
enum → 意味のある数字への変換メソッド等用意するのが正道ということでしょうか?

機械制御のコマンドも数値で表現されているのですが、想定していない数字を受けつけないよう
enum で型を作ってメソッドにわたすようにしていたのですが、
これは適当なクラスを作って定数を持たせるようにする方がいいのかな?

例)
class ControlCode {
public int Value { get; private set }
private ControlCode(int value) { Value = value; }

public readonly ControlCode Reset = new ControlCode(101);
.....
}

... public void SendControlCode(ControlCode code, int timeout);


981:デフォルトの名無しさん
10/05/15 22:08:30
別にそのコマンドの数値自体には意味はないんだし
絶対にその値を変えることが無いと言い切れるならenumでもいいと思うけどな
値をラップする型を作る方法をとるのであればクラスじゃなくて構造体使うのが普通
==と!=とGetHashCodeは必ず実装すること
WPFなんかでは列挙体みたいな構造体は確かに多用されてる

982:デフォルトの名無しさん
10/05/16 09:07:14
なるほど。

MSDN を再度見返してみましたが、後から変更がかかりそうな定数なんかは enum にするのは
よろしくないんであって、意味のある数字を持たせてはいけないってわけではなさそうですね。

今後の拡張や定数自体にプロパティを持たせる必要があるか等考えて再検討してみます。
ありがとうございました。

983:デフォルトの名無しさん
10/05/16 09:51:40
enumにご執心のようだが、同じ数値セットできないことは認識してるのかな。
異なるコマンドでタイムアウト値が同じ状況は十分ありえそうだが。

984:デフォルトの名無しさん
10/05/16 11:53:12
>>983
できるよ。

985:デフォルトの名無しさん
10/05/16 14:09:28
んな馬鹿なと思ってためしてみたら本当に出来たでござる

986:デフォルトの名無しさん
10/05/16 14:13:00
enumって手抜き用みたいなもんでしょ

987:デフォルトの名無しさん
10/05/16 14:17:44
>>984
んな馬鹿なとおもったけど>>985のレスでできるのだなぁと思い、そういやC#のenumはかなり変更されたんだったなと思い出した

988:デフォルトの名無しさん
10/05/16 14:25:01
>>985
感謝しろ

989:デフォルトの名無しさん
10/05/16 14:36:10
これが出来るって事?


public enum eSwich {
VALUE1 = 1,
VALUE2 = 1
}

990:デフォルトの名無しさん
10/05/16 14:37:13
昔からできたでしょ

991:デフォルトの名無しさん
10/05/16 15:02:47
これとかよくあるパターンだろ

enum Hoge { A, B, Default = A }

ついでに、別環境(Compactなど)で値が異なるとか

enum Hoge { A, B, Default = B }

>>982
・要素を追加/削除しない
・要素の値を変更しない
・利用者が値を意識する必要が無い

を守れないならenumは不適切

992:デフォルトの名無しさん
10/05/16 17:32:26
>>991
ふーん

993:デフォルトの名無しさん
10/05/16 20:21:10
列挙体といえば.NET4で今更Enum.HasFlagが追加されたわけだけどこんなの使う?
ものすごい遅そうなんだけど

994:デフォルトの名無しさん
10/05/16 20:45:44
これから新しく書くものには使う。

995:デフォルトの名無しさん
10/05/16 20:51:43
[Flags]が付いた列挙体に対してはコンパイラが
その型専用に最適化されたバージョンのHasFlagを生成するとかできなかったのかな
ボックス化+リフレクションだからビット演算に比べると途方もなく巨大なコストだよな

996:デフォルトの名無しさん
10/05/16 20:58:11
using とか lock みたいな構文糖衣でもよかったよね。

997:デフォルトの名無しさん
10/05/16 21:10:16
unko

998:デフォルトの名無しさん
10/05/16 21:18:05
static bool HasFlag<T>(T value, T flag) {
return ((dynamic)value & flag) == flag;
}
こうしてみたらEnum.HasFlagの1/10くらいの処理時間になった
それでもビットマスクの数百倍だけどdynamic結構速いね

999:デフォルトの名無しさん
10/05/16 21:18:23
o

1000:デフォルトの名無しさん
10/05/16 21:19:43
C#最強

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


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