.Net基礎(chǔ)07

方法的調(diào)用

namespace _01方法的調(diào)用
{
    class Program
    {
        //字段 屬于類的字段 (C#中沒有全局變量這一說)
        public static int _number = 10;//使用靜態(tài)變量模擬 全局變量
        static void Main(string[] args)
        {
            int a = 3;
            int res = Test(a);//傳參 a是實(shí)參
            Console.WriteLine(res);
            Console.WriteLine(a); //輸出 3
            Console.WriteLine(_number);  //輸出 10
            Console.ReadKey();
        }
        public static int Test(int a)  //a是形參
        {
            Console.WriteLine(_number); //輸出 10
            a = a + 5;
            return a;
        }
        public static void TestTwo() //該方法未調(diào)用
        {
            Console.WriteLine(_number); //說明_number 可以被訪問到
        }
    }
}
結(jié)果.png

我們?cè)贛ain()函數(shù)中膳殷,調(diào)用Test()函數(shù)扭仁,我們管Main()函數(shù)稱之為調(diào)用者晓折,管Test()函數(shù)稱之為被調(diào)用者。

  • 如果被調(diào)用者想要得到調(diào)用者的值:
    1)呢簸、傳遞參數(shù)矮台。
    2)淆攻、使用靜態(tài)字段來模擬全局變量。

  • 如果調(diào)用者想要得到被調(diào)用者的值:
    1)嘿架、返回值

  • 不管是實(shí)參還是形參瓶珊,都是在內(nèi)存中開辟了空間的。

  • 方法的功能一定要單一耸彪。
    GetMax(int n1,int n2)
    方法中最忌諱的就是出現(xiàn)提示用戶輸入的字眼伞芹。

  • 小練習(xí)

static void Main(string[] args)
{
    //寫一個(gè)方法 判斷一個(gè)年份是否是閏年
    bool result = isRunNian(Convert.ToInt32(Console.ReadLine()));
    Console.WriteLine(result);
    Console.ReadKey();
}

/// <summary>
/// 判斷給定的年份是否是閏年
/// </summary>
/// <param name="year">年份</param>
/// <returns>結(jié)果</returns>
public static bool isRunNian(int year)
{
    bool b = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
    return b;
}
結(jié)果.png

out參數(shù)

如果你在一個(gè)方法中,返回多個(gè)相同類型的值的時(shí)候蝉娜,可以考慮返回一個(gè)數(shù)組唱较。
但是,如果返回多個(gè)不同類型的值的時(shí)候召川,返回?cái)?shù)組就不行了南缓,那么這個(gè)時(shí)候,
我們可以考慮使用out參數(shù)荧呐。
out參數(shù)就側(cè)重于在一個(gè)方法中可以返回多個(gè)不同類型的值汉形。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _03out參數(shù)
{
    class Program
    {
        static void Main(string[] args)
        {
            //寫一個(gè)方法 求一個(gè)整數(shù)數(shù)組中的 最大值最小值 總和 平均值
            int[] numbers = {1,3,4,5,74,43,23,21,5};

            int[] res = GetMaxMinSumAvg(numbers);
            Console.WriteLine("最大值{0},最小值{1}倍阐,總和{2}概疆,平均值{3}", res[0], res[1], res[2], res[3]);

            int max = 0;
            int min = 0;
            int sum = 0;
            int avg = 0;
            Test(numbers, out max, out min, out sum, out avg);
            Console.WriteLine("使用了out 參數(shù) 最大值{0},最小值{1}峰搪,總和{2}岔冀,平均值{3}", max, min, sum, avg);

            Console.ReadKey();
        }

        /// <summary>
        /// 求一個(gè) 數(shù)組中的 最大值最小值 總和 平均值
        /// </summary>
        /// <param name="nums">最大值最小值 總和 平均值 一次排列的數(shù)組</param>
        /// <returns>結(jié)果數(shù)組</returns>
        public static int[] GetMaxMinSumAvg(int[] nums)
        {
            int[] result = new int[4];
            //假設(shè) res[0] 最大值 res[1] 最小值 res[2] 總和 res[3] 平局值
            result[0] = nums[0];
            result[1] = nums[0];
            result[2] = 0;

            for (int i = 0; i < nums.Length; i++)
            {
                if (nums[i] > result[0])
                {
                    result[0] = nums[i];
                }
                if (nums[i] < result[1])
                {
                    result[1] = nums[i];
                }
                result[2] += nums[i];
            }
            result[3] = result[2] / nums.Length;

            return result;    
        }

        /// <summary>
        /// 求一個(gè)整數(shù)數(shù)組中的 最大值最小值 總和 平均值
        /// </summary>
        /// <param name="nums">要求值的數(shù)組</param>
        /// <param name="max">多余返回的最大值</param>
        /// <param name="min">多余返回的最小值</param>
        /// <param name="sum">多余返回的總和</param>
        /// <param name="avg">多余返回的平均值</param>
        public static void Test(int[] nums, out int max, out int min, out int sum, out int avg)
        {
            //out 參數(shù)要求在方法的內(nèi)部必須為其賦值
            max = nums[0];
            min = nums[0];
            sum = 0;

            for (int i = 0; i < nums.Length; i++)
            {
                if (nums[i] > max)
                {
                    max = nums[i];
                }
                if (nums[i] < min)
                {
                    min = nums[i];
                }
                sum += nums[i];
            }
            avg = sum / nums.Length;
        }
    }
}
結(jié)果.png

ref參數(shù)

能夠?qū)⒁粋€(gè)變量帶入一個(gè)方法中進(jìn)行改變,改變完成后概耻,再講改變后的值帶出方法使套。
ref參數(shù)要求在方法外必須為其賦值,而方法內(nèi)可以不賦值鞠柄。

例子.png
運(yùn)行結(jié)果.png
  • 小練習(xí)
class Program
{
    static void Main(string[] args)
    {
        //使用方法來交換兩個(gè) int類型的變量
        int a = 10;
        int b = 30;
        ExChange(ref a, ref b);

        Console.WriteLine("a = {0}, b = {1}",a ,b);
        Console.ReadKey();
        
    }
    public static void ExChange(ref int a, ref int b)
    {
        int temp = a;
        a = b;
        b = temp;
    }
}
結(jié)果.png

params可變參數(shù)

將實(shí)參列表中跟可變參數(shù)數(shù)組類型一致的元素都當(dāng)做數(shù)組的元素去處理侦高。
params可變參數(shù)必須是形參列表中的最后一個(gè)元素。

例子.png

方法的重載

概念:方法的重載指的就是方法的名稱相同給春锋,但是參數(shù)不同矫膨。
參數(shù)不同,分為兩種情況
1)期奔、如果參數(shù)的個(gè)數(shù)相同侧馅,那么參數(shù)的類型就不能相同。
2)呐萌、如果參數(shù)的類型相同馁痴,那么參數(shù)的個(gè)數(shù)就不能相同。
方法的重載跟返回值沒有關(guān)系肺孤。

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(M(10, 20));
        Console.WriteLine(M(10, 20, 30));
        Console.WriteLine(M(2.0, 4.6));
        Console.WriteLine(M("WQE", "DF"));

        Console.ReadKey();
    }
    public static int M(int n1, int n2)
    {
        return n1 + n2;
    }
    public static int M(int n1, int n2, int n3)
    {
        return n1 + n2 + n3;
    }
    public static double M(double n1, double n2)
    {
        return n1 + n2;
    }
    public static string M(string s1, string s2)
    {
        return s1 + s2;
    }
結(jié)果.png

往期回顧

圖文無關(guān).png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末罗晕,一起剝皮案震驚了整個(gè)濱河市济欢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌小渊,老刑警劉巖法褥,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異酬屉,居然都是意外死亡半等,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門呐萨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杀饵,“玉大人,你說我怎么就攤上這事谬擦∏芯啵” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵惨远,是天一觀的道長(zhǎng)谜悟。 經(jīng)常有香客問我,道長(zhǎng)锨络,這世上最難降的妖魔是什么赌躺? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮羡儿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘是钥。我一直安慰自己掠归,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布悄泥。 她就那樣靜靜地躺著虏冻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弹囚。 梳的紋絲不亂的頭發(fā)上厨相,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音鸥鹉,去河邊找鬼蛮穿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛毁渗,可吹牛的內(nèi)容都是我干的践磅。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼灸异,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼府适!你這毒婦竟也來了羔飞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤檐春,失蹤者是張志新(化名)和其女友劉穎逻淌,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疟暖,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡恍风,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了誓篱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朋贬。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辩块,死狀恐怖抄罕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情馆纳,我是刑警寧澤邻遏,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布糠亩,位于F島的核電站,受9級(jí)特大地震影響准验,放射性物質(zhì)發(fā)生泄漏赎线。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一糊饱、第九天 我趴在偏房一處隱蔽的房頂上張望垂寥。 院中可真熱鬧,春花似錦另锋、人聲如沸滞项。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽文判。三九已至,卻和暖如春室梅,著一層夾襖步出監(jiān)牢的瞬間戏仓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工亡鼠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赏殃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓拆宛,卻偏偏與公主長(zhǎng)得像嗓奢,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子浑厚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容