2011-06-24 12 views
1

私はちょうど匿名クラスについての質問を助けてくれてありがとう。今私はもっと理解しています。ここでは例のもう少しです:クラス内のあるメソッドから別のメソッドにデータを返す

public class abc { 
public xx doAction() { 
    return (new { ID = 5, Name= "Dave" }); 
} 
public void doStart() { 
    var a = doAction(); 
    var b = a.ID; 
    var c = a.Name; 
} 
} 

は、だから私はこれを行うための最も理想的な方法は、クラスXYXを宣言し、このようにそれを使用するのだろうと言って、正しい午前:

public class abc { 
public XYZ doAction() { 
    return (new XYZ { ID = 5, Name= "Dave" }); 
} 
public void doStart() { 
    var a = doAction(); 
    var b = a.ID; 
    var c = a.Name; 
} 
} 

クラスはこの2つのメソッド間のこの1つのデータ転送にのみ使用されます。

答えて

1

を私はあなたが意味を考える:(5、 "デーブ" の新しいXYZを返す)とにかく、あなたのソリューションは大丈夫ですが、単にデータを共有するために新しいクラスを作成する必要はありません。ハッシュテーブル/配列/辞書、またはデータを共有するのに最適なクラスを使用できます。 XYZクラスで何か特殊な処理をしたい場合や、呼び出すメソッドがある場合は、新しいクラスXYZを作成して返す必要があります。ただし、データを共有したいだけの場合は、既に使用可能なデータ構造を使用してください。

+0

私が公開しているデータを返すのはどうでしょうか?JsonResultはその過剰ですか?私はそれがデータを取り、それをきちんと梱包するだろうと思いますか? –

+0

データをJSon形式にする必要がある場合は、後で行うことにします。 JSonの結果が複雑である必要がなければ、結果を格納するために単純なデータ構造を使用できない理由はわかりません。 – peacey

1

これははいです。それが最も理想的であるかどうかは言うまでもありません。あなたが変数 "ID"と "名前"を使用しているので、データベースからドメインオブジェクトを使って作業していることを示しています。もしそうなら、おそらくこの方法よりも多くのことが必要になります。

クラスABCはどうですか?それはどんなクラスですか?

public class abc{ 
private int _id; 
private string _name; 

public void DoAction(){ 
    _id = 5; 
    _name = "Dave"; 
} 

public void DoStart(){ 
    var b = _id; 
    var c = _name; 
} 
} 

しかし、あなたは、彼らがために使用されているかのアイデアを持っているので、あなたのクラスのための適切なネーミングを使用することを忘れないでください:あなたもこれを行うことができますので。

1

はい、あなたのクラスでは、既存の.NETクラスを使用して検討することができ些細な性質を持っている場合かかわら:

1)あなたはSystem.Tuple(.NET 4.0)を使用して検討することができますが、あなたはもう良いプロパティ名を持っていません。

var result = Tuple.Create(5, "Dave"); 
int id = result.Item1; 
string name = result.Item2; 

2)それが適用される場合は、KeyValuePairを使用することができます。

var result = new KeyValuePair<int, string>(5, "Dave"); 
int id = result.Key; 
string name= result.Value; 
関連する問題