【Unity 题型】C# 进阶

知识要点:Unity

泛型集合

答案:DBBBB CABDB


1. 下列关于List的说法错误的是

A. List 类的用法类似于 ArrayList
B. List 要比 ArrayList 有更大程度的数据安全性
C. 访问 List 中的元素时,无需做类型转换
D. List 中的T只能是值类型

答案解析

  • List 泛型集合,可为任意类型,在声明时指明了数据类型,为最安全的。

2. 分析如下的C#代码段,运行后将输出

ArrayList arrnum = new ArrayList();
for(int i=0; i<16; i++)
    arrnum.Add(i);
}
Arrnum.RemoveAt(1);
Console.WriteLine(arrnum.Capacity);
Console.WriteLine(arrnum.Count);

A. 8 16
B. 16 15
C. 16 16
D. 32 17

答案解析

  • Capacity为ArraList开辟的存储空间大小
  • Count为实际存储个数

3. 某学员用C#写了如下一段代码,该代码的输出结果实

static void Main(string[] args)
{
	ArrayList list = new ArrayList();
    list.Add("ACCP");
    list.Add("BENET");
    Console.WriteLine(list[1]);
    Console.Read();
}

A. ACCP
B. BENET
C. 下标溢出错误
D. 1

答案解析

  • 使用非泛型集合ArrayList添加元素均从结尾处添加,无法中间插入。

4. 有一个List类型的集合list,执行如下的代码后,list[0]的值是

list.Add("A");
list.Add("B");
list.Add("C");
list.RemoveAt(0);
list.RemoveAt(1);

A. A
B. B
C. C
D. D

答案解析:

  • 进行第一次移除后,移除元素所在位置的后续元素均向前移动。即元素B被移动至list[0]位置处

5. 以下C#代码运行结果是

public void Test ()
{    
	List<int> numbers = new List<int>();    
	for(int i=1; i<6; i++) 
	{   
		numbers.Add(i);    
	}    
	for(int i=1; i<3; i++) 
	{   
		numbers.Remove(i); }
		foreach(int i in numbers)    
		{   
			Console.Write(i.ToString());    
		}
	}
}

A. 运行出错
B. 345
C. 145
D. 135

答案解析

  • 依次给numbers集合添加值12345,在把12移除。所以最后List中只剩下345了。

6. 在C#语言中,以下关于集合的说法错误的是

A. ArrayList 只能通过索引访问和删除值
B. HashTable 可以直接通过键名获取值
C. 使用 List 添加、读取元素时不需要进行拆箱装箱操作,这一点与 ArrayList 相同
D. 使用 Dictionary<k, v> 可以通过key获取value,这一点和HashTable相同

答案解析

  • List添加、读取元素不需进行拆装箱操作。
  • ArrayList为弱类型集合,添加、读取元素需进行拆装箱操作。且只能通过索引访问与删除对象
  • Dictionary 与 HashTable 均可通过 key 获取 value 值

7. 下面可以删除list中所有的“mary”的代码是

ArrayList list=new ArrayList();
list.Add("mary");
list.Add("tom");
list.Add("mary");
list.Add("mary");
list.Add("rose");

A.

forint i=list.Count-1, i>=0, i--{
	if(list[i] == "mary") {
		list.RemoveAt(i);
	}
}

B. list.Remove (”mary”);
C.

for(int i=0, i<list.Count, i++) {
	if(list[i] == "mary") {
		list.RemoveAt(i);
	}
} 

D. list.Clear()

答案解析

  • list.Remove() 不能删除所有对应元素。删除中间元素会影响后续元素队列索引
  • list.Clear() 清楚所有元素
  • list.RemoveAt() 删除对应索引元素

8. 给定如下C#代码,编译运行的结果是

using System.Collections;

public class Test{
	public static void main(String[] args){
    	ArrayList list = new ArrayList();
   		list.add("A");
   		list.add(2);
   		String s = (String)list[1];
   		Console.WriteLine(s);
    }
}

A. 编译时发生错误
B. 运行时发生异常
C. 正确运行,输出A
D. 正确运行,输出B

答案解析

  • 不存在 String 强制转换方式,但编译器不会报错,运行时会发生异常。

9. 用户可以通过___类将数据作为一组键值对来存储,这些数据是根据键值进行组织的

A. ArrayList
B. Array
C. IList
D. HashTable

答案解析

  • Dictionary 与 HashTable 的数据根据键值进行索引
  • ArrayList、Array、IList均为通过索引与值对应

10. 在C#中,下列代码的运行结果是

Hashtable hsStu=new Hashtable();
hsStu.Add(3,"甲");
hsStu.Add(2,"乙");
hsStu.Add(1,"丙");
Console.WriteLie(hsStu[3]);

A. 3
B. 甲
C. 1
D. 丙

答案解析

  • Hashtable的存储数据方式是用键值对的形式,读取时是以键为索引获取值,以3为键的值为“甲”

数据结构

答案:DDDAC B
多选:(BC)


1. 下列.net类库中与集合相关的是

A. Systrm.Hash
B. System.List
C. System.Security
D. System.Collctions

答案解析

  • System.Security 命名空间提供公共语言运行时安全系统的基础结构,包括权限的基类。

2. 在C#语言中,下面类型中元素个数可动态改变的是

A. string[]
B. string[N]
C. Array
D. ArrayList

答案解析

  • ArrayList使用大小会根据动态增加的数据实现IList接口。数组类型则是声明时已确定大小。

3. 执行如下C#代码,输出结果是

List<string> list = new List<string>();
list.Add("张三");
list.Add("李四");
list.Remove("张三");
Console.WriteLine(list[0]);

A. null
B. 0
C. 张三
D. 李四

答案解析

  • 泛型集合中 List列表,List.Remove(“张三”),移除 张三元素,List[0]为李四

4. 以下C#代码中,Book为图书类,通过Book类构造函数可初始化其Name属性,则下面代码的输出结果为?

Dictionary<string, Book> books = new Dictionary<string, Book>();
books.Add("1001", new Book("C#OOP"));
Console.WriteLine(books["1001"].Name);

A. C#OOP
B. Book
C. 1001
D. 程序运行错误

答案解析

  • 字典是根据键值对去存储数据的。一个键对应一个值,根据键去读取值。这里打印的是books中键为“1001“的值的Name

5. 以下C#代码运行结果是

public void Test ( )
{    
	List<int> numbers = new List<int>();    
	for(int i=1;i<6;i++) 
	{   
		numbers.Add(i);    
	}    
	for(int i=2;i>0;i--) 
	{   
		numbers.RemoveAt(i); 
	}
	foreach(int i in numbers)    
	{   
		Console.Write(i.ToString()); 
	}
}

A. 运行错误
B. 345
C. 145
D. 135

答案解析

  • 泛型集合先添加12345整数,在移除索引为2和1的值。所以结果为145。

6. 以下哪一个不是栈的基本运算

A. 删除栈顶元素
B. 删除栈底元素
C. 判断栈是否为空
D. 将栈置为空栈

答案解析

  • 删除栈顶元素,将栈清空和判断栈是否为空都是栈的基本运算

1. (多选题)面的C#代码运行的时候会出现错误的是

A.

ArrayList al = new ArrayList();
al.Add(100);
al.Add(100);

B.

Hashtable th = new Hashtable();
ht.Add("张三", new object());
ht.Add("张三", new object());

C.

List<string> list = new List<string>();
string name = list[0];

D.

Dictionary<string, object> dict = new Dictionary<string, object>();
foreach(object p in dict.values) {}

答案解析

  • Hashtable中的key必须是唯一的,C中list集合没有声明大小,用list[0]赋值会超出索引范围。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值