为C#类对象分配一个附加参数

时间:2013-03-26 23:11:24

标签: c#

我有一个方法GetProduct,它返回一个Product Object,并说,我想返回一个附加参数和对象,我该如何实现它?在下面的例子中,我如何返回'isExists'?

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

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

非常感谢任何帮助!

谢谢, 阚

4 个答案:

答案 0 :(得分:2)

您可以使用out参数:

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

并且打电话是这样的:

bool isExists;
Product p = GetProduct (out isExists)

虽然在我看来isExists是你可能想要在你的Product类中拥有的那种属性......

答案 1 :(得分: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
}

答案 2 :(得分:0)

为什么不使用null

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

使用它:

var product = GetProduct();
if (product != null) { ... }  // If exists

答案 3 :(得分: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();
}

另一种选择是将所有对象分组为1个预定义的.Net类,名为元组

public Tuple<Product, Type1, Type2> GetProduct()
{
  return new Tuple<Proudct, Type1, Type2> (new Product(), new Type1(), new Type2());
}