王尼玛 发表于 2014-10-19 23:24

C#初级开发原创教程十二课 带参数的方法

本帖最后由 王尼玛 于 2014-10-24 01:17 编辑

大家好,我是王尼玛。今天起我给大家讲解C#开发教程,本次是第十二课。大家在课后有什么疑问可以跟帖留言,我会尽我所能来解答。毕竟众口难调,大家有什么建议也可以跟帖告诉我。
此教程为本人原创,转载请注明"吾爱汇编论坛王尼玛原创"
好了,废话不多说,开始今天的学习.

有朋友说不太明白我写的教程,其实编程这东西很简单,一个字,练!你光看我写的多半是一头雾水,因为你没实际跟着我讲的代码去操作,你要跟着我的代码敲,多敲代码,多练习我给的例子,再配合我例子后面的讲解,自然就明白我讲的是什么了.还不明白?跟帖问吧


1.如何定义带参方法
通过前面的学习,我们知道,类的方法是一个功能模块,其作用是"做一件事情",实现某一个独立的功能,可供多个地方使用.在现实生活中,你使用过榨汁机吗?榨汁机提供了一个很好的"榨汁"功能.如果你放进去的是苹果,榨出来的就是苹果汁,如果放进去的是草莓,榨出来的就是草莓汁,如果你同时放入两种水果,榨出来的就是苹果草莓汁.如果什么都不放,就没办法榨汁了!因此,在使用榨汁机时,你必须提供一个被榨的水果.再比如说,使用ATM机取钱时,我们肯定是先要输入取款金额,然后ATM机才会"吐出"纸币.方法中某种功能的实现依赖于我们给它的作用体,这时候在定义方法时就需要在括号中加入参数列表
结合前面学习过的无参方法,现在给出定义类的方法的一般格式

语法:
<访问修饰符> 返回类型 <方法名>(<参数列表>){
         //方法的主体
}其中:

[*]<访问修饰符>指该方法允许被访问调用的权限范围,只能是public,protected或private.其中public访问修饰符表示该方法可以被任何其他代码调用,另外i啊两种修饰符将在后续课程中陆续学习
[*]返回类型指方法返回值的类型.如果方法不返回任何值,它应该声明为void类型,C#对待 返回值要求很严格,方法返回值必须与所说明的类型相匹配.使用return关键字返回值.
[*]<方法名>是定义的方法的名字,它必须使用合法的标识符
[*]<参数列表>是传送给方法的参数列表.列表中各参数间以逗号分割,每个参数由一个类型和一个标识符名组成.参数列表的格式为数据类型 参数1,数据类型 参数2,....数据类型 参数n,其中n>=0
示例1:
public class StudentBiz
    {
      string[] name = new string;//学生姓名数组
      public void addName(string name)//有参方法
      {
            //增加学生姓名
      }
      public void showName()//无参方法
      {
            //显示全部学生姓名
      }
    }示例定义了一个学生信息管理类StudentBiz,包含学生姓名数组的属性,增加学生姓名的方法,其中方法addName(string name)实现学生姓名的增加,这里只有一个参数name

2.带参方法的调用
调用带参方法与调用无参方法的语法相同,但是在调用带参方法时必须传入实际参数的值
语法:
对象名.方法名(变量1,变量2,....,变量n);在定义方法和调用方法时,我们把参数分别称为形式参数和实际参数,简称形参和实参,形参是在定义方法的时候对参数的称呼,目的是用来定义方法需要传入的参数个数和类型.实参是在调用方法时传递给方法处理的实际的值
调用方法时,需要注意以下几点

[*]先实例化对象,再调用方法
[*]实参的类型,数量,顺序都要与形参一一对应

如下所示,示例2调用了addName()方法,添加了五名学生
示例2:public class TestAdd
    {
      static void Main(string[] args)
      {
            StudentBiz st = new StudentBiz();
            for(int i = 0;i<5;i++)
            {
                string newName = Console.ReadLine();
                st.addName(newName);//实参
            }
            st.showName();
      }
    }
3.带两个参数的方法
问题:
修改学生姓名,输入新旧姓名,进行修改并显示是否修改成功
分析:
在数组中查询到该学生,进行修改姓名.根据分析可以设计一个方法,通过传递两个参数(需要修改的姓名,新姓名)来实现,如示例3所示
示例3
public class StudentBiz
    {
      string[] name = new string;//学生姓名数组
      public void addName(string name)//有参方法
      {
            //增加学生姓名
      }
      public void showName()//无参方法
      {
            //显示全部学生姓名
      }
      public bool editName(string oldname,string newName)
      {
            bool find = false;
            //循环数组,找到姓名为oldName的元素,修改为newName
            for(int i = 0;i<name.Length;i++)
            {
                if(name.Equals(oldname))
                {
                  name = newName;
                  find = true;
                  break;
                }
            }
            return find;
      }
    }public class TestAdd
    {
      static void Main(string[] args)
      {
            //.....
            Console.WriteLine("请输入要修改的学生姓名");
            string oldName = Console.ReadLine();
            Console.WriteLine("请输入新的学生姓名");
            string newName = Console.ReadLine();
            Console.WriteLine("*****修改结果*****");
            if(string.editName(oldName,newName))//调用带两个参数的方法
            {
                Console.WriteLine("找到并修改成功");
            }
            else
            {
                Console.WriteLine("没找到该学生");
            }
            string.showName();
      }
    }示例3中的StudentBiz类定义了带两个参数并且带返回值的方法 bool editName(string oldname,string newName)
两个参数分别传递需要修改的学生姓名,新姓名.return语句用来返回是否查找到该学生并修改成功

4.带多个参数的方法问题:
指定查找区间,查找学生姓名并显示是否修改成功
分析:
在数组的一定区间中查询学生姓名,设计方法,通过传递三个参数(开始位置,结束位置,查找的姓名)来实现.如示例4所示
示例4:
<blockquote>public bool searchName(int start,int end,string name)public class TestAdd
    {
      static void Main(string[] args)
      {
            //.....
            Console.WriteLine("请输入开始查找的位置");
            int s =int.Parse(Console.ReadLine());
            Console.WriteLine("请输入结束查找的位置");
            int e = int.Parse(Console.ReadLine());
            Console.WriteLine("请输入查找的姓名");
            string name = Console.ReadLine();
            Console.WriteLine("*****查找结果*****");
            if(string.searchName(s,e,name))//调用带两个参数的方法
            {
                Console.WriteLine("找到并修改成功");
            }
            else
            {
                Console.WriteLine("没找到该学生");
            }
            string.showName();
      }
    }

通过前面几个示例的学习对比,带参方法的参数个数不论多少,在使用时只要注意实参和形参一一对应,传递的实际参数的数据类型与形参相同,顺序一致,就掌握了带参方法的使用

这节课就讲到这里,谢谢大家




王尼玛C#初级开发原创教程目录:
1.C#初级开发原创教程第一课Visual Studio 2013的安装
2.C#初级开发原创教程第二课 控制台的输出
3.C#初级开发原创教程第三课 数据类型转换
4.C#初级开发原创教程第四课 深入控制台应用程序
5.C#初级开发原创教程第五课 bool类型,关系运算符与if选择结构
6.C#初级开发原创教程第六课 复杂选择结构
7.C#初级开发原创教程第七课循环结构(一)
8.C#初级开发原创教程第八课 循环结构(二)
9.C#初级开发原创教程第九课 数组
10.C#初级开发原创教程第十课 面向对象之类和对象
11.C#初级开发原创教程十一课 类的无参方法
12.C#初级开发原创教程十二课 带参数的方法(一)
13.C#初级开发原创教程第十三课 字符串的操作






zx2cwf 发表于 2014-10-20 06:53

王哥大晚上的撸代码,辛苦你了,赞+++++

Top丶邪少 发表于 2014-10-21 14:17

顶菊花,楼主大神抱大腿

飞烟空梦 发表于 2021-4-7 11:22

感谢大大,大大的教程浅显易懂,就是这里有点疑惑。”string.showName();,string.editName()“没有定义string,定义的是st,所以一直报错,然后那个bool里的if比较,总干有点奇怪,等于的话就一直显示该生未找到,不等于就一直显示修改成功,有点不太懂里面的方法。

af521 发表于 2022-11-21 15:29

感谢楼主分享
页: [1]
查看完整版本: C#初级开发原创教程十二课 带参数的方法