c#中类-方法

原来在c#中定义变量\常量需要指定明确的数据类型,如int,string等,为此c#中提供了一个关键字var变量(varlable),专门用来定义定义变量的,它定义的变量不需要专门指定数据类型,变量会根据变量值来推断数据类型,它的出现是为了编码方便. var只能出现在局部作用域.

作用域在c#中分为,命名空间内的作用域,类内的作用域,以及局部作用域(方法内部的作用域).作用域从小到大排列依次为局部作用域<class作用域<namespace作用域.

命名空间中不能包含变量,方法,语句等,能包含类.

var valc =new Cale();
calc.Add(10,20);

10,20称为方法的实际参数,简称实参,实参传递到形参是有需求的:1.数据类型必须匹配,2.实参的顺序要和形参的顺序保持一致.如果开发者传递实参时没有和形参的顺序保持一致,又想让代码执行成功,需要借助命名参数,即给实参起个别名,实例别名就是形参的名字,命名参数可以让开发者给实参传递到指定的位置.

Cale.Add(b:10,a:20);

public class Cale{
public static int Add(int a, int b){
    Condole.WriteLine{$"a的值:{a},b的值{b},结果:{a+b}");
return a+b;
  }
}

有返回值的方法,可以用变量来接收方法的返回值

在一个方法中,参数的个数过多,影响方法的使用,这时候可以使用可变参数来优化代码,即params参数(可变参数).这里的可变指的是个数可变而不是类型可变.出了可变参数我们还可以使用数组来解决参数过多的情况.

public class MyClass
{
public void Add(int a,int b, int c,int d){
console.weiteline($"a的值:{a},b的值:{b},c的值:{c},d的值:{d}");
}

public void Add(int[] arr){
console.writeline($"索引0的值:{arr[0]},索引1的值:{arr[1]},索引2的值:{arr[2]},索引3的值:{arr[3]}");
}

public void Add(int a,params int[]){
console.writeline($"索引0的值:{arr[0]},索引1的值:{arr[1]},索引2的值:{arr[2]},索引3的值:{arr[3]},a的值{a}");
}

}

可变参数的语法要求:1.使用params关键字来标识此参数是可变参数.2.可变参数必须是方法的最后一个形参.3.可变参数的个数是不确定的,范围是0到无穷个.

out输出参数:不需要借助return,借助out也能得到与return相同的效果.

ref引用传递,在方法中修改ref参数,会影响外部的变量,值传递的参数,方法内部修改后无法印象外部的参数.引用传递的参数,方法内部修改会影响外部的参数.

当调用多个方法时,如果方法之间没有联系,了解各个方法执行顺序:1.代码有执行顺序一般是从上到下执行,先执行fun1在执行fun2

var class1 =new Class2();
class1.Fun1();
class1.Fun2();

public void Fun1()
        {
            Console.WriteLine("Fun1业务逻辑");
            Console.WriteLine("Fun1更多的业务逻辑省略");
        }

        public void Fun2()
        {
            Console.WriteLine("Fun2业务逻辑");
            Console.WriteLine("Fun2更多的业务逻辑省略");
        }

2.当代码遇见开发者封装的方法时,会进入方法体执行,执行方法体业务逻辑后,在返回调用方法处.如果代码遇见的不是开发者封装的方法,这时候并不会进入方法体,原因是类库提供的方法源码是隐藏的.

当调用的方法有联系,了解各个方法的执行顺序:进入的顺序是方法嵌套的顺序.fun3-->fun4-->fun5,执行方法体的顺序是fun3-->fun4-->fun5,方法体执行完的顺序是fun5-->fun4-->fun3

 public void Fun3()
        {
            Console.WriteLine("Fun3业务逻辑");
            Console.WriteLine("Fun3更多的业务逻辑省略");

            Fun4();
        }

        public void Fun4()
        {
            Console.WriteLine("Fun4业务逻辑");
            Console.WriteLine("Fun4更多的业务逻辑省略");

            Fun5();
        }

        public void Fun5()
        {
            Console.WriteLine("Fun5业务逻辑");
            Console.WriteLine("Fun5更多的业务逻辑省略");
        }

栈帧,就是执行方法时,给方法分配的内存空间,方法执行时,只要分配了内存空间,调用方法,会进入此内存空间.内存空间的调用叫做调用栈,调用栈是一个u型结构,遵循先进后出的原则.

在一个方法中调用自己本身的行为叫做递归,递归简而言之;方法在调用自己.递归调用有一个自循环或者自调用的.递归一定要有一个出口(方法能停止下来的).递归如果没有出口就是死循环,出现栈溢出的错误.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉玊则不达

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值