S2深入.NET编程总结

不知从几何时,我也开始变得懒了,以往为了学习的那股子斗劲也早已不在,是时候反思反思了。失败的检测成绩希望可以把我唤醒。

     

经过总结,在本书中大概学到了这些知识:

1、如果一个类可序列化,则它的子类和包含的各成员对象也一定可序列化

   问题出在了子类,如果子类压根不能进行序列化操作,则会抛出异常。

2、如果要使用父类变量指向子类对象,就要满足多态的条件。

3、实现多态的方法:

  虚方法实现多态和使用abstract关键字来修饰父类,在子类中使用override进行重新父类方法   来实现多态。

4、字典集合无下标,所以也就没有RemoveAt() 方法。

5、protected访问修饰符修饰的属性,在其子类中同样可以使用。

6、在C#中,( C)关键字用于子类的构造函数明确指明调用的父类的构造函数。

7、密封类不可以实现多态,解析:密封类不可以被继承,更不可能实现多态。

8、ArrayList集合索引自动维护,解析:

//分析如下C#代码片断,运行后输出的结果是(Google)。
ArrayList list = new ArrayList();
list.Add("Sina");
list.Add("Yahoo");
list.Add("Google");
list.RemoveAt(1);
Console.WriteLine(list[1]);    

9、检查某一个 文件是否存在,如果已经存在则直接打开,如果不存在则创建一个,可以使用FileMode的OpenOrCreate

10、结构体在定义时不可以直接为结构中的成员进行赋值;类则可以。

11、

//关于如下C#的代码,说法正确的是(C);
public class A
{
    string S1;
    protected string S2;
    protected void M1(){}
}
public class B : A
{
    protected string S3;
}
a)    在A中可以访问S3  解析(父类中不可以访问子类受保护成员)
b)    在B中可以访问S1  解析( 如果类中变量没哟访问修饰符修饰,默认访问修饰符是private)
c)    在B中可以访问S2   解析(可以:因为其访问修饰符是protected类型)
d)    在M1( ) 中可以访问S3   解析(不可以在父类方法中访问子类字段)

12、静态变量可以不出现在静态类中;在静态方法中不可以直接使用非静态成员(可以使用对象" . "出非静态成员进行使用);非静态方法中可以直接使用静态成员。

13、实现方法的重载: 方法名相同,参数不同,与返回值类型无关。

14、父类对象as子类对象,失败后,不会报错,返回值为null。

public class A{ }
public class B : A
{
    static void Main()
    {
        A a = new A();
        B b = a as B;
        if (b == null)
            Console.WriteLine("null");
        else 
            Console.WriteLine(b is A);
    }
}
原文地址:https://www.cnblogs.com/john69-/p/5297847.html