• C#学习笔记之——数据类型,引用参数,输出参数,数组参数,命名参数,可选参数


    一、值类型、引用类型和指针类型

    C#有三种类型:引用类型、值类型和指针类型。

    1、值类型:在栈中分配空间,由系统自动分配

      如:枚举类型、j结构类型(数值类型(decimal、整数类型(sbyte、byte、char、short、short、int、uint、long、long)、浮点类型(float、double))、布尔类型、自定义结构类型)

    PS:double相比,decimal 类型具有更高的精度和更小的范围

    2、引用类型:在堆中分配空间,由程序员用“new”来分配空间

      如:Object、string、类(class)、接口(interface)、委托(delegate)、数组

    3、指针类型同C和C++一样的使用,但还有一些特殊的地方,此处不讨论。

    值类型在做赋值操作的时候,值类型变量相互赋值之后,两变量做任何操作都互不受影响,因为他们储存在不同的空间。

    引用类型相互赋值之后,因为他们共用一个空间,互相影响,一个值改变,另一个值也相应改变。

    二、引用参数

    为了让值类型的参数达到引用类型参数的效果,ref。

    ref修饰的变量在传递参数前一定要有初始值

    三、输出参数

    如果想要返回一个或多个的,out。

    out修饰的变量在传递之前,可以没有初始值。

    四、数组参数

    如果形参列表中包含数组型参数,那么它必须位于参数列表中位于最后一位,而且必须是一维数组类型。另外,数组型参数不可能将params修饰符与ref和out修饰符组合起来使用。

    public int Avg (params int[] array) {
        int sum = 0;
        foreach (int a in array) 
        {
            sum += a;
        }
        return sum;
    }
     
    
    hero.Avg (1, 2, 3, 4, 5, 6, 7);
    hero.Avg (new int[]{ 1, 2, 3, 4, 5, 6, 7 });   

    五、命名参数

    class MyClass
    {
        public int C(int a, int b, int c)//参数声明没有区别
        {
            return (a + b) * c;
        }
        static void Main(string[] args)
        {
            MyClass mc = new MyClass();
            int result = mc.C(c: 2, a: 4, b: 3);//参数的名字和值,顺序可以不一样
            Console.WriteLine("{0}", result);
        }
    }

    六、可选参数

    class MyClass
    {
        public int C(int a, int b = 5)//默认b为5,可选参数
        {
            return a + b;
        }
        static void Main(string[] args)
        {
            MyClass mc = new MyClass();
            int a1 = mc.C(5, 6);//使用显式值
            int a2 = mc.C(5);//b使用默认值
            Console.WriteLine("{0},{1}", a1,a2);
        }
    }

    最后结果:11,10

  • 相关阅读:
    Java-Android 之动画的实现
    Java-Android 之出滚动条和卷轴页面
    Java-Android 之页面的跳转和结构的搭建
    Java-Android 之Hello World
    Java-struts2 之值栈问题
    Java-Hirbernate中文乱码问题
    Java-struts2 之中文乱码问题
    SQL SERVER2005事务日志已满 解决方法
    解决:对 PInvoke 函数的调用导致堆栈不对称问题
    webclient下载文件 带进度条
  • 原文地址:https://www.cnblogs.com/AlinaL/p/12852194.html
Copyright © 2020-2023  润新知