1

我现在从这个类返回字符串主题,如果我想从这个类返回两个字符串,我该怎么做?

字符串主题;

    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

您可以使用“输出”参数。

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

在类中使用类型参数...例如

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 回答
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 回答
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 属性中,并从函数中返回 List:getdata..

于 2012-07-25T05:52:59.043 回答
-1

您需要定义一个包含 3 个字段的类型,表示您希望从该方法返回的信息。比您更改方法的签名以返回您定义的类型。从内部,您使用获取的任何数据初始化此类型的实例并将其返回。

不幸的是,现代 OO 语言不支持从语言级别的方法返回两个(或更多)。

于 2012-07-25T05:51:28.580 回答