unity游戲開發-C#語言基礎篇(返回值ref和out及params應用 )

 class Program
    {
        static void Main(string[] args)
        {
            HeroClass Hero = new HeroClass("項羽", "男", 1234, 2348);
            Hero.ShowHero();

            MasterClass mas = new MasterClass(Hero);

            HeroClass.get();//有 static 只能屬于類;不能通過實例名稱點出來;
            Console.WriteLine(Hero.duanwei);//通過類名中的名字點出來;實例化的變量;

            Hero.SetHero("張三豐", "男", 1, 2, 3, 4);
            Hero.ShowHero();
            int[] myArr = { 123, 456, 678, 987 };
            Hero.SetHero("張三豐", "男", myArr);//利用關鍵字 params 可以傳入數組

            Hero.ShowHero();

            string name1 = "";
            int zhanli = Hero.Getzhanli(ref  name1);

            Console.WriteLine("名字{0} 戰力{1}", name1, zhanli);


            string names = "";
            int zhanlis = Hero.Getzhanli(ref  names);

            Console.WriteLine(names);


            int mofa;

            Hero.GetMofa(out mofa);


            Console.WriteLine(mofa);




            int mofa;
            Hero.GetMofa(out mofa);
            Console.WriteLine(mofa);


            //MasterClass mas = new MasterClass();

            MasterClass.Getmas();//把實例化去掉,同樣執行靜態構造函數

             StaticClass str = new StaticClass(); 靜態類不能實例化
            StatcClass sta = new StatcClass();

            StatcClass.Str();

            Console.ReadKey();
        
        }
    }
    class StaticClass
    {
        //靜態類 一定是通過關鍵字static 修飾;
        private static string str = "";

        //靜態類 的成員一定為靜態的 不能有一個實例成員
        public static void GetStr()
        {

            Console.WriteLine(str);
        }
    }
  class StaticsClass
    {
        private static string str;

        public static void Str()
        {
            str = "123";
            Console.WriteLine(str);
        }
    
    }
 class MasterClass
    {
          public MasterClass(HeroClass hero)
        {
            hero.Zhanli = 666;
            hero.Mofazhi = 888;
            hero.ShowHero();

        }

        //static MasterClass() {//靜態構造函數不能傳參;而且有且只執行一次;默認隱式調用;

        //    Console.WriteLine("執行了靜態構造函數!");
        //}

        public static void Getmas() {
            Console.WriteLine("普通方法!");
        
        }

 
    }
 class HeroClass
    {
        //常量 
        public readonly int duanwei = 6;//段位-只讀的


        private string name;
        private string sex;
        private int zhanli;
        private int mofazhi;

        public string Name
        {
            set { name = value; }
            get { return name; }
        }
        public string Sex
        {
            set { sex = value; }
            get { return sex; }
        }

        public int Zhanli
        {
            set { zhanli = value; }
            get { return zhanli; }
        }

        public int Mofazhi
        {
            set { mofazhi = value; }
            get { return mofazhi; }

        }

        public HeroClass(string _name, string _sex, int _zhanli, int _mofazhi)
        {
            this.name = _name;
            this.sex = _sex;
            this.zhanli = _zhanli;
            this.mofazhi = _mofazhi;
            duanwei = _zhanli;//只讀字段只能在構造函數更改;

        }

        public void ShowHero()
        {
            Console.WriteLine("英雄{0} 性別{1} 戰力{2}魔法值{3} ", name, sex, zhanli, mofazhi);
            //duanwei = 333;  只讀字段不能在普通方法里更改;只能在構造函數更改

        }
        public static void get()
        {//注意 static 字眼

            Console.WriteLine("666");
        }

        //params 關鍵字 參數為數組形式;如果有多個則放到后面 經常用到在方法的參數不確定情況下
        public void SetHero(string _name, string _sex, params int[] Arr)
        {
            this.name = _name;
            this.sex = _sex;
            this.zhanli = Arr[0];
            this.mofazhi = Arr[1];

            int[] arr = new int[Arr.Length];
            for (int i = 0; i < Arr.Length; i++)
            {
                arr[i] = i + 1;
            }
        }

        //--------ref關鍵字-----------
        public int Getzhanli(ref string _name)
        {
            _name = "英雄名稱" + name;
            return zhanli;
        }

        public void GetzhanliS(ref string _name)
        {
            _name = "英雄名稱" + name;

        }


        //------out關鍵字--------
        //public void GetMofa(out int _mofazhi) {

        //    _mofazhi = mofazhi;
        //}


        public void GetMofa(out int _mofazhi)
        {

            _mofazhi = mofazhi;
        }
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容