C#之常量(const)静态(static)ref参数 out参数

常量(const)

常量是固定值,程序执行期间不会改变。常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量。
使用const修饰变量变为常量,常量不能改变且必须在定义时初始化,
只能通过类名和结构名来访问,与对象无关
定义如下:

namespace _常量{
    class _常量{
        public const int PI = 3.14;
    }
}

静态(static)

  1. 静态可以修饰:类,方法,字段,属性,事件
  2. 静态类只能定义常量或者静态的成员,不可以定义实例成员
  3. 静态类不可以实例化的
  4. 静态的成员跟对象无关,通过类名或者结构名访问

注意:
1. 静态类中仅含静态成员,不能有任何非静态成员;
2. 它们不能包含实例构造函数;
3. 静态类的成员不能有protected或protected internal访问保护修饰符,修
饰符只能是static
4.最后一定需要注意的是由于static是占内存的,所以程序中应包含尽量
少的static
比如主函数Main就是一个静态函数

namespace _静态{  
    class _静态{
        public static void Main(){
        }
    }
}

ref参数和out参数

ref参数:
(1)方法的定义和调用都必须显示使用ref关键字
(2)使用ref的参数必须先初始化,没有初始化会报错

out参数:
(1)方法的定义和调用都必须显示使用out关键字
(2)out参数无法将参数值传递到out参数所在的方法中,只能传递参数的引用,因此
使用out的参数不能初始化,必须在方法里面进行赋值,不然会报错

共同点:
传递的都是值类型的变量的地址
都在一定程度上决解了只能有一个返回值的问题
例如:

namespace _ref参数和out参数{
class _ref参数和out参数{
    public static void Main(){
        int a=3;
        int b=4;
        int x;
        int y;
        Change(ref a,ref b);
        FuZhi(out x,out y);
        Console.WriteLine(a+","+b);
        Console.WriteLine(x+","+y);
    }
    //使用ref参数交换a与b的值
    public viod Change(ref a,ref b){
        int temp = b;
        b = a;
        a = temp;
    }
    //使用out参数给X,Y赋值
    public void FuZHi(out int x,out int y){
        x=10;
        y=20;
    }
}
}

输出为:

4,3
10,20

你可能感兴趣的:(C#)