这一篇,我们来学习C#中的方法——函数

1.  方法的功能

   方法的功能:用来复用代码的,当我们在一个程序中反复的写了同样的代码,我们就可以把需要重复写的代码定义在一个方法中,用到的时候只需要调用就可以了。这样做也是对代码的封装。

  定义方法的语法:

  [访问修饰符] [static] 返回值类型 方法名([参数列表])

  { 方法体; }

  在方法中定义的变量称为局部变量,其作用域从定义开始,到其所在的大括号结束为止。

2.  要注意的地方

  1. 方法可以拥有一个或多个参数,或者没有任何参数。参数列表中的参数相当于方法中的局部变量。

   2. 如果方法没有返回值的话,返回值类型为void,每个方法只有一个返回值(如果要返回多个值,可以返回一个数组或者通过参数来返回);但构造方法和析构方法例外,不允许有任何返回值。

   3. 方法中只要遇到return,如果返回值为void类型则立即退出方法;如果返回值为非void类型,则会返回一个与返回值类型相同的值。如果try…cathy…finally,在try里面若遇到return,finally依然会执行。

   4. 方法的功能要单一。

3.  方法返回多个值的例子

   a) 用数组返回多个值

    这种情况只适应于需要返回多个相同类型的值的时候;如果需要返回多个不同类型的值,这样做就不行了。

static int[] Sum(int numA, int numB)
{
int sum = numA + numB;
int sub = numA - numB;
int[] arrRes = new int[];
arrRes[] = sum;
arrRes[] = sub;
return arrRes;
}

b)用out关键字创建输出参数,我们可以在一个方法中返回多个不同类型的值

  因为使用out修饰参数后,传递的是参数的地址,所以我们对形参进行的修改会影响到实参。

在调用方法时候,假如实参对应的形参有被out修饰,那么在实参前面也要加上out修饰。

  如果在方法内,没有对被out修饰的参数进行赋值,则编译会报错:“ 离开当前方法之前必须对 out 参数赋值 ”。

            int numA = , numB = ;
int sum, sub;
sum = Test(numA, numB, out sub);//通过参数来返值
Console.WriteLine("sum = {0} sub = {1}", sum, sub);
//sum = 17 sub = 3 static int Test(int a, int b,out int sub)
{
//在没有对sub进行赋值之前,不能使用它
//sub += 1; 错误,使用了未赋值的 out 参数“sub”
//sub = 1; 正确,为sub赋值
sub = a - b; int sum = a + b;
return sum;
}

  c) out 与 ref 的区别:

   out 只有传出的功能,在方法内必须赋值;

     ref 可以传入和传出,侧重传入,在调用方法前必须赋值,在方法内可以不赋值。

   通过ref,我们能够将一个变量带入一个方法中进行改变,改变完成后,再将改变后的值带出方法。

     C#通过ref这个关键字,屏蔽了C++中的指针

            int x = , y = ;
int mul = ;
Fun(x, y, ref mul);
Console.WriteLine("mul = {0}", mul);
// mul = 6 static void Fun(int x,int y, ref int mul)
{
mul = x * y;
}

4.  方法中的可变参数

  Console.WriteLine(“a = {0}, b = {1}” ,  0 , 1) 中可以允许有多个参数。

  public static void WriteLine(string format, params object[] arg);

  上面方法中的两个参数接受的值分别是:“a = {0}, b = {1}” , 一个object类型的数组 arg={0,1}

  params 的作用就是将多个参数组合成一个数组怕;如果可变参数不传的话,可变参数就是一个长度为0的数组对象。

  被params 修饰的参数必须放在方法中参数列表的最右端

        static void Main(string[] args)
{
int[] arrAge = { , , , , , , };
ParamesTest("刘德华", arrAge);//可变参数可以直接传递数组对象进去
ParamesTest("刘德华", , , );//可变参数也可以单个的传递值
ParamesTest("刘德华");//可变参数可以不传,那么方法中的可变参数形参就是一个Length=0的数组对象
Console.ReadLine();
} static void ParamesTest(string name, params int[] ages)//可变参数必须放在方法参数列表的最后一个
{
Console.WriteLine("您好?~~{0}", name);
Console.WriteLine("ages==null:" + ages == null);
Console.WriteLine("ages.Length=" + ages.Length);
foreach (int age in ages)
{
Console.WriteLine("当前循环到的age=" + age);
}
Console.WriteLine();
}

  输出:

5.  方法的重载

  一般在同一个类中,方法名相同,方法的参数列表不同,才能构成方法的重载。

  注意:方法的重载与返回值没有关系。

  例如,Console.WriteLine的重载

  

    如何在编程过程中,查看一个方法有多少种重载?

  

  在输入方法名,输入左括号后,不要急着输入右括号,就会跳出这个函数的重载信息。这时按方向键中的“向上”和“向下”,就可以来查找我们需要的方法了。

.NET基础——方法的更多相关文章

  1. 在同一个Apache服务器软件上部署多个站点的基础方法

    这篇文章主要介绍了Apache中Virtual Host虚拟主机配置及rewrite模块中的重要参数说明,是在同一个Apache服务器软件上部署多个站点的基础方法,需要的朋友可以参考下(http:// ...

  2. CodeBlocks(17.12) 代码调试基础方法&快捷方式

    转载:CodeBlocks(17.12) 代码调试基础方法&快捷方式: https://www.cnblogs.com/DCD112358/p/8998053.html

  3. Python_Mix*re模块基础方法,进阶,正则表达式的使用

    re模块import re 基础方法 findall:匹配所有 ,每一项都是列表中的一个元素,返回的是列表 search只匹配从左到右的第一个,得到的不是直接的结果,而是一个变量,通过这个变量的gro ...

  4. RF实现多次失败重跑结果合并的基础方法和优化方法

    实现思路:通过分次执行失败案例重跑,然后通过结果文件合并命令实现多次失败重跑结果文件的合并,并输出合并后的log和report文件: 说明:具体失败案例重跑命令和结果文件合并命令请参考本博客其他相关章 ...

  5. Java基础-方法(method)的应用

    Java基础-方法(method)的应用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 方法就是定义在类中,具有特定功能的一段小程序,方法也称为函数(function),方法可以接 ...

  6. 实现同时提交多个form(基础方法) 收集

    实现同时提交多个form(基础方法) 收集 分类: 1.2-JSP 1.3-J2EE 1.1J2se 1.0-Java相关2011-12-01 20:59 1644人阅读 评论(0) 收藏 举报 bu ...

  7. java发送邮件基础方法(另附部分主流邮箱服务器地址、端口及设置方法)

    java发送邮件基础方法,可通过重载简化参数 import java.io.File; import java.io.UnsupportedEncodingException; import java ...

  8. 【JavaScript】数组方法之基础方法

    数组方法之基础方法 Array 对象属性 属性 描述 constructor 返回对创建此对象的数组函数的引用. length 设置或返回数组中元素的数目. prototype 使您有能力向对象添加属 ...

  9. Java基础——方法的调用

    Java基础--方法的调用     总结: 1. 在同一个类中-- 对于静态方法,其他的静态和非静态方法都可以直接通过"方法名"或者"类名.方法名"调用它. 对 ...

  10. 《Java基础——方法的调用》

    Java基础--方法的调用     总结: 1. 在同一个类中-- 对于静态方法,其它的静态和非静态方法都可以直接通过"方法名"或者"类名.方法名"调用它. 对 ...

随机推荐

  1. C++中出现的计算机术语2

    C-style strings(C 风格字符串) C 程序把指向以空字符结束的字符数组的指针视为字符串.在 C++ 中,字符串字面值就是 C 风格字符串.C 标准库定义了一系列处理这样的字符串的库函数 ...

  2. 等差数列6《MAC》

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXhzdGFycw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  3. struts2 <s: select 标签值

    JSP页面: <s:select label="家长导航"  value="id" name="navson.pid" list=&q ...

  4. php-fpm介绍及配置

    php-fpm是什么 全称是php fastcgi process manager即php fastcgi进程管理器,相比fastcgi静态的唤起cgi,fpm能根据访问的压力动态的唤起cgi进程和销 ...

  5. SQL面试题1

    SQL面试题 Sql常用语法 下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言 ...

  6. asp.net MVC2.0学习笔记

    asp.net;与mvc都是不可替代的:只是多一种选择:(解决了许多asp.net的许多缺点) model:充血模型.领域模型:很大程度的封装: 控制器:处理用户的交互,处理业务逻辑的调用,指定具体的 ...

  7. How feedback work for your improvement

    Why generally feedback is the perspective from others for some event. In China there is story,some k ...

  8. Jquery中获取iframe的代码方法

    父窗口中操作iframe:window.frames["iframeChild"].document //假如iframe的id为iframeChild 在子窗口中操作父窗口:wi ...

  9. C语言练习-学生信息管理系统

    题目要求: 学生信息管理系统struct studentInfo{ int id; char name[128]; int age; char sex; int c_score; int cpp_sc ...

  10. MVC UnitOfWork EntityFramework架构

    MVC UnitOfWork EntityFramework架构,网站速度慢的原因总结! 最近参考使用了郭明峰的一套架构来做新的项目架构,这套架构看起来还是不错的,先向小郭同学的分享精神致敬! (郭同 ...