關於C#中方法調用的詳解

       一般來說,作爲一個C#程序員,方法調用是最基礎的一個東西,很悲劇的是每次我都漏了一些東西,所以寫下這篇博客,方便大家參考,同時也給自己長點記性。

       首先,我們要注意幾個關鍵詞,即訪問修飾符,這很重要。

       internal:只有在同一程序集的文件中,內部類型或成員纔是可訪問的,意思就是不對外開放,只能自己內部類訪問,不能私有公開化

     private :私有訪問是允許的最低訪問級別。 私有成員只有在聲明它們的類和結構體中才是可訪問的,也是不對外開放,但是可以私有公開化

     protected:受保護成員在其所在的類中可由派生類實例訪問,這個權限更高一些,成員可以被派生類繼承使用,但不能被外部類使用。

     public :公共訪問是允許的最高訪問級別。 對訪問公共成員沒有限制,即無論是誰,都可以訪問。

     可能大家對私有公開化不大瞭解,我利用官網例子給大家解釋下,Employee 類包含兩個私有數據成員 name 和 salary。 作爲私有成員,它們只能通過成員方法來訪問。 添加名爲 GetName 和 Salary 的公共方法,以便可以對私有成員進行受控的訪問。 通過公共方法訪問 name 成員,而通過公共只讀屬性訪問salary 成員。

class Employee2
{
    private string name = "FirstName, LastName";
    private double salary = 100.0;

    public string GetName()
    {
        return name;
    }

    public double Salary
    {
        get { return salary; }
    }
}

class PrivateTest
{
    static void Main()
    {
        Employee2 e = new Employee2();

        // The data members are inaccessible (private), so
        // they can't be accessed like this:
        //    string n = e.name;
        //    double s = e.salary;

        // 'name' is indirectly accessed via method:
        string n = e.GetName();

        // 'salary' is indirectly accessed via property
        double s = e.Salary;
    }
}

        前面做了那麼多鋪墊,學習起來就很簡單了,首先,從最簡單的說起,同一個類之間的方法調用,大家看見只要在第2個方法裏面直接調用就行了,這個是最簡單的方法調用。

    public class Class1
    {
        private void HellWord()
        {
            Console.WriteLine("Hello Word");
        }
        public void sb()
        {
            HellWord();
        }
    }
     然後,就是同一項目中不同類之間的調用了,這裏有個大家都很容易犯的錯,那就是非靜態調用必須要創建對象才能訪問,否則調用不了,我經常忘記這個。
    public class Class1
    {
        private void HellWord()
        {
            Console.WriteLine("Hello Word");
        }
        public void sb()
        {
            Console.WriteLine("Hello Word");
        }
        public static void sa()
        {
            Console.WriteLine("Hello Word");
        }
    }
    public class CLass2
    {
        public void sb()
        {
            Class1.sa();    //即使在不同的類中,靜態方法也可以直接調用,但是比較耗費資源
            Class1 obj = new Class1(); //非靜態方法,就必須要創建對象才能訪問
            obj.sb();
        }
    }
      最後就是不同項目之間方法的調用了。首先,我們創建一個名爲BLL的窗體程序,具體是,然後再點擊解決方案,添加-新建項目,選擇類庫,命名爲DAL。在裏面添加如下代碼:
namespace DAL
{
    public class Class1
    {
        public int jiafa(int a,int b)
        {
            return a+b;
        }
        public static void HelloWord()
        {
            Console.WriteLine("Hello Word");
        }
    }
    public class Class2
    {
        public static void sa()
        {
            Console.WriteLine("Hello Word");
        }
    }
}
  然後,就是關鍵的了,右擊BLL項目選擇添加引用,在引用界面,選擇項目,找到DAL並添加,即完成了對DAL項目的引用,在然後在BLL的項目代碼中,添加命名空間 using DAL; 下面是我的BLL項目的代碼

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

namespace BLL
{
    public class Class1
    {
       DAL.Class1 o = new DAL.Class1();//非靜態方法,需要創建對象,進行引用
       public void qw()
       {
           int a = o.jiafa(1, 3);
           DAL.Class1.HelloWord();//靜態方法可以直接調用 非靜態方法需要引用對象

       }
    }
}
     有關C#的方法調用,暫時就說到這裏了,有什麼不當之處,歡迎大家的指正。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章