黑马程序员-------.net基础知识五
方法(函数)
作用:用来重复代码,当我们在一个过程中反复的写了同样的代码,一般情况下,我们就可以把需要重复写的代码定义在方法中,用的时候只需调用即可
语法:
[访问修饰符][static] 返回值类型 方法名([参数])
{
方法体; //一般情况下,方法定义在类中。
}
关于方法的调用:如果是在静态方法(static修饰的)则使用,类名.方法名();在类中调用本类的方法,可以只写方法名();
注:[ ]中的都可以省略不写,但是用处不同,当没有写访问修饰符时,默认为private。当没有返回值时,返回值类型用void代替。
例:判断用户输入的是否为数字的方法。
- public static int ReadInt() //定义一个返回值类型为int的ReadInt方法。
- {
- int num = 0;
- do
- {
- try
- {
- num = Convert.ToInt32(Console.ReadLine());//接受用户输入的数字
- return num; //当用户输入合法,返回值
- }
- catch
- {
- Console.WriteLine("输入有误,请重新输入!");//当用户输入有误时,输出这句话。
- }
- }
- while(true);
- }
局部变量:在方法中定义的变量叫局部变量,其作用域从定义开始,到其所在大括号结束为止。
参数(形式参数)
例:
- public static void PrintSum(int x,float y) //定义了一个为int类型的变量x和一个float类型的变量y
- {·····}
注:形参是声明在方法的参数列表中的,而不是方法体中的本地变量。如果一个方法一旦有一个参数,那么调用者就必须传参数,并且传参数的个数与对应位置上的类型须一致
定义数组参数的语法:
[访问修饰符] [static] 返回值类型 方法名(params int [ ] 数组名)
例:
- public static void Sum(params int [] sscore)
返回值
方法可以向调用代码返回一个值,返回的值被插入到调用代码中发起调用的表达式所在的位置。
注:要返回值,方法必须在方法名前声明一个返回类型,如果方法不返回值,他必须声明void返回类型。
例:
- int number(){...} //定义了一个需要返回int类型的方法。
- void number(){...}//定义了一个不许要返回值的方法。
而声明了有返回类型的方法则须使用return来返回值。
例:
- //写一个让用户判断y或n的方法。
- public static string ReadAnswer()//定义一个返回值为string的ReadAnswer的方法。
- {
- string answer = "";
- do
- {
- answer = Console.ReadLine();
- if (answer != "Y" && answer != "N")
- {
- Console.WriteLine("你的输入有误请重新输入!");
- }
- }
- while (answer != "Y" && answer != "N");//如果用户输入的不是Y或者N则一直循环提示,如果是Y和N则跳出循环。
- return answer; //返回值。
- }
方法的重载
一般在同一个类中,方法名相同,并且方法的参数的个数不同或者对应位置上的类型不同,才能构成方法的重载。
注:方法重载和返回值没有关系。
例:
- public static void SayHello(string name )
- {
- Console.WriteLine("我是{0}",name);
- }
- public static void SayHello(int age)
- {
- Console.WriteLine("我今年{0}岁了。",age);
- }
out 和ref
方法只能返回一个值,当需要返回多个值的时候,我们就要用利用out和ref来返回多个值.
注意:使用ref前必须对变量赋值,out不用。
out的函数会清空变量,即使变量已经赋值也不行,退出函数时所有out引用的变量都要赋值,ref引用的可以修改,也可以不修改。
例:
- static void outTest(out int x, out int y)
- {
- //离开这个函数前,必须对x和y赋值,否则会报错。
- //y = x;
- //上面这行会报错,因为使用了out后,x和y都清空了,需要重新赋值,即使调用函数前赋过值也不行
- x = 1;
- y = 2;
- }
- static void refTest(ref int x, ref int y)
- {
- x = 1; y = x;
- }
- static void Main(string[] args)
- {
- int a,b; //out使用前,变量可以不赋值
- outTest(out a, out b);
- Console.WriteLine("a={0};b={1}",a,b);
- int c=11,d=22;
- outTest(out c, out d);
- Console.WriteLine("c={0};d={1}", c, d);
- int m,n;
- //refTest(ref m, ref n);
- //上面这行会出错,ref使用前,变量必须赋值
- int o=11,p=22;
- refTest(ref o, ref p);
- Console.WriteLine("o={0};p={1}",o,p);
- }
黑马程序员-------.net基础知识五的更多相关文章
- 黑马程序员_JAVA基础知识总结3
------- android培训.java培训.期待与您交流! ---------- Java源文件的扩展名是.java,编译之后生成.class的文件.所有的类都有一个共同的继承祖先Object类 ...
- 黑马程序员_JAVA基础知识总结2
------- android培训.java培训.期待与您交流! ---------- IDE ---> Itegrity Development Environment Java EE --- ...
- 黑马程序员-------.net基础知识四
常量(静态常量------compile-time) 语法:const 类型 常量名 =常量值: 例: [csharp] view plaincopyprint? { const double PI= ...
- 黑马程序员-------.net基础知识二
变量 变量代表着一块内存空间,我们可以通过变量名称想内存存/取数据,有变量就不需要我们记忆复杂的内存地址. 向内存中申请一块内存空间的语法: 数据类型 变量名; 变量类型 变量类型 存储位置 自动 ...
- 黑马程序员-------.net基础知识三
条件执行语句 if 语句 语法: [csharp] view plaincopyprint? if(条件) { 语句1;语句2:语句3: ··· } 执行过程: 先判断条件是否为true ,如果为tr ...
- 黑马程序员-------.net基础知识一
一 初识.net .net是一种多语言的编程平台,可以用多达几十种的语言来进行开发,而C#就是基于.net平台的其中一种开发语言. 它的特点是: ⒈多平台:该系统可以在广泛的计算机上运行,包括从服务 ...
- 黑马程序员+SQL基础(上)
黑马程序员+SQL基础 ---------------<a href="http://edu.csdn.net"target="blank">ASP ...
- 黑马程序员+Winform基础(上)
黑马程序员+Winform基础 ---------------<a href="http://edu.csdn.net"target="blank"> ...
- 黑马程序员_Java基础视频-深入浅出精华版--PPT 文件列表
\day01\code\第一章_Java概述.ppt;\day01\resource\资料\50道编程题(有精力的同学看看).doc;\day01\resource\资料\Sun_Java程序员认证考 ...
随机推荐
- shell 中函数放回字符串问题
shell 中函数放回字符串问题 shell 中不可以直接 return 字符串 ,可以return 数字.如果要return 字符串 改为 echo "hello world" ...
- linux 内核 编绎配制选项详解
http://blog.sina.com.cn/s/blog_8308bc810102ux0j.html
- ecto注册码
First name: Good Last name: Life Serial: ecto_at585-RP00-MP3F-VB8R-L82N-N0CC First Name: The Last ...
- 做一款仿映客的直播App?看我就够了
来源:JIAAIR 链接:http://www.jianshu.com/p/5b1341e97757 一.直播现状简介 1.技术实现层面: 技术相对都比较成熟,设备也都支持硬编码.IOS还提供现成 ...
- update 改写 merge into
update语句改写成merge into有时会提高运行速度 看两个案例 1.根据业务将两个嵌套子查询改写成max,速度有3min提升到3s UPDATE OPER_792.LL_SCB_YDKB_2 ...
- "ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效"的快速解决方法
引自:http://hi.baidu.com/fynaa/item/c2978952d8d542dfd48bacf6 讲了一大堆: 综合下: 解决方案:select session_id from v ...
- (转)Asp.NetURL重写的一种方法
说到不用设置iis,主要是为了实现在虚拟主机或是拿不到iis操作限的时候,不能添加isap又想实现类似于静态化的程序实现方式,先声明,这里最终要实现的效果是,最终可以用 12345.html 替换 s ...
- linux mysql 安装(rpm)
linux上安装mysql, 就需要两个文件, xx.client.xx.rpm和 xx.server.xx.rpm 如 MySQL-client-community-5.1.72-1.rhel5.i ...
- c#调用c++ dll(一)
首先来说说c++中的dll 核心的一些知识 比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作.可能存在一些模块的功能较为通用,在构造其它软件系统时 ...
- Object-C类目(Category)
类目是Object-C中最有用的一个特性.实质上,类目允许你为一个已存在的类添加一些方法而不用子类化该类,也不需要你了解该类的实现细节. 这是特别有用的,因为你可以给一个内建的对象添加方法.当你想在你 ...