zoukankan      html  css  js  c++  java
  • C#

    1. #region   后面可以写代码注释

        #endregion

    可以把其中的代码折叠-打开

    2. 控制台程序输出的时候解决一闪而过的问题。

      Console.WriteLine("aaa");

      Console.ReadKey();//屏幕不会一闪而过

    3. ref应用

    int n1=10,n2=20;

    swap(n1,n2);//值传递

    swap(ref n1,ref n2);//引用传递

    4.可变参数   params    

     类似 java中为GetMax(T... t)类型为T的数组

    public static int GetMax(params  int[]  pms)

    {

    }

    5.  c#中的split参数

         #region 将字符串"    hello     world   ,你     好 世界 !     "两端空格去掉,并且将其中的所有其他空格都替换成一个空格,输出结果为:"hello world,你 好 世界 !"。

       string msg ="    hello     world   ,你     好 世界 !     ";
       msg = msg.Trim();//这样表示去掉两边空格
       string[] words = msg.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);//去掉为空字符串的项
       msg = string.Join(" ", words);//将返回的字符数组用空字符串连接起来

       Console.WriteLine("==========" + msg + "===================");
       Console.ReadKey();

      #endregion

    6.c#编译生成的exe文件不是真正意义上的exe文件,。.net reflector可以反编译出exe中的源码,仅限c#生成的exe,其他语言生成的exe反编译不了。原因就在此。

    如果不使用vs开发软件,仅使用记事本,则需要把c#代码,编译成exe文件才可以。

    步骤:编写一个.cs的文件 通过csc编译器(csc.exe  在.net framework安装目录下)将.cs文件编译成“伪exe”→“程序集”.(微软中间语言IL).  “运行”exe文件(将“伪exe”文件通过“即时编译”[jit→just in time])→机器码

    7. 自动属性

    1. public string Name{get;set;} 自动属性,编译器会自动生成对应的字段。可以反编译看出。

    2. private string _name;

      public string Name

      {

        get

        {

          return _name;

        }

        set

        {

          this._name=value;//会自动生成一个方法Set_Name(string value),传入的参数就是value,所以这里可以直接使用value。

        }

      }

    方法1,2功能一样,最好使用2的方法。因为方法一字段名是编译器随机生成的,可能会重复,发生错误。退吗使用方法2.

    8.添加引用与引用命名空间区别

      同一个项目中的不同命名空间中的类引用,要导入命名空间

      不同项目中,要访问其他项目的类,要添加引用,之后再导入该类所在的命名空间。

    9.里氏替换原则:需要父类的时候,可以给一个子类对象是可以的。

    父类引用指向子类对象,就是里氏替换原则,也就是多态。

    10.不打断点调试

    光标放到某一行,然后按 ctrl+F10,就启动调试,运行到改行,程序停住。

    11.当一个子类继承父类以后,该子类中的所有构造函数在默认情况下,在自己被调用前,都会调用父类中无参的构造函数,如果父类没有无参的构造函数,则会报错。

    解决方法:1.父类增加无参的构造函数。

         2. 子类构造函数调用时,手动的调用父类有参的构造函数。如下所示:

    public Student(string name,int age,int heigth,string sid):base(name,age,heigth)//与java中的super()类似

    {

      this.Sid=sid;

    }

    12.c#中有五种访问修饰符

      1.private  本类内部访问

      2.protected 本类及子类可以访问

      3.internal 当前程序集内部都可以访问(编译成同一个程序集dll或exe内的所有类都可以访问),注意与命名空间namespace没关系,可以不同的namespace,但必须编译成一个共同的程序集。

      4.protected internal 当前程序集内部或者是该程序集内部某个类的子类可以访问,该子类可以在其他程序集中

      5.public 任何地方都可以访问

     注意:累成员变量当不写修饰符时,默认是private。

    与java不同,java是四种访问修饰符,private,protected,public,无(默认) 

    13.

  • 相关阅读:
    codevs 1576 最长严格上升子序列
    codevs 3415 最小和
    codevs 2102 石子归并 2
    洛谷 P1040 加分二叉树
    BZOJ 3038 上帝造题的七分钟二
    codevs 线段树练习ⅠⅡⅢ
    启动Tomcat提示:指定的服务未安装
    poj 1061 青蛙的约会 (扩展欧几里得模板)
    POJ 3449 Geometric Shapes(判断几个不同图形的相交,线段相交判断)
    HDU 5251 矩形面积(二维凸包旋转卡壳最小矩形覆盖问题) --2015年百度之星程序设计大赛
  • 原文地址:https://www.cnblogs.com/lxboy2009/p/5808819.html
Copyright © 2011-2022 走看看