黑马程序员 自学14C#编程基础之方法重载与out
2014-04-16 23:20
309 查看
-------
Windows Phone 7手机开发、.Net培训、期待与您交流! -------
“可以定义同名方法,但参数类型要不同。编译器会根据不同的参数选择不同的方法(方法的重载)。”
注意:方法重载与返回值无关。只看参数(参数相同,类型相同//方法名不同,绝不可重载)
方法名要相同,参数是一一对应的关系。
ps 任意类型都可以转换成object类型。
思考:方法只能返回一个值,当需要返回多个值时怎么办?
eg:写一个方法,计算一个int类型数组中每个元素的总和和最大值最小值。
传一组数组的时候,类型必须相同。
除了返回值可以返回,还可以通过参数来返回,参数默认是只传递的。
{
……
Test( out 参数);
}
……Test(out 参数)
{……}
通过参数来返值。
Out+参数 → out+参数(这里对参数必须赋值才能传回)
Class Program;
{
Static void Main(string[]args)
{
Int number;
Int result = Test(out number); //这里没赋值就使用,实际上”out int a”对number已经赋值了
Console.WriteLine=(number={0},result={1},number,result);
Console.ReadKey();
}
Static int Test(out int a)
{
a=10;//Must赋值
a=a+1;
return 200;
}
如上代码:
实现步骤:
1. 在方法的参数类型前加out,那么传参数的时候,也必须在number前加out。表明这个参数不是单向传入的,而是用来双向传输的。(可是传入无意义,因为未赋值的a是不能在没接收number的值后拿来使用)
eg:
int number;
Test(out number);
…………
Static void Test(out a)
{
Int b=a;//这属于未赋值,不能使用,错误的。
……
}
如果对number赋值了,可以传入,无意义:
intnumber=100;
Test(out number);
…………
Static void Test(out a)
{
a=10;
a=a+1;
……
}
Out就是用来传出数据的。
2. 若参数就是以out形式传入,那么在传入前就可以不赋初值。
3. 在方法中对于由out传入的参数,必须赋值,并且必须在使用前赋值。(a=10;a=a+1;)
Int TryParse();把字符串转换成一个int类型的方法。
↑这个整体为bool类型。()内填入: 要转换的字符串 ,out+要输出的int变量名 eg:s,out re
string s=”123”;
//int.Parse(s);→直接转换,如果string无法转换,则异常。
//int.TryParse(s);→先检测后转换,bool类型。
Int re;
If(int.TryParse(s,out re))//==true
{
Console.WriteLine(“能转换成功,转换后的数为:”+re);
}
else//(TryParse==false转换失败)
{
…………
}
Test1.写一个方法MyParse,实现:
1. 用户传入两个参数( 1)传转换的字符串,int类型;2)转换成功后的返值。)
2. 转换成功返值:true,转换结构通过参数返回。
若此方法,用户传入的参数不能转换,则方法返回:false,结果=0(参数无意义,在方法中随意赋值返回)
Ps:若实现某功能代表不能用该功能语句来做。
练习二:
练习三:
练习四:
其他:
-------
Windows Phone 7手机开发、.Net培训、期待与您交流! -------
Windows Phone 7手机开发、.Net培训、期待与您交流! -------
方法的重载
2014/4/7“可以定义同名方法,但参数类型要不同。编译器会根据不同的参数选择不同的方法(方法的重载)。”
什么是方法的重载
一般在同一个类中,方法名相同,并且方法的参数的个数不同,或者对应位置上的类型不同,才能构成方法的重载。注意:方法重载与返回值无关。只看参数(参数相同,类型相同//方法名不同,绝不可重载)
方法名要相同,参数是一一对应的关系。
ps 任意类型都可以转换成object类型。
思考:方法只能返回一个值,当需要返回多个值时怎么办?
eg:写一个方法,计算一个int类型数组中每个元素的总和和最大值最小值。
传一组数组的时候,类型必须相同。
除了返回值可以返回,还可以通过参数来返回,参数默认是只传递的。
Out
……Main(){
……
Test( out 参数);
}
……Test(out 参数)
{……}
通过参数来返值。
Out+参数 → out+参数(这里对参数必须赋值才能传回)
Class Program;
{
Static void Main(string[]args)
{
Int number;
Int result = Test(out number); //这里没赋值就使用,实际上”out int a”对number已经赋值了
Console.WriteLine=(number={0},result={1},number,result);
Console.ReadKey();
}
Static int Test(out int a)
{
a=10;//Must赋值
a=a+1;
return 200;
}
如上代码:
实现步骤:
1. 在方法的参数类型前加out,那么传参数的时候,也必须在number前加out。表明这个参数不是单向传入的,而是用来双向传输的。(可是传入无意义,因为未赋值的a是不能在没接收number的值后拿来使用)
eg:
int number;
Test(out number);
…………
Static void Test(out a)
{
Int b=a;//这属于未赋值,不能使用,错误的。
……
}
如果对number赋值了,可以传入,无意义:
intnumber=100;
Test(out number);
…………
Static void Test(out a)
{
a=10;
a=a+1;
……
}
Out就是用来传出数据的。
2. 若参数就是以out形式传入,那么在传入前就可以不赋初值。
3. 在方法中对于由out传入的参数,必须赋值,并且必须在使用前赋值。(a=10;a=a+1;)
Int TryParse();把字符串转换成一个int类型的方法。
↑这个整体为bool类型。()内填入: 要转换的字符串 ,out+要输出的int变量名 eg:s,out re
string s=”123”;
//int.Parse(s);→直接转换,如果string无法转换,则异常。
//int.TryParse(s);→先检测后转换,bool类型。
Int re;
If(int.TryParse(s,out re))//==true
{
Console.WriteLine(“能转换成功,转换后的数为:”+re);
}
else//(TryParse==false转换失败)
{
…………
}
Test1.写一个方法MyParse,实现:
1. 用户传入两个参数( 1)传转换的字符串,int类型;2)转换成功后的返值。)
2. 转换成功返值:true,转换结构通过参数返回。
若此方法,用户传入的参数不能转换,则方法返回:false,结果=0(参数无意义,在方法中随意赋值返回)
Ps:若实现某功能代表不能用该功能语句来做。
练习:
练习一:/*写一个MyTryParse方法,要求用户传入一个字符串,如果这个字符串能够转换成int类型,则方法返回true,并且转换后的int类型数据通过方法的参数传出; 如果字符串不能转换成int类型,则方法返回false,那么out传出的参数将没有意义,在方法中让参数随意赋值。=0*/ static void Main(string[] args) { #region int.TryParse(s,int string)功能的实现//此方法用put参传回对输入字符串的处理结果,用返回值传回是否转换。 Console.WriteLine("请随意输入"); Console.Write("在此输入:"); string u = "0"; string accept = change(out u); if (accept == "true") { Console.WriteLine(accept); Console.Write("刚刚输入的内容可以转换为数字→" + u); } else { Console.WriteLine(accept); Console.Write("您输入的{0}无法转换为数字", u); } Console.ReadKey(); } public static string change(out string accept) { string input = Console.ReadLine(); try { int accept1 = int.Parse(input); accept = Convert.ToString(accept1); string result = "true"; return result; } catch { accept = input; bool result = false; string re = Convert.ToString(result); return re; } }
练习二:
#region 第二种写法 标准答案 static void Main(string[] args) { Console.WriteLine("请随意输入"); Console.Write("在此输入:"); string u = Console.ReadLine(); int result; bool accept = MyTryParse(u, out result); if (accept) { Console.WriteLine(accept); Console.Write("你输入的内容可以转换为数字→" + result); } else { Console.WriteLine(accept); Console.Write("你输入的内容无法转换为数字→" + u); } Console.ReadKey(); } public static bool MyTryParse(string u, out int result) { bool accept = true; try { result = int.Parse(u); } catch { result = 0; accept = false; } return accept; } #endregion
练习三:
#region 第三种写法 不符合题目要求,单纯用传参和返回值,没有out参 static void Main(string[] args) { Console.WriteLine("请随意输入"); Console.Write("在此输入:"); string u = Console.ReadLine(); bool accept = MyTryParse(u); if (accept == true) { Console.WriteLine(accept); Console.Write("刚刚输入的内容可以转换为数字→" + u); } else { Console.WriteLine(accept); Console.Write("您输入的{0}无法转换为数字", u); } Console.ReadKey(); } public static bool MyTryParse(string u) { try { int accept1 = int.Parse(u); string accept = Convert.ToString(accept1); bool result = true; return result; } catch { bool result = false; return result; } } #endregion #endregion
练习四:
#region int.TryParse((string),out(int)); static void Main(string[] args) { Console.WriteLine("请随意输入"); Console.Write("在此输入:"); string u = Console.ReadLine(); int result; if (int.TryParse(u, out result)) { Console.WriteLine("你刚刚输入的可以转换为数字→" + result); } else { Console.WriteLine("你刚刚输入的数字不能转换成数字"); } Console.ReadKey(); } #endregion
其他:
#region Console.WriteLine("请随意输入"); Console.Write("在此输入:"); string u = Console.ReadLine(); bool accept = MyTryParse(u); if (accept == true) { Console.WriteLine(accept); Console.Write("刚刚输入的内容可以转换为数字→" + u); } else { Console.WriteLine(accept); Console.Write("您输入的{0}无法转换为数字", u); } Console.ReadKey(); } public static bool MyTryParse(string u) { try { int accept1 = int.Parse(u); string accept = Convert.ToString(accept1); bool result = true; return result; } catch { bool result = false; return result; } #endregion
int digital=100; int accept = Test(out digital); } public static int Test(out int accept) { //int b = accept;赋值之前不可以使用 因为out只能传出,传入的值无法用。 accept = 10; Console.WriteLine(accept); return 10; } }
-------
Windows Phone 7手机开发、.Net培训、期待与您交流! -------
相关文章推荐
- 黑马程序员 自学12C#编程基础之方法调用
- 黑马程序员_c#基础知识学习笔记:方法重载和out,ref传参
- 黑马程序员 自学05C#编程基础之关系运算符与逻辑运算符
- javaSE基础编程——方法的重载(汽车类)
- 黑马程序员 自学06C#编程基础之循环(此文无for循环)
- 黑马程序员-----java基础五(方法的重载与重写)
- 黑马程序员 自学07C#编程基础之for循环
- 【C#基础】方法及其调用、构造方法、out与ref参数及其返回值、方法重载、静态方法等简单介绍
- 【C#基础】方法及其调用、构造方法、out与ref参数及其返回值、方法重载、静态方法等简单介绍
- 黑马程序员 自学13C#编程基础之返回值
- 黑马程序员 自学10C#编程基础之结构和数组
- 黑马程序员 自学15C#编程基础之ref与质数
- 黑马程序员 自学08C#编程基础之循环复习
- 黑马程序员——自学笔记4(方法的重写和重载以及修饰符权限)
- 黑马程序员_C#基础之方法重载总结
- 黑马程序员 自学09C#编程基础之break continue 枚举
- 黑马程序员 自学16C#编程基础之飞行棋
- 黑马程序员 自学02C#编程基础之变量
- 黑马程序员--OC自学笔记---03类方法、匿名类、封装、关系、重载、static
- 黑马程序员 自学01C#编程基础之基本概念