一般來說,作爲一個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#的方法調用,暫時就說到這裏了,有什麼不當之處,歡迎大家的指正。