1

このクラスからさらに 2 つの文字列を返したい場合、このクラスから文字列 Subject を返しています。どうすればよいですか??

文字列件名;

    public string getdata(string EmailFrom,string EmailTo, string EmailComment )
    {

        
        {

         
            scom.CommandType = CommandType.StoredProcedure;
           
           
            try
            {
                

                SqlDataReader rdr = scom.ExecuteReader();
                if (rdr.HasRows)
                {
                    while (rdr.Read())
                    {
                     

                    Subject = rdr["EmailSubject"].ToString();
                     
                         
                    
                    }
                }

                return Subject;
                 
4

7 に答える 7

3

「out」パラメータを使用できます。

var string1 = String.Empty;
var string2 = String.Empty;

public string MyMethod(out string string1, out string string2)
{
    string1 = "string1";
    string2 = "string2";
}

詳細については、out (C# リファレンス)を参照してください。

独自の DTO (データ転送オブジェクト) クラスを返すことができます。

class MyResult {
   string Property1 { get; set;}
   string Property2 { get; set;}
}


public MyResult MyMethod(){
    var result = new MyResult();
    result.Property1 = "string1";
    result.Property2 = "string2";
    return result;
}

DTO の詳細については、http: //en.wikipedia.org/wiki/Data_transfer_objectを参照してください。

于 2012-07-25T05:49:15.057 に答える
1

再調整されたパラメーターを気にしない限り、タプルを使用して複数のパラメーターを再調整できます。tuple.Item1, tuple.Item2, tuple.Item3

public Tuple<string, string, string> GetData()
{

Tuple<string, string, string> tuple = new Tuple<string, string, string>("1",
        "cat", "dog");
return tuple;
}
于 2012-07-25T05:56:43.620 に答える
1

クラスで型パラメータを使用する...例

static void FooClass(out int foo, out int bar)
{
    foo= (int)Math.Pow(2, 2);
    bar= (int)Math.Pow(3, 2);
}

List<String>また、Datareader の値を取得して List コレクションを返すために使用することもできます。

于 2012-07-25T05:49:25.100 に答える
1

これらは、利用可能なオプションです。

  1. ref または out キーワードを使用します。- .NET での ref パラメーターと out パラメーターの違い
  2. クラスまたは構造体を作成し、メソッドからクラスまたは構造体を返す
  3. .Net 4.0+ を使用している場合は、Tuple クラスを使用できます。- http://msdn.microsoft.com/en-us/library/system.tuple.aspx
于 2012-07-25T05:49:43.430 に答える
0

返したいプロパティを持つクラス/構造体を作成するか、文字列の列挙を返すことができます (例: a List<string>)

于 2012-07-25T05:50:18.470 に答える
0

のようなオブジェクトを作成します。

public class MailType
{
    string _subject=string.empty;
    string _string1=string.empty1;
    string _string2=string.empty2;

    public string Subject
    {
         get{
             return _subject;
         }
         set{
             _subject=value;
         }
    }

    public string String1
    {
         get{
             return _string1;
         }
         set{
             _string1=value;
         }
    }

    public string String2
    {
         get{
             return _string2;
         }
         set{
             _string2=value;
         }
    }
}

ループ内でこのクラスのオブジェクトを作成し、オブジェクトの Subject、String1、および String2 プロパティに値を格納し、関数からリストを返します: getdata..

于 2012-07-25T05:52:59.043 に答える
-1

メソッドから返す情報を表す 3 つのフィールドを含む型を定義する必要があります。メソッドのシグネチャを変更して、定義した型を返すよりも。内部から、取得したデータを使用してこの型のインスタンスを初期化し、それを返します。

残念ながら、最近の OO 言語は、言語レベルのメソッドから 2 つ (またはそれ以上) を返すことをサポートしていません。

于 2012-07-25T05:51:28.580 に答える