ここから本文です

VisualStudio2015(C#) 複数引数、複数戻値を必要とするメソッドをクラスにて作成...

han********さん

2017/4/2515:18:07

VisualStudio2015(C#)
複数引数、複数戻値を必要とするメソッドをクラスにて作成したいのですが
やり方がわかりません。
下記の方法でも間違いではないでしょうか?

public class A
{
public string strIn1{get; set;}
public string strIn2{get; set;}
public string strOut1{get; set;}
public string strOut2{get; set;}

public int TestA(db接続情報)
{
db接続情報を使いDBにあるテーブルからstrIn1,strIn2を抽出条件とし結果を取得
取得結果をstrOut1,strOut2に格納
return 1(正常)
}
}

------------------------
呼び出側
var a = new A();
a.strIn1 = '条件1';
a.strIn2 = '条件2';
int ret = a.TestA(db接続情報)
if (ret == 1)
{
string ret1 = a.strOut1;
string ret2 = a.strOut2;
}

宜しくお願いします。

閲覧数:
88
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

kkk********さん

2017/4/2623:24:57

複数引数 メソッドはカンマ区切りで複数の引数を取得できるのでこれは解決。

public int TestA(ConnectionInfo info,string strIn1,string strIn2)

問題は複数の値を返す方法。

1.返却用のクラスを用意しとく

public class A{public string strOut1{get; set;}public string strOut2{get; set;}}

のようなのを定義しておいて

public A TestA(ConnectionInfo info,string strIn1,string strIn2)

2.outパラメータを使う

pulic int TestA(ConnectionInfo info,string In1,string In2,out string out1,string out2)

だいたいこの2つが実装方法の候補となる。その他にも


3.DBから値を取得する方法が非接続型の場合(DataSetを使う方式)ならDataSet若しくはDataTableやDataRowなど既存のクラスをそのまま返却型にする

public DataTable TestA(ConnectionInfo info,string strIn1,string strIn2)

若しくはEntityFrameworkなら生成したEntityクラスを使う

4.C#7.0(VS2017)に移行して、複数の値を返す為に追加された文法であるTupleを使う

なんてのも考えられます。

  • 質問者

    han********さん

    2017/4/2705:45:31

    詳しいご解答ありがとうございます。大変な参考になりました。
    もう一点だけ…
    例では引数が2つだけですが10個位ある場合は、引数もクラス化して渡したほうが良いのだと思うのですが、そうすると引数用と返す値用にそれぞれクラスを作成すことになりますよね。
    それなら、例のようにメソッドと同じクラスにプロパティを作ってしまえと思った次第なのですが、通常はやらない手法でしょうか?

  • その他の返信(2件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ベストアンサー以外の回答

1〜1件/1件中

hrnさん

2017/4/2611:14:14

処理自体は間違いではないと思いますが、

>複数引数、複数戻値を必要とするメソッド
という条件は満たしてませんよ。
そもそも複数戻値というのがよくわかりませんが。。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる