二十一、类的带参方法

有参方法语法:

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

 

案例一:

定义一个榨汁机类,能够实现按不同的水果榨出不同的水果汁

//定义一个榨汁机类
namespace demo5
{
    /// <summary>
    /// 榨汁机
    /// </summary>
    public class Zhazhiji
    {
        /// <summary>
        /// 榨汁机功能
        /// </summary>
        /// <param name="fruit"></param>
        /// <returns>水果汁</returns>
        public string Zhazhi(string fruit)//也可以有一个默认值,如:string fruit = "苹果"
        {
            string juice = fruit + "汁";
            return juice;
        }
    }
}
//在main()方法中调用榨汁机类
namespace demo5
{
    class Program
    {
        static void Main(string[] args)
        {
            Zhazhiji zhazhiji = new Zhazhiji();//创建榨汁机
            //Console.WriteLine("请放入水果:");
            for (int i = 1; i <= 3; i++)
            {
                Console.WriteLine($"请放入第{i}个水果:");
                string fruit = Console.ReadLine();
                string juice = zhazhiji.Zhazhi(fruit);
                Console.WriteLine($"新鲜的{juice}已经榨出来了!");
            }
        }
    }
}

【注1】

如果要多次重复使用某一个类,不需要每一次都去调用该类,也就是说不需要每次榨汁都去创建一个新的榨汁机对象,在实际中它意味着每次榨汁不需要都用一台新的榨汁机。

正确而做法是,创建一个榨汁机类,利用循环语句反复调用类中的功能即可

【注2】

其实也可以用无参方法来定义

//定义榨汁机类
public class Zhazhiji
{
    public string fruit;
    public string Zhazhi()
     {
         string juice = fruit + "汁";
         return juice;
     }
}

只能够单独使用

static void Main(string[] args)
{
    Zhazhiji zhazhiji = new Zhazhiji();//创建榨汁机 
    for (int i = 1; i <= 3; i++)
    {
         Console.WriteLine($"请放入第{i}个水果:");
         zhazhiji.fruit = Console.ReadLine();
         string juice = zhazhiji.Zhazhi(zhazhiji.fruit);
         Console.WriteLine($"新鲜的{juice}已经榨出来了!");
     }
}

利用这种无参方法定义榨汁机类,使用完功能(方法)之后,fruit 变量无法释放,生命周期一直持续下去

如果使用带参方法,那么每次调用完榨汁机的功能之后,fruit 就会被释放,使得整个程序的性能更优

 

案例二:

(1)定义学生管理类,输入5个学生的姓名,并打印(只有一个参数的方法)

//定义学生管理类
namespace demo5_2
{
    class StudentManage
    {
        //默认分配30个学生名称空间
        //成员变量:用于保存30个学生(不会用完就被释放掉)
        private string[] names = new string[30];

        public void AddName(string name)
        {
            //用循环给名字赋值
            for (int i = 0; i < names.Length; i++)
            {
                //string 为引用类型:默认没有赋值时,值为null
                if (names[i]==null)
                {
                    names[i] = name;
                    break;//终止循环
                }
            }
        }
        /// <summary>
        /// 显示学生姓名
        /// </summary>
        public void ShowName()
        {
            for (int i = 0; i < names.Length; i++)
            {
                if(names[i] != null)
                {
                    Console.WriteLine($"第{i + 1}个学生姓名为:{names[i]}");
                }
            }
        }
    }
}
//在main()方法中调用类
namespace demo5_2
{
    class Program
    {
        static void Main(string[] args)
        {
            StudentManage stu = new StudentManage();
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("请输入学生的姓名:");
                string newName = Console.ReadLine();
                stu.AddName(newName);
            }
            stu.ShowName();
        }
    }
}

【注】

姓名的排序:按a b c ...z排序

Array.Sort(names);//引用类型改变(传递)地址,names为数组

/// <summary>
/// 显示学生姓名
/// </summary>
public void ShowName()
{
    Console.WriteLine("排序前:");
    for (int i = 0; i < names.Length; i++)
    {
       if(names[i] != null)
       {
           Console.WriteLine($"第{i + 1}个学生姓名为:{names[i]}");
       }    
    }
    Array.Sort(names);
    Console.WriteLine("\n排序后:");
    for (int i = 0; i < names.Length; i++)
    {
       if(names[i] != null)
       {
           Console.WriteLine($"第{i + 1}个学生姓名为:{names[i]}");
       }    
    }
}

 (2)定义一个查找姓名的类,查找学生是否存在(带多个参数的方法)

//在StudentManage类中定义查找学生类
private string[] names = new string[5] { "小一","小二","小三","小四","小五"};
public bool SearchName(int startIndex,int endIndex,string stuname)
{
    bool find = false;//是否找到标识
                      //在指定区间的数组中,查找姓名是否存在
    for (int i = startIndex-1; i < endIndex; i++)
    {
         if (names[i].Equals(stuname))
         {
             find = true;
             break;
          }
    }
    return find;
}
//在main()中调用查找姓名的方法
StudentManage stu1 = new StudentManage();
Console.WriteLine("请输入要查找的学生姓名:");
string stuname = Console.ReadLine();
Console.WriteLine("请输入要查找的起始索引(1-5之间):");
int startindex = int.Parse(Console.ReadLine());
Console.WriteLine("请输入要查找的终止索引(1-5之间):");
int endindex = int.Parse(Console.ReadLine());

bool flag = stu1.SearchName(startindex, endindex, stuname);

if (flag)
{
     Console.WriteLine("找到了!");
}
else
{
     Console.WriteLine("没找到!");
}

【注1】键值对可以颠倒顺序

bool flag = stu1.SearchName(1,4,"小四");//正确顺序

bool flag = stu1.SearchName("小四",1,4);//错误顺序

bool flag = stu1.SearchName(stuname:"小四",startIndex:1,endIndex:4);//正确顺序

StudentManage stu1 = new StudentManage();

bool flag = stu1.SearchName(stuname: "小四", startIndex: 1, endIndex: 4);

if (flag)
{
     Console.WriteLine("找到了!");
}
else
{
     Console.WriteLine("没找到!");
}

【注2】见到[ ]表示可写可不写

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值