Home  >  Article  >  php教程  >  C#应该知道的简单的知识点

C#应该知道的简单的知识点

WBOY
WBOYOriginal
2016-06-13 09:16:14820browse

C#应该知道的简单的知识点

   1.本地变量

  一看这个标题你可能会一愣,这是个什么东东。看个小例子:

  static void main()

  {

  int a=10;

  MyClass mc=new MyClass();

  }

  呵呵,这里的a与mc就是本地变量,它和字段一样,也保存数据。字段通常保存和对象状态有关的数据,而创建本地变量经常用于保存本地或临时数据。呵呵,简单吧,但是它和实例字段有何区别:

  实例字段

  本地变量

  生存期 从实例创建开始,直到实例不再被访问

  从它在块中被声明开始,到块执行结束

  隐式初始化 初始化成该类的默认值 没有隐式初始化。如果变量在使用之前没有被赋值,编译器将报错

  存储区域 由于实例字段是类的成员,所有的字段都存储在堆里,无论它是指类型还是引用类型 值类型:存储在栈里

  引用类型:引用存储在栈里,数据存放在堆里

  2.var 关键字

  我们知道var可以自动推断变量的类型,如上代码,我们可以发现在声明开始部分提供类型名时,编译器能从初始化语句的右边推断出来它的类型,所以,在声明的开始部分包括显示的类型名多余的。

  为了避免这种多余,可以在声明的开始部分的显示类型名的位置使用新的关键字var。上面代码可以改成:

  static void main()

  {

  var a=10;

  var mc=new MyClass();

  }

  3.值参数

  使用值参数,通过将实参的值复制到形参的方式把数据传递给方法。方法被调用时,系统做如下操作:

  在栈中为形参分配空间

  将实参的值复制给形参

  4.引用参数(ref)

  不会为形参在栈上分配内存

  实际情况是,形参的参数名将作为实参变量的别名,指向相同的内存位置

  实参必须是变量,在用作实参前必须被赋值。如果是引用类型变量,可以赋值一个引用或者null

  5.输出参数(out)

  在方法内部,输出参数在能够使用之前必须被赋值。这就意味着参数的初始值是不起作用的,所以没有必要在方法调用前为参数赋值。

  在方法返回之前,方法内部任何路径都必须为所有输出参数进行一次赋值。

  如下代码:

  public void Add(out int outValue) { int var1=outValue+2; }上述代码输出参数在方法赋值之前被读取将会报错。

  6.属性(set,get)

  属性是一个函数成员

  它不为数据的存储分配内存

  它可以执行代码

  set访问器拥有一个单独的隐式的值参,名称为Value,与属性的类型相同且拥有一个返回类型void

  get访问器没有参数,拥有一个与属性类型相同的返回类型。

  7.对象初始化语句

  我们都知道创建一个对象是由new 后面跟着一个类构造函数及其参数列表组成。

  对象初始化语句扩展了创建语法,在表达式的尾部放置了一组成员初始化的语句。允许我们创建新的对象实例时,设置字段和属性的值。

  该语法有两种形式:一种形式是包括构造函数的参数列表,另一种是不包括。注意第一种形式可以省略圆括号。

  new TypeName {FieldOrProp=InitExpr,FieldOrProp=InitExpr,…}

  new TypeName {FieldOrProp=InitExpr,FieldOrProp=InitExpr,…}

  示例如下:

  public static void main()

  {

  Point p1=new Point();

  Point p2=new Point{X=4,Y=5,Z=6};

  Point p3=new Point(9){X=7,Y=8};

  }

  public class Point

  {

  public int X=1;

  public int Y=2;

  public int Z=3;

  public Point(int z) { Z=z; }

  }

  8.this关键字

  this关键字在类中使用,是对当前实例的引用。它只能用在下列类成员的代码中

  实例构造函数

  实例方法

  属性和索引器的实例访问权

  由于静态成员不是实例的一部分,所以不能在任何静态函数成员的代码中使用this关键字。更适当的说,this用于下列目的:

  用于区分类的成员和本地变量或参数

  做为调用方法的实参

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn