• .NET基础回顾(一)


    一..NET平台与C#语言

    1. .NET平台的重要组成部分:

    (1) FLC – 框架类库;

    (2) CLR – 公共语言运行时;

    2. .NET语言有C#,F#,VB.NET等,C#是专门为.NET平台开发的一种语言。

    3. .NET版本

    2002年.NET平台发布1.0,2.0的发布让.NET真正火起来。

    二..NET程序的简单编译

    1. C#的程序集由MSIL(微软中间语言)组成。

    2. 编译生成的exe文件双击运行,CLR同时运行,CLR下的JIT会将程序集的微软中间语言转换成本地平台的CPU指令,并将指令发给CPU执行。

    3. 通过MONO可以实现.NET程序的跨平台,可以在LINUX,UNIX等操作系统上完美运行。

    三.VS使用技巧

    代码段编辑管理:例如,“cw”+Table键可以自动输出“Console.WriteLine()”。

    四.数据类型转换

    面试题:Parse转换和Convert转换有什么区别?

    Convert转换其实内部调用的就是int.Parse()方法,只不过在调用之前判断了字符串是不是null,如果是null就返回0。

    五.引用类型与值类型

    值类型:直接将数据存储在栈里的变量的空间里面。例如,char,bool,枚举,结构等。

    引用类型:变量声明在栈里面,真实的对象存储在堆里面,栈里面的变量存储的是对象的地址。例如,string,数组,类等。

    六.数组

    程序示例:

     1 static void Main(string[] args)
     2         {
     3             //一维数组
     4             int[] a1 = new int[1];//维度为1
     5             //多维数组
     6             int[,] a2 = new int[1,2];//维度为2
     7             //交错数组
     8             int[][] a3 = new int[1][];//维度为1
     9 
    10             a3[0] = new int[3];//使用交错数组中的数组元素时需要重新实例化定义
    11             a3[0][0] = 1;
    12             a3[0][1] = 1;
    13             a3[0][2] = 1;
    14 
    15             Console.WriteLine(a1.Rank);
    16             Console.WriteLine(a2.Rank);
    17             Console.WriteLine(a3.Rank);
    18         }

    七.重载

    构成重载的条件:

    1. 方法的名字一样;
    2. 方法参数的个数或者顺序不一样;
    3. 必须在同一个类中;
    4. 与返回值无关;

    八.params可变参数

    1. 可变参数只能用来修饰一维数组。

    2. 在调用的时候会自动将这些元素封装成一个数组,并传递。

    3. 可变参数必须放在参数列表的最后。

    九.ref和out

    相同点:

    1. ref和out都是修饰方法的参数,在调用的时候必须在变量前面加ref或out;

    2. 如果一个变量被ref或out修饰,不是传递变量的值,而是传递变量的地址;

    不同点:

    1. out必须在方法内为其赋值,ref可以修改其值也可以不修改;

    2. out侧重于输出,ref侧重于修改;

    3. out在传递之前可以不赋初始值,因为在方法中肯定会为out赋值;

    4. ref在传递之前必须要有值,因为在方法中有可能会用到这个参数的值;

    程序示例:

     1 static void Main(string[] args)
     2         {
     3             int i = 1;
     4 
     5             Add(i);
     6             Console.WriteLine(i);//输出结果为1
     7 
     8             Add(ref i);
     9             Console.WriteLine(i);//输出结果为2
    10 
    11             int[] arr = { 2, 1, 5, 4, 3 };
    12             int max, min;
    13             GetMaxAndMin(arr,out max,out min);
    14             Console.WriteLine(max+":"+min);//输出结果为5,1
    15         }
    16         static void Add(int i)
    17         {
    18             i++;
    19         }
    20         static void Add(ref int i)
    21         {
    22             i++;
    23         }
    24         static void GetMaxAndMin(int[] arr, out int max, out int min)
    25         {
    26             Array.Sort(arr);
    27             min = arr[0];
    28             max = arr[arr.Length - 1];
    29         }
    30     }

    十.访问修饰符

    public:可以在任何地方访问

    private:只能在本类中访问

    protected:在本类和本类的子类中访问

    internal:只能在当前程序集中访问

    十一.程序集

    经由编译器编译得到的,供CLR进一步编译执行的那个中间产物,在WINDOWS系统中,它一般表现为·dll或者是·exe的格式,但是要注意,它们跟普通意义上的WIN32可执行程序是完全不同的东西,程序集必须依靠CLR才能顺利执行。

    十二.属性

    自动属性:public int Age{ get; set; }

    就算没有逻辑判断也尽量不要用自动属性,效率会低一点。尽量写成下述形式:

    public int Age

    {

             get{ return age; }

             set{ age=value; }

    }

    十二.占位符

    代码示例:

    Console.WriteLine(“请输入{0}-{1}范围的数”,min,max);

    十三.构造方法

    1. 构造方法访问修饰符一般是public,没有返回值(连void都不用)方法的名称与类名一致。

    2. 构造方法在创建的时候被自动调用,程序员无法手动调用。

    3. 构造方法可以有参数。

    4. 构造方法可以重载。

    5. 一般的方法可以在构造函数里面被调用。

    6. 构造方法可以调用其它的构造方法。

    程序示例:

    1 1 public Dog(int age,string name)
    2 2     :this(age)
    3 3 {
    4     this.name = name;
    5     Console.WriteLine("");      
    6 6 }

    7. 隐式构造函数。

    十四.部分类

    被partial修饰的类叫部分类或伙伴类。

    部分类的应用:winform应用程序中,窗体类和窗体设计类就是伙伴类。

    十五.null

    1. 只有引用类型的才能为null。

    2. 空指针异常原因:引用类型变量值为空。

    十五.常量与只读变量

    const:

    1. 常量声明的时候必须要赋初始值,常量一旦声明就不能改变;

    2. 某些数据再程序运行中值不会发生改变,我们就把这个定义成常量,以提高程序的运行效率;

    readonly:

    1. 只读变量的值是不可改变的;

    2. 只读变量的值只能在构造函数中被改变;

    3. const是编译时要确定的值,readonly是运行时要确定的值。

    十六.枚举

    1. 枚举是值类型。

    2. 每一个枚举成员都对应一个整型的数值,这个数值默认从0开始递增。

    3.可通过强制转换得到该枚举值所代表的数值,或者将一个整型的数值转换为其所代表的枚举值。

    4. 可以手动地为每一个枚举成员赋值其所代表的整型数值。

    5. 将字符串转换枚举值 Direction d = (Direction)Enum.Parse(typeof(Direction),str);

    6. 枚举值所对应的数值默认是int类型,可以在枚举的名字后面加一个冒号来指定这个数值的类型,但是指定的类型只能为整型。

    定义示例:

     1 namespace Test
     2 {
     3     enum Direction
     4     {
     5         East,
     6         South,
     7         West,
     8         North
     9     }
    10 }

    使用示例:

    1 static void Main(string[] args)
    2         {
    3             Direction dir = Direction.East;
    4         }
  • 相关阅读:
    circle
    pq
    graph
    matrix
    计数(count)
    想象一下(imagine)
    出租车(taxi)
    字符串函数 (strfun)
    Sabota?
    3973: seq
  • 原文地址:https://www.cnblogs.com/HuoAA/p/4017611.html
Copyright © 2020-2023  润新知