为c#类对象分配一个额外的参数
本文关键字:一个 参数 对象 分配 | 更新日期: 2023-09-27 18:05:57
我有一个方法GetProduct,它返回一个产品对象,并说,我想与对象一起返回一个额外的参数,我如何实现它?在我下面的例子中,我如何返回'isExists '?
public Product GetProduct()
{
---
----
bool isExists = true
return new Product();
}
我不想在产品类中添加这个参数作为属性。
任何帮助在这是非常感激!
谢谢,菅直人
您可以使用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());
}