.NET/C#⾯试题汇总系列:基础语法

news/2024/9/19 4:47:09/ 标签: .net, c#

1. 字符串中string str=null和string str=""和string str=string.Empty的区别?

  1. string str = null;:这种方式声明了一个字符串变量str,并将其初始化为null。这意味着str不指向任何实际的字符串对象。如果你试图访问str的属性或方法,将会抛出一个NullReferenceException异常。

  2. string str = "";:这种方式声明了一个字符串变量str,并将其初始化为空字符串("")。这意味着str是一个有效的字符串对象,但它的长度为0,没有任何字符。你可以安全地调用str的方法,而不会抛出异常。

  3. string str = string.Empty;:这种方式与string str = "";相同,都是将str初始化为一个空字符串。使用string.Empty是一种编程习惯,因为它明确表示你的意图是将字符串初始化为空。然而,在性能方面,这两种方式没有区别。

总结一下,

如果你想要声明一个未初始化的字符串变量,可以使用string str;(默认情况下,局部变量会被初始化为null)。

如果你想要将字符串初始化为空,可以使用string str = "";string str = string.Empty;。 

2. byte b = 'a'; byte c = 1; byte d = 'ab'; byte e = '啊'; byte g = 256; 这些变量有些 错误是错再哪⾥? 

在C#中,byte是一种基本数据类型,用于表示一个8位无符号整数。它的取值范围是0到255。byte类型的变量可以用来存储二进制数据、图像数据、音频数据等。 

3.string和StringBuilder的区别,两者性能的⽐较 

  1. 可变性:string是不可变的,这意味着一旦创建了一个string对象,就不能更改它的内容。而StringBuilder是可变的,可以在不创建新对象的情况下修改其内容。

  2. 性能:由于string的不可变性,每次对其进行修改时,都需要创建一个新的string对象,这会导致额外的内存分配和垃圾回收开销。而StringBuilder在修改时不会创建新的对象,因此在进行大量字符串操作时,使用StringBuilder的性能会更好。

 4.什么是扩展⽅法?

扩展方法(Extension Methods)是一种在C#中为现有类型添加新功能的方法,而无需修改原始类型的源代码。

条件:按扩展⽅法必须满⾜的条件,

1.必须要静态类中的静态⽅法

2.第⼀个参数的类型是要扩展的类型,并且需要添加this关键字以标识其为扩展⽅法 

建议:通常,只在不得已的情况下才实现扩展⽅法,并谨慎的实现

使⽤:不能通过类名调⽤,直接使⽤类型来调⽤ 

 5.byte a =255;a+=5;a的值是多少?

 byte的取值范围是0--255,a+=1时,a的值时0,所 以a+=5时,值是4

 6.什么是装箱和拆箱?

装箱:将类型转换为引用类型的过程称为装箱

int num = 42;
object boxedNum = num; // 装箱操作

拆箱:将引用类型转换类型的过程称为拆箱

object boxedNum = 42;
int num = (int)boxedNum; // 拆箱操作

装箱和拆箱操作可能会带来性能开销,因为它们涉及到内存分配和数据复制。在编写代码时,应尽量避免不必要的装箱和拆箱操作,以提高程序的性能。 

 7.值类型和引⽤类型的区别

值类型变量是直接包含值。将⼀个值类型变量赋给另⼀个值类型变量,是复制包含的值,默认值是0。

引⽤类型变量的赋值只复制对对象的引⽤,⽽不复制对象本身,默认值是null 

值类型有整形、浮点型、bool、枚举。

引⽤类型有class、delegate、Object、string

 值类型存储在中,引⽤类型存储在

 8.new关键字的作⽤?

  1. 创建对象实例
    MyClass obj = new MyClass(); 
  2. 初始化变量:
    int[] arr = new int[5]; // 创建一个长度为5的整数数组
  3. 调用构造函数
    MyClass obj = new MyClass(param1, param2);
  4. 匿名类型初始化:
    var obj = new { Name = "John", Age = 30 };
  5. 数组初始化
    int[] arr = new int[] { 1, 2, 3, 4, 5 };
  6. 放置语句:
    object obj = new object(); // 将对象放置在堆上

    int num = new int(); // 将对象放置在栈上
  7. 泛型类型参数:
    List<int> list = new List<int>();
  8. 嵌套类访问
    OuterClass.NestedClass nestedObj = new OuterClass.NestedClass();

9. int?和int有什么区别?

  • int?为可空类型,默认值可以是null
  • int默认值是0
  • int?是通过int装箱为引⽤类型实现

使用int?的一个优点是可以避免空引用异常(NullReferenceException) 

10. C#中的委托是什么?

  •  将⽅法当作参数传⼊另⼀个⽅法的参数。
  • .net中有很多常⻅的委托如:Func 、Action
  • 作⽤:提⾼⽅法的扩展性

 11.⽤最有效的⽅法算出2乘以8等于⼏?

位运算是最快,使⽤的是位运算 逻辑左位移<<。 ⽅法是2<<3相当于0000 0000 0000 0010 (2的16位 int⼆进制)左移三位就是 0000 0000 0001 0000(16的⼆进制)

12.const和readonly有什么区别

 const和readonly都是用于声明不可变变量的关键字

 const关键字用于声明常量,即在声明时必须初始化,并且之后不能被修改。

const int myConstant = 10;

 readonly关键字用于声明只读字段,它可以在声明时或构造函数中初始化,并且在对象实例化后可以更改一次。

public class MyClass
{public readonly int a;public MyClass(int value){a = value;}
}

13.现有⼀个整数number,请写⼀个⽅法判断这个整数是否是2的N次⽅

 取模运算: ⽤number%2==0可以判断,但是这个有点低级

 14.CTS、CLS、CLR分别作何解释

1. CTS(Clear To Send):CTS是一种通信协议信号,用于在数据传输之前确认接收方是否准备好接收数据。

2. CLS(Clear Screen):CLS是一个命令或函数,用于清除终端或控制台屏幕上的文本内容。

3. CLR(Clear Register):CLR是一个指令或操作码,用于将寄存器的内容清零。

15.在.net中,配件的意思是?

配件(Assembly)是指一个包含程序集的二进制文件。
1. 程序集:这是.NET应用程序的主要组成部分,它包含了编译后的代码和元数据。程序集可以是动态链接库(DLL)或可执行文件(EXE)。
2. 资源:这些是与程序集关联的数据,如图像、音频、文本等。资源可以被嵌入到程序集中,也可以作为外部文件存储。
3. 清单:清单是一个描述程序集内容的XML文件,它包含了程序集的名称、版本、公钥等信息。清单还描述了程序集所依赖的其他程序集。

 16.分析下⾯代码,a、b的值是多少?

1 string strTmp = "a1某某某";
2 int a = System.Text.Encoding.Default.GetBytes(strTmp).Length;
3 int b = strTmp.Length;

 分析:⼀个字⺟、数字占⼀个byte,⼀个中⽂占占两个byte,所以a=8,b=5

 17.Strings = new String(“xyz”);创建了⼏个String Object?

两个对象,⼀个是“xyz”,⼀个是指向“xyz”的引⽤对象s。

18.静态成员和⾮静态成员的区别 

1.静态成员⽤statis修饰符声明,在类被实例化时创建,通过类进⾏访问

2.不带statis的变量时⾮静态变量,在对象被实例化时创建,通过对象进⾏访问,

3.静态⽅法⾥不能使⽤⾮静态成员,⾮静态⽅法可以使⽤静态成员

4.静态成员属于类,⽽不属于对象

生命周期

  • 静态成员:静态成员变量的生命周期是整个程序运行期间。它们在程序启动时被创建,并且直到程序结束时才被销毁
  • 非静态成员:非静态成员变量的生命周期依赖于对象的生命周期。当对象被创建时,它的非静态成员被创建,当对象被销毁时,这些成员也随之销毁。

访问方式

  • 静态成员:静态成员可以通过类名直接访问,无需创建类的实例。这为在没有实例化对象的情况下使用类的成员提供了可能。
  • 非静态成员:非静态成员只能通过对象实例访问。每个对象有自己独立的非静态成员副本,它们的值可以在不同的对象间有所不同。

19.c#可否对内存直接操作 

 可以,但是不推荐

20.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

 s1+1不能显式转换成short类型,可以修改为s1 =(short)(s1 + 1) 。

short s1 = 1; s1 += 1正确

21.什么是强类型,什么是弱类型?哪种更好些?为什么?

强类型是在编译的时候就确定类型的数据,在执⾏时类型不能更改,⽽弱类型在执⾏的时候才会确定类型。

没有好不好,⼆者各有好处,强类型安全,因为它事先已经确定好了,⽽且效率⾼。

 22.using关键字的作⽤

1. using 指令 - 引入命名空间,也可using 别名

2. using 语句 - 确保资源释放

        释放资源,实现了IDisposiable的类在using中创建,using结束后会⾃定调⽤该对象的Dispose⽅法, 释放资源。

 23.ref和out有什么区别

1.都是按引⽤类型进⾏传递

2.属性不是变量不能作为out、ref参数传递

3.ref参数必须初始化。out不需要初始化

4.作⽤,当⽅法有多个返回值时,out⾮常有⽤

  • 初始值要求‌:ref参数在传递给方法之前必须被初始化,而out参数在传递前不必初始化(尽管在方法内部必须被赋予一个值)。
  • 用途‌:ref常用于需要修改输入参数并返回修改后结果的情况。out则更侧重于输出参数,尤其是当方法需要返回多个值时。
  • 可读性‌:out参数的使用有助于阅读代码的人了解该参数是一个输出值,而ref参数的意图可能不那么明显。

24.a.Equals(b)和a==b⼀样吗? 

 不⼀样,a==b仅仅表示a和b值相等,a.Equals(b)表示a与b⼀致

25.下⾯这段代码求值

1 class Class1
2     {
3         internal static int count = 0;
4         static Class1()
5             {
6                 count++;
7             }
8         public Class1()
9             {
10                 count++;
11             }
12     }
13     Class1 o1 = new Class1();
14     Class1 o2 = new Class1();

o1.count的值是多少?

答案:3,静态 构造⽅法计算⼀次,两个实例化对象计算两次。

 26.关于构造函数说法正确的是哪个?

  • a)构造函数可以声明返回类型。
  • b)构造函数不可以⽤private修饰
  • c)构造函数必须与类名相同
  • d)构造函数不能带参数

答案:c ,构造函数必须与类名相同,可以传递多个传递,作⽤就是便于初始化对象成员,不能有任何返回类型

27.下面这段代码求值

Math.Round(11.5)=12

Math.Round(-11.5)=-12

 28..&和&&的区别

  1. 操作方式
    • & 是一个按位与运算符,它对两个数的每一位进行逻辑与操作。这意味着,如果同一位置的两个比特均为1,则结果在该位置为1,否则为0。例如,12 (1100 in binary) & 7 (0111 in binary) 将产生 4 (0100 in binary)
    • && 是一个布尔逻辑运算符,用于连接两个条件表达式。当两个表达式都为真时,结果才为真。如果第一个表达式为假,则不会计算第二个表达式,因为结果已确定为假。这被称为“短路”行为。
  2. 应用场景
    • & 通常用于整数的二进制操作,如设置特定位、清除特定位或检查特定位的状态。例如,你可以使用按位与来检查一个数字是否为偶数:(number & 1) == 0
    • && 主要用于布尔逻辑判断,如if语句和while循环中的条件判断。例如,你可以在if语句中使用 && 来确保两个条件同时满足:if (isValid && isAuthenticated)
  3. 返回类型
    • & 其操作数通常为整数,返回的结果也是一个整数
    • && 其操作数通常为布尔值,返回的结果也是一个布尔值

 29. i++和++i有什么区别?

1.i++是先赋值,然后再⾃增;++i是先⾃增,后赋值。

2.i=0,i++=0,++i=1; Console.WriteLine(i==i); 结果位true

30.as和is的区别 

as在转换的同时判断兼容性,如果⽆法进⾏转换,返回位null(没有产⽣新的对象),as转换是否成功判 断的依据是是否位null is只是做类型兼容性判断,并不执⾏真正的类型转换,返回true或false,对象为 null也会返回false。

as⽐is效率更⾼,as只需要做⼀次类型兼容检查 

 as 和 is 关键字主要用于类型检查和转换,但它们的行为和用途有所不同

应用场景

  • as: 当你尝试将一个对象转换为另一个类型时,如果转换失败,as操作符不会引发异常,而是返回null。这使得as在不确定类型转换是否安全时非常有用。
  • isis操作符用于检查对象是否为特定的类型。如果对象是指定类型或者是其派生类型,is表达式的结果为true,否则为false。与as不同,is不进行转换,它仅用于类型检查。

返回类型

  • asas操作符尝试将对象转换为指定的类型,并返回转换后的对象或null。如果转换失败,不会引发异常。
  • isis操作符返回一个布尔值,表示类型检查是否成功。

http://www.ppmy.cn/news/1520947.html

相关文章

XXL-JOB分布式任务调度教程(持续更新~)

先大致声明一下流程&#xff08;具体细节在下面哦~&#xff09; 步骤&#xff1a; 1.下载xxl-job并配置以及启动 2.导入对应maven坐标 3.配置对应的配置文件以及编写对应的配置类config 4.编写要触发的方法并且给方法打上XXlJob("")注解 5.设置xxl-Job平台上的任务 …

C#数组中的Rank,GetUpperBound(), GetLength()

Rank-数组的秩&#xff0c;一维数组的Rank1&#xff1b;二维数组的Rank2&#xff1b; GetUpperBound()--获取每一维的索引的上限&#xff0c; 比如int[4,5], 那么GetUpperBound(0) 3; GetUpperBound(1) 4 ; 所以 对于二维数组来说 GetUpperBound(0)1行数&#xff1b; G…

基于STM32设计的智能安防系统(微信小程序)(218)

文章目录 一、前言1.1 项目介绍【1】开发背景【2】项目实现的功能【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】整体构架【3】微信小程序开发思路1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要【5】项目背景1.4 开发工具的选择【1】设备端…

React开源框架之Refine

React Refine 是一个基于 React 的开源框架&#xff0c;它旨在帮助开发者快速构建企业级后台管理系统&#xff08;Admin Panel&#xff09;。Refine 是由 Retax 演变而来&#xff0c;它提供了一套完整的解决方案&#xff0c;用于构建 CRUD&#xff08;创建、读取、更新、删除&a…

将python项目打包成一个可执行文件(包含需要的资源文件)

目标 项目源码是采用Python编写&#xff0c;代码中需要读取部分资源文件。现在需要将项目打包成一个exe文件&#xff0c;没有其他任何多余文件&#xff0c;仅1个exe文件。 打包 安装pyinstaller 在自己项目的虚拟环境中&#xff0c;安装pyinstaller。注意一定要是虚拟环境&…

PostgreSQL的repmgr工具介绍

PostgreSQL的repmgr工具介绍 repmgr&#xff08;Replication Manager&#xff09;是一个专为 PostgreSQL 设计的开源工具&#xff0c;用于管理和监控 PostgreSQL 的流复制及实现高可用性。它提供了一组工具和实用程序&#xff0c;简化了 PostgreSQL 复制集群的配置、维护和故障…

【专项刷题】— 字符串

1、最长公共前缀 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 解法一&#xff1a;两两比较字符串解法二&#xff1a;比较每一个字符串的同一位图解&#xff1a;代码&#xff1a; class Solution {public String longestCommonPrefix(String[] strs) {String ret …

集成电路学习:什么是IDE集成开发环境

IDE&#xff1a;集成开发环境 IDE&#xff0c;全称“Integrated Development Environment”&#xff0c;即集成开发环境&#xff0c;是一种用于提供程序开发环境的应用程序。它集成了代码编写、分析、编译、调试等多种功能于一体的开发软件服务套&#xff0c;为开发者提供了一个…

采用基于企业服务总线(ESB)的面向服务架构(SOA)集成方案实现统一管理维护的银行信息系统

目录 案例 【题目】 【问题 1】(7 分) 【问题 2】(12 分) 【问题 3】(6 分) 【答案】 【问题 1】解析 【问题 2】解析 【问题 3】解析 相关推荐 案例 阅读以下关于 Web 系统设计的叙述&#xff0c;在答题纸上回答问题 1 至问题 3。 【题目】 某银行拟将以分行为主体…

微博视频无水印下载的方法

在如今的数字时代&#xff0c;社交媒体平台如微博已经成为人们分享日常生活、获取新闻和娱乐内容的重要渠道。我们时常会在刷微博时看到一些有趣的视频图片&#xff0c;或是名人的访谈&#xff0c;或是搞笑的短片&#xff0c;有时甚至是一些珍贵的历史资料。这些视频不仅内容丰…

一个“改造”的工厂背后:中国电商的AI重构

电商行业需要更加注重交易的本质&#xff0c;即提供高质量的产品和服务&#xff0c;保护消费者权益&#xff0c;促进公平竞争&#xff0c;提高透明度。 电商产业应该回归到交易、流通和成交这些基本层面&#xff0c;而不是仅仅依赖于价格竞争或者服务的过度承诺。 而大模型所…

R18 XR :NR L2 enhancement

这篇主要看下为支持XR,L2都有哪些增强。主要分3个部分:(1)additionalBS-TableAllowed和Delay Status Report(DSR) (2)UE assistance info for UL traffic information (3) PDU set discard。正文开始: 为了增强 XR 上行资源的调度,引入了以下改进: (1)一个额外的buffer s…

css重置样式表 reset.css 格式化默认css样式

css重置样式表 reset.css 格式化默认css样式 html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,a, abbr, acronym, address, big, cite, code,del, dfn, em, img, ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var,b…

Django+Vue酒店推荐系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质创作者&…

线性代数教材书籍推荐

INTRODUCTION TO LINEAR ALGEBRA, 线性代数导论&#xff0c;GILBERT STRANG &#xff0c;有第六版中译本&#xff0c;网上也有第五版英文电子版&#xff0c;个人认为讲理论最好的教材 Practical Linear Algebra for Data Science&#xff0c;From Core Concepts to Applicatio…

【Python机器学习】NLP词频背后的含义——主成分分析

目录 三维向量上的PCA 回归NLP 基于PCA的短消息语义分析 基于截断的SVD的短消息语义分析 基于LSA的垃圾短消息分类的效果 LSA和SVD的增强 当SVD用于降维时&#xff0c;主成分分析&#xff08;PCA&#xff09;是SVD的另一个叫法。scikit-learn中的PCA模型对SVD做了一些调整…

强推!创新直发核心!时序分解+优化组合+模型对比!VMD-SSA-Transformer-BiLSTM多变量时间序列预测

强推&#xff01;创新直发核心&#xff01;时序分解优化组合模型对比&#xff01;VMD-SSA-Transformer-BiLSTM多变量时间序列预测 目录 强推&#xff01;创新直发核心&#xff01;时序分解优化组合模型对比&#xff01;VMD-SSA-Transformer-BiLSTM多变量时间序列预测效果一览基…

学学vue-1

vue 0 安装 装node.js&#xff0c;以及cnpm&#xff08;npm超时或者被屏蔽&#xff0c;安装cnpm国内镜像&#xff09; 查看安装版本&#xff08;是否安装成功&#xff09; node -v 安装成功之后也会安装npm npm -v cnpm镜像 npm install -g cnpm --registryhttp://registry.np…

安全检查报告模板

概述 本报告旨在对公司的数据、系统安全、管理制度进行自查&#xff0c;并提出相应的整改方案。通过深入分析和评估&#xff0c;发现并解决潜在的安全风险和漏洞&#xff0c;提升公司的数据和系统安全性。 自查结果 2.1数据安全自查结果 1、数据备份与恢复&#xff1a;根据…

大屏可视化:阿里 DataV 大屏怎么做自适应的?

你好&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 阿里 DataV 大屏是一款功能强大的数据可视化应用搭建工具&#xff0c;由阿里云提供&#xff0c;旨在帮助用户通过图形化的界面轻松搭建专业水准的可视化应用。 下面我们一起看下 DataV 大屏 是如何做自适应…