函数想返回多个值, 该怎么办
首要条件是容易读懂
比如getCredentials()这个函数要返回username,password这两个值, 该用什么方法最好(花最少的代价读懂)
已知方法:
函数值作为数组传回(可能需要看函数内容来看返回值)
把这些函数值的这种组合封装成一个类(需要看这个类来了解怎么取返回值)
传入引用(仅仅为了返回值传入参数)
全局变量(如果有好的理由用全局变量, 请指教)
有没有别的方法?
------解决方案--------------------如果只是返回2个值,那么就返回一个KeyValuePair<string,string>类型的键值对
------解决方案--------------------需要看这个类来了解怎么取返回值?????
为啥需要看这个类才知道呢??微软这个框架那么多方法都提供这样的返回,按你说滴,我要去看这个类还要了解,那我们得学到何年何月去来着。
------解决方案--------------------你返回一个数组不就行了。不过话说回来,一般不这么做,按照你的需求,应该自己封装一个 User 类最为妥当。
简单的话用数组,比较有扩展型,万一你以后要返回 3 个,也不用改。
public string[] GetUserNameAndPswd(...)
{
// ......
return new string[] { userName, password };
}
------解决方案--------------------直接返回一个DataTalbe,需要哪个值就直接取里面的那个值,OK?
eg:
string PN80, PN, Customer,;
PN80 = ds.Tables["[Sheet1$]"].Rows[i]["PN80"].ToString().Trim();
PN = ds.Tables["[Sheet1$]"].Rows[i]["PN"].ToString().Trim();
Customer = ds.Tables["[Sheet1$]"].Rows[i]["Customer"].ToString().Trim();
------解决方案--------------------C# code
namespace System.ServiceModel.Security
{
// 摘要:
// 表示基于用户名和密码的客户端凭据。
public sealed class UserNamePasswordClientCredential
{
// 摘要:
// 获取或设置密码。
//
// 返回结果:
// 密码。
public string Password { get; set; }
//
// 摘要:
// 获取或设置用户名。
//
// 返回结果:
// 用户名。
public string UserName { get; set; }
}
}