C#, C♯, C#相談室 Part58at TECH
C#, C♯, C#相談室 Part58 - 暇つぶし2ch950:デフォルトの名無しさん
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