错题整理

C#中,下列关于简单工厂设计模式的说法不正确的是( A )。

a) 简单工厂产生的对象都是静态对象

b) 创建产品的方法返回类型都是父类

c) 使用该模式解决了代码中大量使用new 的问题

 

d) 简单工厂的缺点是对修改不封闭,新增加产品就需要修改工厂

解析:对象没有静态和动态之分

 

下列关于虚方法virtual和抽象方法abstract的描述中错误的是( C)。

 

a) 虚方法必须有方法体,可以被子类重写

 

b) 抽象方法不允许有方法体,且必须被子类重写

 

c) 抽象方法必须在抽象类中,而虚方法可以在所有类中

 

d) 在子类中重写抽象方法或虚方法,都需要用override关键字

解析:密封类和静态类中不能书写

 

UML类图中使用(B )符号表示私有成员。

 

 

 

a) +

 

b) -

 

c) *  ~

 

d) #  

解析*  ~:package         #  受保护类型

 

在开发C#程序过程中,会大量地使用类和对象,其使用方法不包括( BC)。

 

a) 将类实例化为对象

 

b) 将对象实例化为类

 

c) 通过类访问非静态属性或方法

 

d) 通过对象访问非静态属性或方法

 

运行下面C#代码将会出现编译错误,出现错误的位置是( D)。

 

class Teacher

 

    {

 

        public Teacher(string name)

 

        {

 

            this.Name = name;                          //1

 

        }

 

        private string name;

 

        public string Name

 

        {

 

            set { name = value; }                        //2

 

        }

 

 

 

        static void Main(string[] args)

 

        {

 

            Teacher teacher = new Teacher("Jason");       //3

 

            Console.WriteLine(teacher.Name);             //4

 

        }

 

}

 

 

 

a) 1

 

b) 2

 

c) 3

 

d) 4

 

  解析:只有set访问器,证明只能赋值,不能获取值

 

12) 下面关于泛型集合Dictionary<String, Person> dict = new Dictionary<String,Person>()的操作代码正确的是(C )。

 

 

 

a) dict.Remove(dict[0]) 

 

b) dict.RemoveAt(0)  

 

c) foreach(Person per in dict.Values){}  

 

d) foreach(Person per in dict.Keys){}

解析:  A:dict[0]不对,dict只能通过key访问,不可通过下标访问。

B:没有RemoveAt方法

 

 

18) C#语言中,以下关于集合的说法错误的是(A,C)。

 

 

 

a) ArrayList只能通过索引来访问和删除值 

 

b) Hashtable可以直接通过名来获取 table[key]

 

c) 使用List<T>添加、读取元素时不需要拆箱和装箱,这一点和ArrayList相同

 

d) 使用Dictionary<K,V>可以通过Key获取Value,这一点和Hashtable相同

解析:也可以直接删除某个对象   C:ArrayList需要拆箱

      

19) 分析如下C#程序,运行输出的结果是( B)。

 

   注意是结构体

 

public struct Size

 

    {

 

        public int x;

 

        public int y;

 

        public Size(int x, int y)

 

        {

 

            this.x = x;

 

            this.y = y;

 

        }

 

    }

 

 

 

    class Test

 

    {

 

        static void Main()

 

        {

 

            Size size1 = new Size(8,10);

 

            Size size2 = size1;

 

            size1.y = 200;

 

            Console.WriteLine("{0} | {1}",size1.y,size2.y);

 

        }

 

    }

 

  

 

a) 200 | 200

 

b) 200 | 10

 

c) 10 | 10

 

d) 10 | 200

假设要使用C#设计一个日志系统,要求程序运行时,检查 system.log 文件是否存在,如果已经存在则直接打开,如果不存在则创建一个,为了实现这个目的,应该以FileMode的(C)方式创建文件流。

a) CreateNew

b) Open

c) OpenOrCreate

d) Create

22) 下面不是C#的访问修饰符的是(AD)。

a) protected

b) internal

c) public

d) internal protected

24) 关于如下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   解析(不可以在父类方法中访问子类字段)

 

25) 关于如下C#代码的说法中,正确的是(D)。

public class Test    //

{

    private static int Max = 100;    // 成员变量:

    public Test(int max)

    {  

        Max = max;    //

    }

    public int GetMax()

    {

        return Max;    //

    }

}

 

a) ⑴行中必须将Test类定义为静态类 

       静态变量可以不出现在静态类中

b) ⑵中不能将静态成员Max定义为private

c) ⑶中不能给静态成员Max赋值

d) ⑷中可以使用静态成员Max

 

30) C#中,下面类型中是引用类型的是(CD)。

 

a) DialogResult枚举

 

b) System.Int64

 

c) string

 

d) StringBuilder 

 

posted @ 2018-01-26 16:31  小白装大神  阅读(258)  评论(0编辑  收藏  举报