0

我有一个 GetProduct 方法,它返回一个产品对象并说,我想与对象一起返回一个附加参数,我该如何实现它?在下面的示例中,我如何返回 'isExists'?

public Product GetProduct()
{
    ---
    ----
   bool isExists = true
   return new Product();
}

我不想将该参数添加为产品类中的属性。

非常感谢您对此的任何帮助!

谢谢, 坎

4

4 回答 4

2

您可以使用 out 参数:

public Product GetProduct (out bool isExists)
{
    isExists=true;
    return new Product();
}

和电话是这样的:

bool isExists;
Product p = GetProduct (out isExists)

尽管在我看来这isExists是您可能希望在 Product 类中拥有的那种属性...

于 2013-03-26T23:14:49.310 回答
0

一种方法是像这样修改你的方法:

public bool GetProduct(ref Product product)
{
   ---
   ---
   bool isExists = true;
   product = new Product();
   return isExists
}

这样您就可以像这样调用该方法:

Product product = null;
if(GetProduct(ref product) {
   //here you can reference the product variable
}
于 2013-03-26T23:15:30.653 回答
0

为什么不使用null

public Product GetProduct()
{
   bool isExists = true
   if (isExists)
       return new Product();
   else 
       return null;
}

并使用它:

var product = GetProduct();
if (product != null) { ... }  // If exists
于 2013-03-26T23:16:54.383 回答
0

几个建议:

看一下Dictionary.TryGetValue它的行为方式类似,如果您只需要从集合中返回一个对象(如果存在)。

Product product;
if (!TryGetProduct(out product))
{
  ...
}

public bool TryGetProduct(out Product product)
{
  bool exists = false;
  product = null;
  ...
  if (exists)
  {
    exists = true;
    product = new Product();
  }   

  return exists;
}

如果您有其他要与对象一起返回的属性,则可以通过引用将它们作为参数传递

public Product GetProduct(ref Type1 param1, ref Type2 param2...)
{
  param1 = value1;
  param2 = value2;
  return new Product();
}

另一种选择是将所有对象分组到一个名为Tuple的预定义 .Net 类中

public Tuple<Product, Type1, Type2> GetProduct()
{
  return new Tuple<Proudct, Type1, Type2> (new Product(), new Type1(), new Type2());
}
于 2016-03-04T22:56:08.180 回答