トップページ > プログラム > 2015年01月01日 > iDo75q0v

書き込み順位&時間帯一覧

2 位/168 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000010120000121008



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net

書き込みレス一覧

C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
41 :デフォルトの名無しさん[sage]:2015/01/01(木) 11:25:47.35 ID:iDo75q0v
何がしたいのか全く分からん
C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
51 :デフォルトの名無しさん[sage]:2015/01/01(木) 13:47:07.08 ID:iDo75q0v
状態を増やしていくっていうのはもうスクリプティングの段階に入ってるから
そこでクラスを一つ一つ継承するっていうのは記述に対して実入りが少なすぎる
C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
52 :デフォルトの名無しさん[sage]:2015/01/01(木) 14:24:36.87 ID:iDo75q0v
D(S.Initial, T('a',S.a), T('b',S.b));
D(S.a, T('b',S.ab), T('c', S.ac));
...

まあこんな感じで書ける程度の記述合理性は欲しいよね
DはDefine SはState(enum) TはTriggerの略で
StateがそれぞれDefineされてるかどうかの整合性チェックも一応リフレクション使って実装しときたいな
C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
53 :デフォルトの名無しさん[sage]:2015/01/01(木) 14:34:57.74 ID:iDo75q0v
Stateのenumはデフォルトのただの連番っていう約束を決めておけば
ライブラリ側はenumの具体的な値であるintに対して処理すれば
全てのenumに対して使えるからそれでいいんじゃないかと思った
C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
55 :デフォルトの名無しさん[sage]:2015/01/01(木) 19:37:46.81 ID:iDo75q0v
せっかくC#使ってインテリセンスのサジェストを受けられるのに
文字列とか無いわw
C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
59 :デフォルトの名無しさん[sage]:2015/01/01(木) 20:19:41.93 ID:iDo75q0v
>>57
俺はenumの代わりにダブルクオートでくくって文字列直打ちするっていう話だと思ったけど

D("Initial", T('a',"a"), T('b',"b"));

これがTypeConverterを使うとどうにかなってインテリセンスが効くようになるの?

>>58
public const string Initial = "Initial";

こんなふうにやってくって話? 

これを書くのがまず面倒だし
定義箇所が複数に分かれたら同じ文字列が出てきちゃう場合が考えられるから拡張性も高いとは思えないな
俺だったら複数に分けるほど大きくなる場合は
namespace N1{
enum S{ A, B, C }

class Script : ScriptBase{
 void D(S s, params T[] triggers){
  StateMacine.Instance.Set(typeof(S), s, triggers);
 }

 public static void Initialize(){
  D(S.A, T('b', S.B), T('c', S.C), T('d', N2.S.D));
 }
}

こんな感じでenumの型情報と一緒に登録して型ごとに分かれるようにして
ある型のenumが初回出現した時に対応するScriptクラスをnewして登録するようにすることで
初期化の負荷も分散できるようにするかな
C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
60 :デフォルトの名無しさん[sage]:2015/01/01(木) 20:23:00.17 ID:iDo75q0v
なんか間違いまくってるな
namespace N1{
enum S{ A, B, C }

class Script : ScriptBase{
 static void D(S s, params T[] triggers){
  StateMacine.Instance.Set(typeof(S), s, triggers);
 }

 public static void Initialize(){
  D(S.A, T('b', S.B), T('c', S.C), T('d', N2.S.D));
 }
}}

ある型のenumがTriggerで初回出現した時に
対応するScriptクラスのInitializeメソッドをリフレクションで呼び出して登録するようにすることで
初期化の負荷も分散できるようにする
だわ
C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
62 :デフォルトの名無しさん[sage]:2015/01/01(木) 21:05:29.97 ID:iDo75q0v
そんなこと言ったって一つが膨大になる場合は幾つかに分けないとしょうがないだろう
そうでなければ一つにまとめりゃいいし
一つで済むならenum連番を拒む理由もないはず
enum連番なら配列に入れられるからパフォーマンスも良いし


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。