在一个类中将数据从一个方法返回到另一个方法

时间:2011-06-24 10:01:27

标签: c# methods return

感谢您对我刚刚提交的有关匿名课程的问题的帮助。现在我了解更多。这里有一个例子:

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;
 }
}

该类仅用于两种方法之间的这一数据传输。

3 个答案:

答案 0 :(得分:1)

这样会有效。如果是最理想与否则很难说。由于您使用的是变量“ID”和“Name”,因此它表示您正在使用数据库中的域对象,如果是这样,您可能需要更多的类而不仅仅是这一个方法。

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 :(得分: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;

答案 2 :(得分:1)

我认为你的意思是:返回新的XYZ(5,“戴夫”) 无论如何,你的解决方案是可以的,但没有理由创建一个新类只是为了共享数据。您可以使用哈希表/数组/字典或任何最适合您共享数据的类。如果你想对XYZ类做一些特别的事情,或者你想要从中调用它的方法,那么你必须创建一个新的类XYZ并返回它。但是,如果您只想共享数据,请使用已经可供您使用的数据结构。