暂时无题

还没想到

2008年11月21日 #

一个方法返回多个值的解决方法

刚才看到园子里一个兄弟讨论一个方法返回多个值的问题。 在开发过程中,总会遇到这个问题。这里说一下其他的解决方法。当然,这些方法是前人总结出来的,我只是拿来主义而已。

一、如果返回值类型相同的话,可以返回一个数组

    public int[] ReturnMultiValue()
    
{
        
int[] retvalue = new int[2];
        
//进行一些操作,把多个值存入int数组
        return retvalue;
    }

    
//可以这样使用
    int[] values=ReturnMultiValue();
    
int a=values[0];
    
int b=values[1];

 二、如果返回的值类型不同,可以使用Hashtable:

 public Hashtable ReturnMultiValue()
    
{
        Hashtable retvalue 
= new Hashtable();
        
//进行一些操作,把多个值存入Hashtable
        
//retvalue["xxx"] = value1;
        
//retvalue["yyy"] = value2;
        return retvalue;
    }

    
//可以这样使用
    Hashtable values = ReturnMultiValue();
    Type1 type1 
= (Type1)(values["xxx"]);
    Type2 type2 
= (Type2)(values["yyy"]);

 

 三、我最喜欢的方法:把要返回的结果封装到一个结果类里面,然后在方法内部new一个结果类,赋值并返回。
    当然封装成结构也可以,看你怎么用了。

 

//结果类
public class Result
{
    
private int value1;

    
public int Value1
    
{
        
get return value1; }
        
set { value1 = value; }
    }

    
private string vlaue2;

    
public string Vlaue2
    
{
        
get return vlaue2; }
        
set { vlaue2 = value; }
    }

    
private User value3;//也可以是自定义类型

    
public User Value3
    
{
        
get return value3; }
        
set { value3 = value; }
    }

}


public class Test
{
    
public Result ReturnMultiValue()
    
{
        Result retvalue 
= new Result();
        
//进行一些操作,把多个值存入结果类
        
//retvalue.Value1 = value1;
        
//retvalue.Value2 = value2;
        
//retvalue.Value3 = value3;
        return retvalue;
    }

    Result values 
= ReturnMultiValue();
    
int value1 = values.Value1;
    
string value2 = values.Value2;
    User value3 
= values.Value3;
    
}

(注:文章里的代码只是为了说明思路,随手写的,并不能真正运行。)

posted @ 2008-11-21 10:46 张少峰 阅读(1234) 评论(8) 编辑

值类型与引用类型

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    
class Program
    
{
        
static void Main(string[] args)
        
{
            
int a = 444;
            
//New一个列表
            List<int> ll = new List<int>();
            
//初始化列表数据,以便测试
            for (int i = 6; i >0; i--)
            
{
                ll.Add(i);
            }

            
//把a添加到列表最后
            ll.Add(a);
            
//输出
            Console.WriteLine("(改变a的值前)a=" + a);
            Console.Write(
"(改变a的值前)ll列表:");
            
foreach (int i in ll)
                Console.Write(i.ToString() 
+ ",");
            Console.WriteLine();
            
//改变a的值
            a = 2;
            
//输出
            Console.WriteLine("(改变a的值后)a=" + a);
            Console.Write(
"(改变a的值后)ll列表:");
            
foreach (int i in ll)
                Console.Write(i.ToString() 
+ ",");
            Console.WriteLine();

            List
<int> kk = new List<int>();
            kk 
= ll;
            kk.Add(
777);

            Console.Write(
"(给kk列表添加一个值后)ll列表:");
            
foreach (int i in ll)
                Console.Write(i.ToString() 
+ ",");
            Console.WriteLine();
            Console.Write(
"(给kk列表添加一个值后)kk列表:");
            
foreach (int i in kk)
                Console.Write(i.ToString() 
+ ",");
            Console.WriteLine();
            kk.Sort();
            Console.Write(
"(kk列表排序后)ll列表:");
            
foreach (int i in ll)
                Console.Write(i.ToString() 
+ ",");
            Console.WriteLine();
            Console.Write(
"(kk列表排序后)kk列表:");
            
foreach (int i in kk)
                Console.Write(i.ToString() 
+ ",");
            Console.WriteLine();
            Console.ReadKey();
        }

    }

}

posted @ 2008-11-21 09:05 张少峰 阅读(26) 评论(0) 编辑

导航

统计信息

News