我有一个 GetProduct 方法,它返回一个产品对象并说,我想与对象一起返回一个附加参数,我该如何实现它?在下面的示例中,我如何返回 'isExists'?
public Product GetProduct()
{
---
----
bool isExists = true
return new Product();
}
我不想将该参数添加为产品类中的属性。
非常感谢您对此的任何帮助!
谢谢, 坎
我有一个 GetProduct 方法,它返回一个产品对象并说,我想与对象一起返回一个附加参数,我该如何实现它?在下面的示例中,我如何返回 'isExists'?
public Product GetProduct()
{
---
----
bool isExists = true
return new Product();
}
我不想将该参数添加为产品类中的属性。
非常感谢您对此的任何帮助!
谢谢, 坎
您可以使用 out 参数:
public Product GetProduct (out bool isExists)
{
isExists=true;
return new Product();
}
和电话是这样的:
bool isExists;
Product p = GetProduct (out isExists)
尽管在我看来这isExists
是您可能希望在 Product 类中拥有的那种属性...
一种方法是像这样修改你的方法:
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
几个建议:
看一下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());
}