C#總結(訪問修飾符,靜態方法和實例方法)

目錄

訪問修飾符

靜態方法和實例方法

try-catch捕捉異常

字符串轉成數字類型

類型自動轉換規則(以int和double爲例)


訪問修飾符

1.public:公有成員,完全公開,沒有訪問限制, 所有的類都可以訪問

2.private:私有成員 ,在類的內部纔可以訪問(類中字段和方法默認的訪問修飾符是private)

3.protected:保護成員,該類內部和繼承類(子類)可以訪問

4.internal:內部的,當前程序集內(本項目)可以訪問

5.protected internal:內部保護的, 只能是本項目內部或繼承類(子類)訪問

靜態方法和實例方法

1.靜態方法:static關鍵字表示

在自己本類中,調用兩種方法

(1)類名.靜態方法名

(2)靜態方法名

不在自己本類中:類名.靜態方法名

2.實例方法:需要new實例化

第一步:實例化一個對象

第二步:對象名.方法名

區別:靜態方法只能訪問自己所在類中的靜態成員(包括靜態數據成員和靜態方法),不能訪問實例成員;實例方法既可以訪問實例成員,也可以訪問靜態成員。

靜態成員與實例成員:由static修飾的稱爲靜態成員,沒有static修飾的稱爲實例成員。

     class Program
    {
        static void Main(string[] args)
        {
            Test.Say();      //調用的靜態方法在test類中,不再Program類中,要用類名.方法名
            Test t = new Test();       //實例方法必須先創建一個對象
            t.SayHello();              //調用該方法,對象名.實例名
            Console.ReadKey();
        }
    }

    public class Test
    {
        static int x= 6;       //定義了一個靜態成員
        int y= 7;              //定義了一個實例成員

        public static void Say()        //靜態方法,static標識
        {
            Console.WriteLine("今天天氣真好");
            x = x+10;            //靜態方法中只能使用靜態成員,不能使用實例成員
        }
    
        public void SayHello()        //實例方法
        {
            Console.WriteLine("hello,大家好");
            //實例方法既可以使用實例成員,也可以使用靜態成員
            x = x + 20;     //x靜態成員
            y = y + 10;     //y爲實例成員
        }
    }

try-catch捕捉異常

1.try中放可能報異常的代碼,發生異常後try代碼塊中的後續代碼不會被執行,catch以後的代碼則會繼續執行,如果try代碼中沒有異常,則不會執行catch當中的內容

2.catch當中放出現異常之後需要執行的代碼。Exception 類主要屬性:Message、StackTrace。message會將錯誤信息提示出來。

3.finally也可以不寫,不管try的語句報不報異常,finally都會執行的,就算try當中有return語句,也會執行finally當中的語句。

            string i = "123a";
            try
            {
                int num = Convert.ToInt32(i);       //將"123a"轉換成int類型,會報異常
            }
            catch (Exception ex)
            {
                Console.WriteLine("不是數字!");
                //MessageBox.Show(ex.Message);        //顯示異常的消息,MessageBox.Show在winform窗體中使用
            }
            finally
            {
                Console.WriteLine("不管報不報異常,我都會執行的,如果try當中有return語句,在返回前,我也會執行的");
            }
            Console.ReadKey();

字符串轉成數字類型

第一種方法:Convert.ToInt32,to後面可以是任意類型

            //將字符串類型轉換爲int類型            
            int num = Convert.ToInt32("100");            
            //由string類型轉化爲char類型
            char chGender = Convert.ToChar("男");

第二種方法: int.Parse(),.Parse前面可以是其他類型,可能會報異常(try-catch解決)

             int num1 = int.Parse("100");       

第三種方法:int.TryParse(string,out int number); 返回類型爲bool值

            bool result = int.TryParse("100", out int num2);
            if (result)
            {
                Console.WriteLine(num2);        //num2爲轉換成功後的數字
            }
            else
            {
                Console.WriteLine("不是數字");
            }

第四種方法:自定義一個mytryparse方法,實現和第三種方法一樣的功能

判斷是否爲數字的方法:IsNum,函數返回值爲bool類型

        public static bool IsNumber(string str,out int num)
        {
            string strnum="";
            num=0;
            try
            {
                num=int.Parse(strnum);
                return true;
            }
            catch
            {
                return false;
            }
        }

Main主函數調用此方法

            string strnum = "70";
            bool results=IsNumber(strnum, out int nums);
            if (result)
            {
                Console.WriteLine(nums);
            }
            else
            {
                Console.WriteLine("不能轉換成數字!");
            }

類型自動轉換規則(以int和double爲例)

下面這張圖,表示int和double類型的範圍,從圖中我們可以看出,double類型的範圍大於int類型的範圍

類型的自動轉換,其實就是一種隱式轉換,不需要我們寫任何條件,就可以進行轉換。有隱式轉換,就有對應的強制轉換,也就是必須要進行顯式轉換。下面分別介紹隱式轉換和顯示轉換的條件。

int轉double就是一種隱式轉換

            int num1 = 10;      //定義一個int類型的變量num1
            double num2= 30.5;  //定義一個double類型的變量num2
            num2 = num1;        //將int類型的值賦給double類型,隱式轉換

隱式轉換的條件:

(1)源類型和目標類型可以兼容(int和double類型就是相互兼容的類型,而字符串和int類型就不兼容)

(2)由低級向高級轉換(目標類型大於源類型,在這裏,int是低級,double是高級)

其實很好理解,37是int類型,37.0是double類型,可以說所有的int類型數據都可以用double類型的數據表示,也就是說int類型的數據可以隱式轉換成double類型的數據。

強制轉換:

(1)源類型和目標類型一定要相兼容

(2)由高級向低級的轉換,(double類型轉換成int類型)

注意:int轉double 隱式轉換,多小數

          double轉int  顯示轉換,丟精度

剛纔說到int和string 類型不能兼容,怎麼能轉換,前面已經介紹過了,在這裏補充的是convert不僅僅是內存級別的轉換,而是考慮數據意義的轉換。convert是一個加工,改造的過程。

Tips:對於表達式

(1)如果一個操作數爲double型,則整個表達式可提升爲double型

(2)求10/3要想得到3.333的處理

            int num1 = 10;
            int num2 = 3;

            double remainder = num1 * 0.1 / num2;
            Console.WriteLine("{0:0.000}", remainder);
            Console.ReadKey();

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章