为c#类对象分配一个额外的参数

本文关键字:一个 参数 对象 分配 | 更新日期: 2023-09-27 18:05:57

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

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

我不想在产品类中添加这个参数作为属性。

任何帮助在这是非常感激!

谢谢,菅直人

为c#类对象分配一个额外的参数

您可以使用out参数:

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

和call是这样的:

bool isExists;
Product p = GetProduct (out isExists)

虽然在我看来,isExists是你可能想要在你的产品类的那种属性…

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

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
}

为什么不用null呢?

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

和使用它:

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

几个建议:

看一下字典。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());
}