目录
11.用最有效的方法算出2乘以8等于几?
位运算是最快,使用的是位运算 逻辑左位移<<。 方法是2<<3相当于0000 0000 0000 0010 (2的16位int二进制)左移三位就是 0000 0000 0001 0000(16的二进制)
12.const和readonly有什么区别?
- 修饰对象不同。const即可以修饰类的字段,也可以修饰局部变量;readonly只能修饰类的字段
- const是编译时常量,在编译时确定该值;readonly是运行时常量,在运行时确定该值。
- const默认是静态的;而readonly如果设置成静态需要显示声明
- 修饰引用类型时不同,const只能修饰string或值为null的其他引用类型;readonly可以是任何类型。
13.现有一个整数number,请写一个方法判断这个整数是否是2的N次方
可以使用位运算符来写一个方法来判断一个整数是否是 2 的 N 次方。
可以使用位运算符 & 来判断一个数是否是 2 的倍数。例如
bool IsPowerOfTwo(int number)
{
return (number & (number - 1)) == 0;
}
14.CTS、CLS、CLR分别作何解释
CTS(Common Type System)是 .NET Framework 中的一部分,它定义了可以在 .NET Framework 应用程序中使用的类型的规范。 CTS 定义了类型的基本特征,包括类型的继承、封装、多态性和可空性等。
CLS(Common Language Specification)是 .NET Framework 中的一部分,它定义了跨语言开发的规范。CLS 定义了哪些语言特性是必须的,以便在 .NET Framework 中的各种语言之间进行交互。
CLR(Common Language Runtime)是 .NET Framework 中的一部分,它是一个虚拟机,负责执行 .NET Framework 应用程序的字节码。CLR 负责加载并执行应用程序的代码,并为应用程序提供服务,包括内存管理、异常处理、安全性、垃圾回收等。
总之,CTS 定义了 .NET Framework 中的类型,CLS 定义了跨语言开发的规范,CLR 负责执行 .NET Framework 应用程序的代码。
15.在.net中,配件的意思是?
程序集。(中间语言,源数据,资源,装配清单)
16.分析下面代码,a、b的值是多少?
string strTmp = "a1某某某";
int a = System.Text.Encoding.Default.GetBytes(strTmp).Length;
int b = strTmp.Length;
现在一般编码是UTF8
汉字占3个byte,所以a=1+1+3+3+3=11
b是5
18.静态成员和非静态成员的区别
1.静态成员用static修饰符声明
2.不带static的变量时非静态变量,在对象被实例化时创建,通过对象进行访问,
3.静态方法里不能使用非静态成员,非静态方法可以使用静态成员
4.静态成员属于类,而不属于对象
19.c#可否对内存直接操作
C# 可以对内存进行直接操作。在 C# 中,你可以使用指针来访问内存。指针是一种特殊的变量,它存储了一个内存地址,指向一个值的存储位置。
使用指针可以直接访问内存,而不是通过变量名间接访问。使用指针可以提高程序的性能,因为它可以直接访问内存,而不需要通过函数调用来访问。
使用指针需要注意几点:
- 需要在程序中启用指针。要使用指针,必须在程序的开头使用
unsafe
关键字来启用指针。 - 使用指针需要注意越界访问。使用指针可能会导致越界访问,即访问了未分配给程序的内存。
- 使用指针需要谨慎。使用指针可以提高程序的性能,但是也会增加程序的复杂度,并且容易出错。
unsafe
{
int i = 10;
int* p = &i;
Console.WriteLine(*p); // 输出 10
}
20.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
s1+1不能显式转换成short类型,可以修改为s1 =(short)(s1 + 1) 。
short s1 = 1; s1 += 1正确: [+= ] 运算符会将1转换成short类型再进行运算