您所在的位置: 首页>>读书频道>>设计开发>>.Net系列>>

4.5.3 输出参数(out)

http://book.51cto.com  2008-07-19 13:27  (美)米凯利斯(Michaelis, M.)著/周靖译  人民邮电出版社  我要评论(0)
  • 摘要:《C#本质论》第4章方法和参数,这一章讨论了如何将语句组合成一个方法,除此之外,还讨论了如何调用一个方法,其中包括如何将数据传给方法以及从方法中接收数据,本小节为大家介绍输出参数(out)。
  • 标签:C#  本质论  参数  C#本质论

4.5.3 输出参数(out)

除了将参数单向传入一个方法(传值),或者同时将参数传入和传出一个方法(传引用)之外,还可以将数据从一个方法内部单向传出方法。为此,代码需要使用关键字out来修饰参数类型。例如代码清单4-13的GetPhoneButton()方法,它能返回与一个字符对应的电话按键。

代码清单4-13 仅传出的变量

 class ConvertToPhoneNumber
{
static int Main(string[] args)
{
char button;
      if(args.Length == 0)
{
Console.WriteLine(
"ConvertToPhoneNumber.exe <phrase>");
Console.WriteLine(
"'_' indicates no standard phone button");
return 1;
}
foreach(string word in args)
{
foreach(char character in word)
{
if(GetPhoneButton(character, out button))
{
Console.Write(button);
}
else
{
Console.Write('_');
}
}
}
Console.WriteLine();
return 0;
}

static bool GetPhoneButton(char character, out char button)
{
bool success = true;
switch( char.ToLower(character) )
{
case '1':
button = '1';
break;
case '2': case 'a': case 'b': case 'c':
button = '2';
break;
case '3': case 'd': case 'e': case 'f':
button = '3';
break;
case '4': case 'g': case 'h': case 'i':
button = '4';
break;
case '5': case 'j': case 'k': case 'l':
button = '5';
break;
case '6': case 'm': case 'n': case 'o':
button = '6';
break;
case '7': case 'p': case 'q': case 'r': case 's':
button = '7';
break;
case '8': case 't': case 'u': case 'v':
button = '8';
break;
case '9': case 'w': case 'x': case 'y': case 'z':
button = '9';
break;
case '*':
button = '*';
break;
case '0':
button = '0';
break;
case '#':
button = '#';
break;
case ' ':
button = ' ';
break;
case '-':
button = '-';
break;
default:
// Set the button to indicate an invalid value
button = '_';
success = false;
break;
}
return success;
}
}

输出4-7展示了代码清单4-13的结果。

输出4-7

>ConvertToPhoneNumber.exe CSharpIsGood
274277474663

在这个例子中,假如能成功判断与一个字符对应的电话按键,GetPhoneButton()方法就返回true。方法还会使用被声明为out的button参数来返回对应的按钮。

如果一个参数被标记为out,编译器就会核实方法内的所有代码路径是否都设置了该参数。例如,假定在某个代码执行路径中,没有对button进行赋值,编译器就会报告一个错误,指出代码没有对button进行初始化。在代码清单4-13中,方法最后将"_"值赋给button,因为即使它无法判断正确的电话按键,也必须对button进行赋值。

【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节
C#实用基础教程
C#技术开发指南
深入Vista应用程序开发
Ruby on Rails 社区网站开发
ASP.NET从入门到精通
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有