黑马程序员————方法简介

---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ---------------------- 

方法:

方法的声明:

[public]   static   void   方法名([参数列表])

{

方法体:

}

Public :访问修饰符。

Static:表示静态的。

Void:返回值的类型,如果没有返回值,就写void,如果有返回值,就写对应的类型

方法名:必须符合Pascal命名规范。

参数列表:参数

[]标记的内容可以省略 

注:函数的功能要单一,越单一越好,只用来实现某一项功能。

方法的调用:类名.方法名();  

注:如果你写的方法跟Main()方法同在program这个类中,那么你调用方法的时候,可以省略类名,直接方法名()调用。

例1:

static void Main(string[] args)
        {
            //要求用户输入两个数字 比较这两个数字的大小
            Console.WriteLine("请输入第一个数");
            int number = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("请输入第二个数");
            int number2 = Convert.ToInt32(Console.ReadLine());

            int max = GetMax(number, number2);

            Console.WriteLine("这两个数字中比较大的值是{0}",max);
            Console.ReadKey();
        }
        /// <summary>
        /// 比较两个数字的大小,并且返回比较大的值
        /// </summary>
        /// <param name="n1">int 类型的参数</param>
        /// <param name="n2">int 类型的参数</param>
        /// <returns>返回的比较大的值</returns>
        public static int GetMax(int n1, int n2)//形参
        {
            int max = n1 > n2 ? n1 : n2;
            return max;
        }

例2:

int[] numbers = { 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 };
            int max = GetSumTwo(numbers);
            Console.WriteLine("这个数组的最大值是{0}", max);
            Console.ReadKey();


public static int GetSumTwo(int[] nums)
        {
            int max = nums[0];
            for (int i = 0; i < nums.Length; i++)
            {
                if (nums[i] > max)
                {
                    max = nums[i];
                }
            }
            return max;
        }

例3:

                        Console.WriteLine("请输入一个数字");
            string input = Console.ReadLine();
            int number = IsNumber(input);
            bool b = IsPrime(number);
            Console.WriteLine("您输入的数字{0}质数", b);
            Console.ReadKey();


public static bool IsPrime(int number)
        {
            bool b = true;
            if (number < 2)
            {
                b = false;
            }
            for (int i = 2; i <= number - 1; i++)
            {
                if (number % i == 0)
                {
                    b = false;
                }
            }
            return b;
        }

例4:

static void Main(string[] args)
        {
            string[] names = { "张三", "李四", "王二麻子", "赵六", "田七" };


            string str = Change(names);
            Console.WriteLine(str);
            Console.ReadKey();

        }


        public static string Change(string[] str)
        {
            string strNew = "";
            for (int i = 0; i < str.Length-1; i++)
            {
                strNew += str[i] + "|";
            }
            return strNew + str[str.Length - 1];
        }


 

Return的两个作用: 

1、跳出当前的方法

2、返回要返回的值。

方法之间的调用:

我们在Main()方法中调用Test()方法,我们管Main()方法叫做调用者,Test()方法叫做被调用者,如果被调用者想得到调用者的值,有两个方法。

1、传参数

2、使用静态字段

注:在静态方法中,只能访问静态字段

如果调用者想要得到被调用者的值,使用返回值:

1、确定有没有返回值

2、如果有返回值,确定返回值的类型

3、Return 返回值

out参数

 作用就是返回多个值   在方法内必须为out参数赋值

例1:

static void Main(string[] args)
        {
            //请用户输入用户名和密码  写一个方法判断用户是否登录成功  并且返回登录信息
            Console.WriteLine("请输入用户名");
            string strName = Console.ReadLine();
            Console.WriteLine("请输入密码");
            string strPwd = Console.ReadLine();
            string str;
            bool b = IsLogin(strName, strPwd, out str);
            Console.WriteLine("登录结果{0}",b);
            Console.WriteLine("登录信息{0}",str);
            Console.ReadKey();
        }

        public static bool IsLogin(string name, string pwd,out string msg)//在多余返回值的前面标记out
        {
            bool b = false;
            if(name=="admin"&&pwd=="admin")
            {
                b = true;
                msg = "登录成功";
            }
            else if (name == "admin")
            {
                msg = "密码错误";
            }
            else if (pwd == "admin")
            {
                msg = "用户名错误";
            }
            else
            {
                msg = "未知错误";
            }
            return b;
        }

例2:

 static void Main(string[] args)
        {
            //   int.TryParse
            Console.WriteLine("请输入一个数字");
            string input = Console.ReadLine();
            int res;
            bool b = MyTryParse(input, out  res);
            Console.WriteLine(b);
            Console.WriteLine(res);
            Console.ReadKey();
        }

        public static bool MyTryParse(string input, out int result)
        {
            bool b = false;
            result = 0;
            try
            {
                result = Convert.ToInt32(input);
                b = true;
            }
            catch
            {

            }
            return b;
        }

ref 参数

侧重于将值带入一个方法中,再将值从这个方法中带出  ref参数要求在方法外必须赋值

 例如:

  static void Main(string[] args)
        {
            int n1 = 10;
            int n2 = 20;
            Change(ref n1,ref  n2);
            Console.WriteLine(n1);
            Console.WriteLine(n2);
            Console.ReadKey();
        }


        public static void Change(ref int number1, ref int number2)
        {
            int temp = number1;
            number1 = number2;
            number2 = temp;
        }

方法的重载:

方法重载就是指方法的名称相同,参数不同,跟返回值没有关系
如果几个方法构成了重载,如果他们的参数的个数相同,那么它们参数的类型就不能相同,如果他们参数的类型相同,那么它们参数的个数就不能相同
例如:

public static void GetSum(int n1, int n2)
        {
            int sum = n1 + n2;
        }


        public static double GetSum(double d1, double d2)
        {
            return d1 + d2;
        }


        public static string GetSum(string s1, string s2)
        {
            return s1 + s2;
        }


方法的递归:

就是方法自己调用自己。

例如:

 public static int i = 0;
        static void Main(string[] args)
        {
       TellStory();
            Console.ReadKey();
        }



        public static void TellStory()
        {
            Console.WriteLine("从前有座山");
            Console.WriteLine("山里有个庙");
            Console.WriteLine("庙里有个老和尚和小和尚");
            Console.WriteLine("有一天,小和尚哭了,老和尚给小和尚讲故事,讲的是");
            i++;
            if (i >= 10)
            {
                return;
            }
            TellStory();   
        }


params:

params 构造函数声明数组 而不知道数组长度
注:在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。

例如:

 static void Main(string[] args)
        {
            GetSum("张三", 10,50,80,40,05);
            Console.ReadKey();
        }
        public static void GetSum(string name,int id,params int[] nums)
        {
            int sum = 0;
            for (int i = 0; i < nums.Length; i++)
            {
                sum += nums[i];
            }

            Console.WriteLine("{0}的考试成绩的总分是{1},{2}", name, sum,id);

        }


 

 

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ---------------------- 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值