zoukankan      html  css  js  c++  java
  • 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用于下列目的:
    • 用于区分类的成员和本地变量或参数
    • 做为调用方法的实参

    呵呵,上面这些内容我想大部分童鞋都能一下看懂,这都是些很基础的东西,有些可能都在不知不觉中用烂了,只是没有注意过还有个这么个东东。所以我给总结了一些供大家参考,希望大家能有所收获。

  • 相关阅读:
    HTML中ID与NAME的区别
    三层架构的学习感悟(二)
    linux svn安装和配置,不结合apache
    _dopostback回发后台的局限
    ASP.NET 服务器端控件响应客户端事件
    linux centos 下面httpd支持的svn 服务器端安装
    最简单的html tab选项卡
    VC2010 控件的事件窗口面板空白解决办法
    记录一次低版本手机h5页面不能进行跳转
    设计模式的理解
  • 原文地址:https://www.cnblogs.com/smiler/p/3627492.html
Copyright © 2011-2022 走看看