[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 08/03 14:11 / Filesize : 215 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C#, C♯, C#相談室 Part58



1 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 21:35:10 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ 
C#, C♯, C#相談室 Part55 (実質56)
pc12.2ch.net/test/read.cgi/tech/1260111240/

Visual C# 2008 Express Edition 日本語版
www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>1-5くらい

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

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

951 名前:デフォルトの名無しさん [2010/05/13(木) 17:00:30 ]
intの最大がこれか
2147483647

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

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

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

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

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

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

957 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 17:22:52 ]
949は怖くてダウンロード出来ません

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



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

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

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

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

962 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 23:07:27 ]
そもそも数値が欲しいのか数字列が欲しいのかすら分からんわけで

963 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 01:45:28 ]
おまんこが欲しいです…

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

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

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

でっつ!

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

968 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 10:09:35 ]
ジョニー・デッツ



969 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 12:26:36 ]
でっつ奉公

970 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 13:28:59 ]
>>966
>>959

971 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 14:35:15 ]
>>966
間違っています。
以上。
はい次の方。

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

973 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 15:31:59 ]
ゆとりらしい解決だったな

974 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 17:45:06 ]
結局設計意図がわからなかった

975 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 19:43:33 ]
ぽかーん

976 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 13:54:24 ]
f

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

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


978 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 20:25:11 ]
readonly int



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

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

982 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 09:07:14 ]
なるほど。

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

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

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

984 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 11:53:12 ]
>>983
できるよ。

985 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 14:09:28 ]
んな馬鹿なと思ってためしてみたら本当に出来たでござる

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

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

988 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 14:25:01 ]
>>985
感謝しろ



989 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 14:36:10 ]
これが出来るって事?


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

990 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 14:37:13 ]
昔からできたでしょ

991 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 15:02:47 ]
これとかよくあるパターンだろ

enum Hoge { A, B, Default = A }

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

enum Hoge { A, B, Default = B }

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

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

992 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 17:32:26 ]
>>991
ふーん

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

994 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 20:45:44 ]
これから新しく書くものには使う。

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

996 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 20:58:11 ]
using とか lock みたいな構文糖衣でもよかったよね。

997 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 21:10:16 ]
unko

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



999 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 21:18:23 ]
o

1000 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 21:19:43 ]
C#最強

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






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<215KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef