1.foreach
c#中foreach关键字的用法如下;
int[] a={1,2,3,4,5};
foreach(int i in a)
Console.Write(i+" ");
2.声明二维数组
int[] arr1={1,2,3,4,5};//一维数组,获取长度:arr1.Length
int[,] arr2={
{1,2,3},{4,5,6},{7,8,9}};//二维数组,获取长度:arr2.LongLength
3.属性封装
比如类C有a属性,封装方法如下:
private int _a;
...
public int A
{
get
{
return _a;//读
}
set
{
_a=value;//写
}
}
vs可以按快捷键,选中要封装的属性,按Ctrl+R+E即可
4.对象初始化器
C#中构造方法,带参不带参,还有this,和C++都是一样的用法,可以用构造函数来初始化对象,C#中还有一种方法就是使用对象初始化器,用法如下(Main方法中)
C c=new C()//圆括号可写可不写
{
//给各个字段赋值
}
实际上对象初始化器使用的是无参构造函数,所以前提是必须定义了无参构造函数
5.值和引用
C#中也有引用,普通变量如int,char等都是值类型,而类,数组,接口等都是引用类型,比如
C c1=new C(3);
C c2=c1;//这时c2是c1的引用,改变c2也会改变c1
6.ref关键字
如果想让函数的参数通过引用方式传递,可以使用ref关键字
public void add(ref int a)
{
a++;
}
7.out关键字
ref主要用来传参,而out主要用来获取方法的结果,return只能返回一个值,当需要返回多个值时就可以使用out,用法如下:
int a,b;
public void fun(int x,out int a,out int b);
ref和out都是引用类型的传参方法,不过ref修饰的参数必须要有值,而out修饰的不用
8.隐藏
当子类想隐藏父类的方法时,参数类型参数个数需一样,返回值没有要求,最好在新的方法前加上new关键字
9.sealed关键字
sealed关键字可以用来修饰类和方法
密闭类:有些类不希望其他人通过继承来修改
密闭方法:不希望其他人重写该方法
10.接口
C#中是单继承,但是实现接口的话可以一次实现多个接口
11.static
C#中有静态构造函数,专门用来初始化静态成员
不仅如此,static还可以修饰类和方法,可以通过static来给类添加功能,用法如下:
/*当需求变化,需要添加功能时,分以下几种情况:
* 1.如果有源代码,直接添加一个新的方法即可
* 2.如果不可以修改,而且也不是sealed类,那么可以用派生类扩展
* 3.如果上面的条件都不满足,那么考虑使用static类扩展方法
*/
class Person
{
public void walk()
{
Console.WriteLine("人在行走");
}
}
//写法如下
static class PersonManage
{
static public void eat(this Person p)
{
Console.WriteLine("