C#面试题

本文介绍了C#中的五种访问权限修饰符,包括public、private、internal、protected以及protectedinternal,以及它们的适用范围。同时,讨论了堆和栈两种内存区域的特性和管理方式,其中堆由GC进行垃圾回收。此外,解释了GC的标记清除工作原理,以及函数调用中的形参和实参概念,以及值传递和引用传递的区别。最后,概述了数据库操作中的关键对象,如Connection、DataAdapter、DataSet、Command和DataReader的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C#里面的五种访问权限修饰符

  1. public,是公开的,对类和类成员有效,没有访问成员的级别限制
  2. private,是私有的,对类成员有效,只能在类的内部使用
  3. internal,是内部的,对类和类成员有效,访问仅限于程序集中(程序集:编程生成的.exe结尾的应用程序)
  4. protected,是受保护的,对类成员有效,只能在该类和该类的派生类中使用,而不管该派生类和基类是否在同一个程序集中
  5. protected internal,受保护的内部,如果是继承关系,无论是不是在同一个程序集里都可以访问;如果不是继承关系,只能在同一个程序集中访问

堆和栈的区别

:是无序的,由一片不连续的内存域构成。一般由程序员进行分配和释放,用new、malloc等分配内存函数分配得到的就是在堆上,如果忘记释放的话,当内存达到一定的特定值时,会通过GC自动进行回收。
:是有序的,要保持着先进后出的原则,由一片连续的内存域构成。通常由编译器自动分配和释放,函数体中定义的变量通常在栈上,栈内存无需我们管理,也不受GC管理,当栈元素使用完毕会立马释放。

GC工作原理

C#的GC采用的是标记清除原理,算法分为“标记”和“清除”两个阶段,首先标记出所有需要回收的对象,在标记完成后,统一回收掉所有被标记的对象,也可以反过来,标记存活的对象,统一回收所有未被标记的对象。

形参和实参

形参:在函数定义中出现的参数可以看作一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参
实参:在函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参

值传递和引用传递区别

值传递:传递时,首先为被调用方法的形参分配内存空间,并将实参的值按位置一一对应地复制给形参,此后被调用方法中形参值的改变都不会影响到相应的实参;
引用传递:系统不是将实参本身的值复制后传递给形参,而是将其引用值(即地址值)传递给形参,因此,形参所引用的该地址上的变量与传递的实参相同,方法体内相应形参值的改变都将影响到作为引用传递的实参。

五大对象

  1. Connection:连接对象。连接数据库,通过ConnectionString 数据库连接字符串,用于指定与哪种数据库进行连接。
  2. DataAdapter:适配器对象。通过映射Fill方法来填充DataSet对象,通过update方法来更新数据源中的数据,填充或更新完成后自动断开与数据库服务器的连接。
  3. DataSet:数据集对象。数据表的集合,是DataSet和数据源之间的桥梁,一方面可以通过command对象下达命令后将取得的数据放入DataSet对象中,另一方面可以把用户对DataSet独享做出的更改写入到数据源中。
  4. Command:命令对象。执行SQL语句对数据源进行操作并返回操作结果,对数据源的操作一般包括查看,插入,更新和删除。
  5. DataReader:数据流对象。读取数据库,通过Command对象提供从数据库检索数据信息的功能,以一种只读的、向前的、快速的方式访问数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值