【Unity 题型】C# 基础

知识涉及:Unity
更新日期:2021/6/25
更新内容:复杂变量类型

变量和数据类型 要点


某自定义脚本中,有以下自定义变量:public int a=1;。在 Inspector面板 中将该值手动改为2,随后在脚本中将该变量的初始值改为3,随后点击运行,在游戏中该值被改为4,程序停止后,a的值是多少?

A. 1
B, 2
C. 3
D. 4

答案解析:

  • Unity在运行过程中以Inspector窗口中的数据为第一数据

下列选项中,哪个是引用类型?

A. char类型
B. double类型
C. string类型
D. int类型

答案解析:

  • C#数据类型包括 值类型 和 引用类型
  • 值类型包括 枚举、结构体(数值类型、bool、char)
  • 引用类型包括 类(委托、数组、字符串)、接口

在C#中,下列代码运行后,变量c的值是

int a = 15,b = 10;  
float c = (float)a / b; 

A. 0
B. 1
C. 1.5
D. 5

答案解析:

  • (float)a:将a转换为float类型,float(a)/b按照浮点型除法进行计算。

现有一个名为Teacher的结构,由于封装教师的信息,现在要编写一个方法用于更新Teacher中的一个属性ServiceYears,下面___方法声明是正确的?

A. static void UpdateYears(Teacher t)
B. static void UpdateYears(Teacher[] t)
C. static void UpdateYeats(int t)
D. static void UpdateYears(ref Teacher t)

答案解析:

  • ref形参,操作的是同一个变量,会改变值。

在C#中,一下关于readonlyconst用法的代码,正确的是

A. const Person person = new Person();
B. const Person person = null;
C. class Person { public Person() { readonly string name = "张三";}}
D. public const int age;

答案解析:

  • const修饰字段必须有初始值。
  • 初始值限制只能用null对引用类型(字符串除外)的常量字段进行初始化

装箱是把值类型转换到___类型。

A. 数组
B. 引用
C. char
D. string

答案解析:

  • 装箱:将值类型包装为引用类型
  • 拆箱:将引用类型拆箱为值类型

C#的数据类型有数值类型和___类型两种

A. 结构类型
B. 关系类型
C. 调用类型
D. 引用类型

答案解析:

  • 值类型:包括 简单值类型 与 复合型值类型
    简单值类型:细分为 整数类型、字符类型、实数类型、布尔类型
    复合值类型:简单值类型的复合,如 结构类型 与 枚举类型
  • 引用类型:包括 类、接口、委托、数组
    类:一组具有相同数据结构与数据操作的对象集合。
    接口:应用程序之间互相调用,须达成一协议,被调用的一方在协议中对自己所能提供的服务进行描述。
    委托:用于封装某个方法的调用过程。
    数组:用于同一数据类型的数据进行批量处理。

在C#中,下面类型中是引用类型的是

A. DualogResult枚举
B. System.Double
C. string
D. int

答案解析:

  • 引用类型包括:类、接口、string
  • 值类型包括:结构、枚举

执行以下C#程序,将输出

public class Student {
	public int age;
}

public class Program {
	static void Alter(string id,Student stu) {
		id = "1002";
		stu.age++;
	}
	
	static void Main() {
		Student stu = new Student();
		string id = "1001";
		stu.age = 18;
		Alter(id,stu);
		Console.WriteLine("id = {0},age = {1}", id, stu.age);
	}
}

A. id=“1001”,age=18
B. id=“1001”,age=19
C. id=“1002”,age=18
D. id=“1002”,age=19

答案解析:

  • string id = "1001";在传入Alter()后id覆写为"1002"stu.age = 18;传入Alter()stu.age++为19。
  • 由输出结果为id="1001",age=19

(多选题)以下代码中属于拆箱操作的有

A. string name = (string)obj;
B. float score = Single.Parse(obj.ToString());
C. int age = Convert.ToInt32(obj);
D. double.salary = int.Parse(6.ToString());

答案解析:

  • 装箱:将值类型包装为引用类型的过程
  • 拆箱:将引用类型转换为值类型的过程
    拆箱将对对象强制转换为原来的类型。拆箱的值必须和其转换的目标的变量有相同的类型。

数据类型转换 要点


窗体中有一个年龄文本框 txtAge,下面代码可以获得文本框中的年龄值的是

A. int age = txtAge;
B. int age = txtAge.text
C. int age = Convert.ToInt32(txtAge);
D. int age = int.Parse(txtAge.text);

答案解析:

  • 文本是string类型,应使用int.Parse()强制转换为int类型

下面C#代码片段中,属于装箱的是

A. Object value = 8;
B. int i = (int)o;
C. int i = 8;
D: string s = "abc";

答案解析:

  • 装箱:将值类型包装为引用类型
  • 值类型隐式转换:object类型或由此值类型实现任何接口的过程。
    内部机制:在堆中开辟内存空间 -> 将值类型数据复制到堆中 -> 返回堆中新分配对象的地址。

将变量从字符串类型转换为数值类型可以使用的类型转换方法是

A. string()
B. char()
C. ToString()
D. int.Parse()

答案解析:

  • string():强制转换为string类型
  • char():同上
  • ToString():将其他类型转换为字符串类型。
  • int.Parse():将数字的字符串转换为等效的32位有符号证书

控制语句 要点


下面哪些不是循环语句?

A. while
B. do...while
C. for
D. if...else
E. foreach

答案解析:

  • if...else属于条件判断语句

在C#语言的循环结构中,首先执行一次,然后再判断条件的循环结构是

A. while循环
B. do...whlie循环
C. for循环
D. foreach循环

答案解析:

  • while循环:判断条件,若不成立,执行循环体代码,进入下一次条件判断。成立则跳出循环。
  • do..while循环:先执行循环体代码,再判断,若判断成立,再次循环执行代码内容,直至判断错误。

在C#的条件判断语句switch-case结构中,每个case条件分支中都必须包含的 子句是

A. else
B. break
C. default
D. continue

答案解析:

  • default仅出现于最后,有时不会出现,与case同级。
  • 每一case种必须包含break

关于continuebreak,以下说法正确的是?

A. break是中断本次循环
B. continue是中断本次循环,进入下一次循环
C. break是中断本次循环,进入下一次循环
D. continue是中断整个循环

答案解析:

  • break是退出当前循环体
  • continue是结束本轮次循环,进入下一次循环

复杂变量类型 要点(新增)


在C#中,下述哪个类型不可以直接在命名空间内声明?

A. 数组
B. 接口
C. 结构体
D. 委托

答案解析:

  • 变量严格定义在类中。即数组不可在命名空间内声明。

有说明语句double[,] tab = new double[2,3];那么下面叙述正确的是

A. tab是一个数组维数不确定的数组,使用时可任意调整。
B. tab是一个由两个元素的一位数组,它的元素初始值分别为 2、3
C. tab是一个二维数组,它的元素个数一共有6个
D. tab是一个不规则数组,数组元素可数可变化

答案解析:

  • 二维数组本质:以一维数组作为数组元素的列表。如tab[2, 1]指的是tab表第2行第1列元素。
  • 数组:(1)空间大小确定;(2)不可扩容或减容;

程序中有枚举定义 public enum Level { easy, normal, hard } ,请查看下面的代码,其运行结果为

public class EnumTest{
    public Level level;
    public static void Main(){
        EnumTest test = new EnumTest();
        test.level = (Level)3;
        Console.WriteLine(test.level);
    }
}

A. easy
B. 编译错误
C. 运行错误
D. 3

答案解析:

  • 枚举中各枚举项对应数值,默认从头至后按自然数从小到大排序。
  • 强转数值为枚举类型,仅枚举中存在该数值下,返回该枚举项;反之,返归原数值。

请问经过表达式 a=3+1>5?0:1 的运算,变量a的最终值是什么?

A. 3
B. 1
C. 0
D. 4

答案解析:

  • 条件判断语句 b ? x : y 若b成立,返回值x;反之返回值y。

关于交错数组的说法正确的是

A. 交错数组的行数与列数固定
B. 声明交错数组的语法是 类名[,] 变量名
C. 交错数据初始化语法是 变量名 = new 类名[][];
D. 交错数组可以自动扩充数组长度

答案解析:

  • 交错数组:行数固定、列数不固定。每行需初始化,且不可扩充。
    声明语法类名[][] 变量名
  • 二维数组声明 类名[,] 变量名

定义一个数组,正确的代码为?

A. int[] array = new int[5]
B. int[] array = new int[5]
C. int array = new int[];
D. int[5] array = new int;

答案解析:

  • 数组定义遵循三步骤:声明 -> 开辟空间 -> 赋值

在C#中,使用下列哪个关键字来定义结构?

A. static
B. struct
C. abstract
D. enum

答案解析:

  • static 静态 、struct 结构体 、 abstract 抽象 、enum 枚举

关于数组pins的定义int[] pins=new int[4]{9,2,3,1}; 则pins[1]的结果为

A. 1
B. 2
C. 3
D. 9

答案解析:

  • 数组在声明和初始化后,可使用所引起进行访问。索引开头从0开始,即第一元素。

假定一个10行20列的二维整型数组,下列哪个定义语句正确的是

A. int[] arr = new int[10, 20];
B. int[] arr = int new[10 ,20];
C. int[,] arr = new int[10, 20];
D. int[,] arr = new int[20; 10];

答案解析

  • 二维数组A[m][n],这是一个m行,n列的二维数组

下面关于类和结构体的说法,错误的是

A. 类可以被继承,而结构体不可以
B. 类可以用new创建对象,而结构体不可以
C. 类是引用类型,而结构体不可以
D. 类中可以直接给字段赋予初始值,而结构体不可以

答案解析:

  • 结构体隐式密封,不可作为基类在派生出其他结构,不可从类派生。仅可从接口派生。
  • 结构体中构造函数不可删除或重定义。不会因为定义其他函数而消失。
  • 结构体可用new创建对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值