常量(const)
常量是固定值,程序执行期间不会改变。常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量。
使用const修饰变量变为常量,常量不能改变且必须在定义时初始化,
只能通过类名和结构名来访问,与对象无关
定义如下:
namespace _常量{
class _常量{
public const int PI = 3.14;
}
}
静态(static)
- 静态可以修饰:类,方法,字段,属性,事件
- 静态类只能定义常量或者静态的成员,不可以定义实例成员
- 静态类不可以实例化的
- 静态的成员跟对象无关,通过类名或者结构名访问
注意:
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