关于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#的方法调用,暂时就说到这里了,有什么不当之处,欢迎大家的指正。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章