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

いくつかの提案:

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と呼ばれる 1 つの定義済み .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 に答える
0

1 つの方法は、次のようにメソッドを作り直すことです。

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 に答える