C#知识点(希望对大家有帮助)

来源:互联网 发布:php去除html标签 编辑:程序博客网 时间:2024/04/30 14:30

1.部分类:使用partial关键字定义部分类

作用:优化类,可以防止一个类偏长,混淆,将代码分组,如果两个类里面拥有相同的附类可以用部分类区分开来!不会产生错误。

2.C#中为圆周率定义Math.PI变量。

3.数据类型转换可分为显示转换隐式转换

4.C#中的switch里面break不能缺少。

5.布尔类型用bool关键字定义,值为truefalse

6.C#中通过访问器对类里面的的数据进行修改,借助getset对属性进行修改

7.使用类的字段:实例化类的一个对象访问另外的类的成员,使用readonly标记该字段为只读字段(即不能修改的字段),并且该字段只能在初始化的时候使用

8.当一个方法为静态(static)的时候,在任何时候都可以调用使用,但是当为没有返回值的时候的就需要实例化一个对象来访问该方法的属性。

9.使用类的方法:方法属于类的成员-方法通过级别访问-在调用方法传递参数必须带该参数的数据类型,对于用了abstractextern修饰的方法,调用方法必须含有调用该方法所执行的语句。

10.静态类(static):静态类可以直接访问不必实例化该类!

11.注意:在定义方法或类的时候注意,定义时加上Class是定义类,不是定义方法,在定义方法的时候只需要修饰符” + “返回值类型” +”方法名即可

12. System.Threading.Thread.Sleep(需要的时间速率);该方法可以控制时间的过程,与计时器的功能差不多。

13.C#的值类型:a.简单类型(Simple types)b.结构类型(Struct types)c.枚举类型(Enumeration types)

14.结构类型:结构类型利用关键字struct定义,在结构类型中,我们可以把一组变量放在struct定义的结构类里面,在其他的地方直接实例化访问,结构类型不允许继承,结构类型可以节约内存而且结构简化;

15.枚举:暂时我不太了解

16.object型类:在C#中,所有的类型都是由object类中继承过来的,当然,在C#中,object类型可以给它赋予任何类型的值。但是,object类型是不能用于计算的。

17.string类(System.string):在C#中,string类专门用于处理字符串,我们可以用+号来连接两段或更多的字符串组。

18.委托:在C#中,完全取消在C或C++中广泛应用的指针,从而委托取代了指针类型,委托用delegate关键字定义,使用委托指向任何方法,只要其标示相同。

19.装箱(boxing)与拆箱(unboxing):装箱与拆箱机制在C#类型系统中,任何值类型,引用类型和object(对象)类型之间进行转换,把这种转换称为绑定连接,

可以这样讲,有了装箱与拆箱机制,任何值类型最终我们都可以看做是object(对象)类型。装箱转换是将一个值类型隐式转换成object类型,或者把之歌值类型转换成一个被该值类型应用的借口类型(interface-type)。把一个值类型的值装箱,也就是创建一个object实例并将这个值复制给object,而拆箱是将一个值类型显示地转换成一个值类型,又可以说是将一个借口类型显示地转换成一个执行该接口的值类型。

20.在C#中,数据类型分为值类型和引用类型,值类型的变量总是直接包含自身数据,而引用数据类型是指实际数据类型的地址!值类型在使用的时候必须赋值,然而引用类型在引用一个未赋值的变量的时候,本身会输出默认值0。

31变量(variable):用于保存计算机中定义的数据。

32.变量的类型:变量的类型分为静态变量(static variables),非静态变量(instance variables),数组元素(array elements),值参数(value parameters),引用参数(reference parameters),输出参数(output paramenters),局部变量(local variables)。

33.常量

34.类型转换:在C#中,类型转换分为显示转换(explicit conversions)和隐式转换(implicit conversions)

35.隐式转换的规则:隐式数值转换,隐式枚举转换,隐式引用转换

A.隐式转换:在赋值时,自动转换成指定类型。

        例:int i = 100;

            Float k = I;

            Console.WriteLine(k);

        最后将输出100;

B.隐式枚举转换:隐式枚举转换允许把十进制数0转换成任何枚举类型。

例:

using System;

enum Weekday

{

    Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday

};

class Program

{

    public static void Main()

    {

        Weekday day;

        day = 0;

        Console.WriteLine(day);

    }

}

C.隐式引用转换

l        从对象到任何引用类型

l        从类类型A到类类型B,其中A是B的基类。

l        从类类型A到接口类型B,其中A不是密封类,而且没有实现B。

l        从接口类型A到类类型B,其中B不是密封类,而且没有实现A。

l        从接口类型A到接口类型B,其中A不是B的子接口。

注:从元素类型为LG的数组类型S到元素类型为TR的数组类型H的转换,这种转换需要满足下列条件:

l        S和H只有元素的数据类型不同,而维数相同

l        LG和TR都是引用类型

l        存在从LG到TR的显示转换

l        从System.Array到数组类型

l        从Syatem.Delegate到委托

l        从System.ICloneable到数组类型或委托类型

36.字符串和字符数组之间的转换:

使用字符串类型类System.String提供的一个void ToCharArray()方法实现字符串到字符数组之间的转换,反之,从字符数组到字符串之间的转换可以使用带有字符类型参数的String(char[])或者String([char[],int,int])

37.字符串和字节数组之间的转换:

在System.String类中,并没有提供字符串和字节数组之间的转换方法,要实这类转换必须使用System.Text.Encoding,该类具有以下两种方法:

Bye[] GetBytes(string)方法,将字符串转换成字节数组

string GetString(byte[])方法,将字节数组转换字符串

38.结构类型与类的区别:结构类型在传递值的时候是直接传递本身的复制值,而类在传递值的时候实际上是在传递引用地址,而不是想结构类型那样复制地址,虽然在数据传递比较少的时候并不有明显的区别,但在传递的数据量大的时候即可以看出差距结构类型与类都能继承接口,结构类型不允许派生任何继承,就是不允许继承。在传递数据量很大的情况下不要使用结构类型,因为其是值类型,在堆栈上分配地址,类是在堆上分配地址,而因为堆栈比对要小,因此,在处理数据量比较大的时候不要使用结构类型,推荐使用类来处理这些数据。结构类型中不允许使用virtual,abstract和sealed关键字。结构类型不允许使用prosected修饰符,而类允许。结构中可以指定字段如何在内存中布局,类是不具有的,结构中不允许初始化实例字段,类可以初始化实例字段

39.参数与返回值:在定义方法时必备的的条件,除非定义无参函数

40.值参数:在值参数传递过程中,如果是传递值给值参数,并非是直接复制值本身,而是传递值本身的内存地址,所以在传递参数的时候,两方的值都改变

41.引用参数:关键字是ref,形式参数,在定义参数时候其实是定义了一个形式参数,简称“形参”,而在传递实际的值给方法的参数时候,这个实现是为这个方法的参数赋予实际参数,简称“实参”,用ref传递参数的时候,也不是直接复制本身的值给方法的参数,而是给予方法内存地址,这样在传递值的时候,所有值都改变。

using System;

using System.Collections.Generic;

using System.Text;

 

namespace Test

{

    class Program

    {

        private void cal(int a, ref int b)

        {

            a = a * a * a;

            Console.WriteLine("cala的值是:{0}",a);

            Console.ReadLine();

            b = a;

            Console.WriteLine("cal中的值是:{0}",a);

            Console.ReadLine();

        }

        static void Main(string[] args)

        {

            int a = 10;

            int b = 0;

            Program test = new Program();

            test.cal(a,ref b);

            Console.WriteLine("a的值是:{0}",a);

            Console.WriteLine("b的值是:{0}",b);

            Console.ReadLine();

 

        }

    }

}

输出结果:

cala的值是:1000

calb的值是:1000

a的值是:10

b的值是:1000

待续

 

原创粉丝点击