《C#入门详解》刘老师 方法的定义、调用与调试009(构造器,方法重载,方法调用栈原理)

方法的定义、调用与调试

一、构造器

静态构造器

不带参数的构造器

带参数的构造器

 

static void main(string[] args)
{
 student stu = new student (2,"MR.OKAY");//传参数满足自定义构造器的需求
 console.writeline(stu.id);
 console.writeline(stu.name);
}

class student
{
 public int id;
 public string name;
 public student ( int initid , string initname)
  { this.id      = intitid;
     this.name= initname;
   }
}

 

 

 

构造器的内存原理

二、方法的重载

声明带有重载的方法

  • 方法签名由方法的名称、类型形参的个数和它的每一个形参(按从左到右的顺序)的类型和种类(值、引用或输出)组成。方法签名不包含返回类型
  • 实例构造函数签名由它的形参(按从左到右的顺序)的类型和种类(值、引用或输出)组成
  • 重载决策(到底调用哪一个重载):用于在给定了参数列表和一组候选函数成员的情况下,选择一个最佳函数成员来实施调用
public int Add<T>(int a ,int b)
{ 
  T t;//t的变量做什么事情,是在方法内部中的事了
  return a+b ;   
 }
/*类型形参是用在泛型方法里的,未来会有一个类型T参与到我的方法中。类型形参是可以参与构成方法签名的*/

public int Add(int a, int b)           //什么修饰符都不加的参数都是传值的
public int Add(ref int a, int b)      //加上ref修饰的是传引用的
public int Add(out int a, int b)     //输出参数
/*参数的种类也参与构成方法的签名的*/

三、方法的调用与栈

方法调用时栈内存的分配(对stack frame的分析)

class program
{
  static void Main(string[] args)
  {
    double result =Calculator.GetConeVolume(100,100);
  }
}
class Calculator
{
 public static double GetCircleArea(double r)
{ return Math.Pi*r*r ;        }

public static double GetCylinderVolume(double r, double h)
{ double a=GetCircleArea(r);
   return a*h;   
}

public static double GetConeVolume(double r,double h)
{ double cv=GetCyclinderVolume(r,h);
   return cv/3;
}


}

方法调用时栈内存的分配(对stack frame的分析)

 

posted @ 2020-09-22 00:02  遥想公瑾  阅读(231)  评论(0编辑  收藏  举报