zoukankan      html  css  js  c++  java
  • C#基本知识零散总结

    C#基本知识零散总结

    类的属性:(property)

    C#中定义属性使用的语法

     public string SomeProperty
            {
                get
                {
                    return "属性的值";
                }
                set
                {
                    //设置属性
                }
            }

    get访问器不带参数,且必须返回属性声明的类型。

    只读属性:在属性定义中省略set访问器,就可以创建只读属性。

    只写属性:在属性定义中省略get访问器,就可以创建只写属性。(此方法不推崇)

    构造函数:如果没有提供任何构造函数,编译器会在后台创建一个默认的构造函数。类名和函数名相同。构造函数的重载遵循与其他方法相同的规则。可以为构造函数提供任意多的重载。

    静态构造函数:这种构造函数只执行一次。static 类名

    静态构造函数没有访问修饰符,不能带任何参数,一个类只能有一个静态构造方法。

    C#中的var关键字,表示隐式类型化的变量。

    匿名类型:var和new关键字同时使用。

    C#中的结构,在许多方面看做是缩小了的类。他们基本上与类相同,更适于把一些数据组合起来的类型。

    结构与类的区别:

    1、结构是值类型,不是引用类型。

    2、结构不支持继承。

    3、结构的构造函数的工作方式有一些区别。

    4、使用结构可以指定字段如何在内存中布局。

    虽然结构是值类型,但常常可以把它当做类来处理。


    为结构定义构造函数的方式与类定义构造函数的方式相同,但不允许无参的构造函数。

    部分类:关键字partial,允许把类、结构或接口放在多个文件中。一般的用法就是partial关键字放在class、struct、或interface等关键字的前面。

    静态类:关键字static,静态类在功能上与使用私有静态构造函数创建的类相同。不能创建静态类的实例。

    Object方法:

    System.Object方法:

    1、toString()是获取对象字符串表示的一种便捷方式。

    2、GetHashTable()

    3、Equals()

    4、Finalize()

    5、GetType()

    6、MemberwiseClone()


     实现继承:表示一个类派生于一个基类型,拥有该基类型的所有成员字段和函数。在实现继承中,派生类型的每个函数采用基类型的实现代码,除非在派生类型的定义中指定重写该函数的实现代码。在需要给现有的类型添加功能,或者许多相关的类型共享一个重要的公共功能时,这种类型的继承是非常有效的。

    声明一个类派生于另一个类,用:分割。

    class Myclass:BaseClass 

    接口继承:表示一个类型只继承了函数的签名,没有继承任何实现代码。在需要指定该类型具有某些可用的特殊性时,最好使用这用类型的继承。

    用逗号分隔基类和接口

    C#不支持多重实现继承,但可以派生多个接口。


    抽象类和抽象函数

    用abstract声明,抽象类不能实例化,抽象函数没有执行代码,必须在费抽象的派生类中重写。如果类型包含抽象函数那该类也是抽象的。

    abstract class Building

    {  public abstract decimal method()
    }

    接口:interface

    声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式。一般情况下,接口中只能包含方法、属性、索引器和事件的声明。

    接口不能有构造函数或字段。接口的成员总是公共的

    接口可以彼此继承,继承的方式与类相同


     Array类:是一个抽象类,不能使用构造函数创建数组。

    使用静态方法CreatInstance()创建数组

                //使用array创建数组
                Array intArray1 = Array.CreateInstance(typeof(int), 5);
                for(int i = 0; i < 5; i++)
                {
                    intArray1.SetValue(33, i);
                }
                for(int i = 0; i < 5; i++)
                {
                    Console.WriteLine(intArray1.GetValue(i));
                }

    2、强制将创建的数组转换成int[]数组

     //将自己创建的数组强制转换成声明为int[]数组
                int[] intArray2 = (int[])intArray1;

    将输入的数添加到数组中使用方法是getValue();

    3、复制数组可用方法clone();

    Clone()方法会创建一个新的数组,Copy()方法只传送了阶数相同、有足够元素空间的已有数组。

     //克隆一个新的新的数组
                int[] intArray3 = (int[])intArray1.Clone();

    4、排序,sort方法实现了冒泡排序。需要在数组中实现IComparable接口。


    Array类实现了IEumerable、ICollection和IList接口,以访问和枚举数组中的元素。


    关于运算符

    is运算符可以检查对象是否与特定的类型兼容。表示是否为该类型

    as运算符用于执行引用类型的显式类型转换。如果要转换的类型与指定的类型兼容,转换就会成功进行。如果不兼容,as运算符就会返回null。

    sizeof运算符可以确定堆栈中值类型需要的长度(单位是字节);

    typeof运算符返回一个表示特定类型的System.Type对象。


    关于数据转换

    隐式转换只能从较小的向较大的转换。

    显式转换类似以强制转换。


    运算符的重载

     //定义一个结构,包含成员字段、构造函数、和一个tostring的重写
        struct Vector
        {
            public double x, y, z;//成员字段
            public Vector(double x,double y,double z)//构造函数
            {
                this.x = x;
                this.y = y;
                this.z = z;
            }
            public Vector(Vector rhs)//构造函数
            {
                x = rhs.x;
                y = rhs.y;
                z = rhs.z;
            }
            //方法重写
            public override string ToString()
            {
                return "(" + x + "," + y + "," + z + ")";
            }
        }

    提供了两个构造函数,通过传递每个元素的值,或者提供另一个复制其值的Vector,来指定矢量的初始值。第二个构造函数带一个Vector参数,通常称为复制构造函数。

     //定义一个结构类型
                            Vector vect1, vect2, vect3;
                            vect1 = new Vector(3.0, 3.0, 1.0);
                            vect2 = new Vector(2.0, -4.0, -4.0);
                            vect3 = vect2 + vect1;
    
                            Console.WriteLine("vect1=" + vect1.ToString());
                            Console.WriteLine("vect2=" + vect2.ToString());
                            Console.WriteLine("vect3=" + vect3.ToString());


    委托:当要把方法传递给其他的方法时,需要使用委托。

    定义为:delegate void IntMethodInvoker(int x);


    集合List<T>和ArrayList是和数组相当的集合类。

    1、集合的初始化器

    list<int> intList=new List<int>(){1,2};

    List<string> stringList=new List<string>(){"one","two"};

    2、添加元素Add()方法

    List<int>intList=new List<int>();
    intList.Add(1);
    intList.Add(2);
    
    List<string>stringList=new List<string>();
    stringList.Add("one");
    stringList.Add("two");

    AddRange()方法可以一次给集合添加多个元素。

    3、插入元素Insert(),在指定位置插入元素

    5、删除元素RemoveAt(),删除指定位置的元素

  • 相关阅读:
    webBrowser控制新窗口
    MSIL指令速 查表
    [转载]最新.NET Reactor v4.0.0.0 注册机
    如何得到webbrowser的句柄
    【C#】获取本地Cookie的问题
    visio 2007 简体中文版下载
    VMware Workstation(虚拟机) V6.0.2 Build 59824 汉化版 |
    ComponentOne Studio Enterprise 2010 v1
    [转载]MaxtoCode对.Net程序加密的原理及解密探讨三(实例解密)
    用WPF实现打印及打印预览
  • 原文地址:https://www.cnblogs.com/dongteng/p/6279475.html
Copyright © 2011-2022 走看看