.Net测试试题(C#基础----C#高级编程----SQL Server----ADO.NET----Web前端)

.Net测试试题

范围:(C#基础–C#高级编程–SQL Server–ADO.NET–Web前端)

1、说明值类型与引用类型的区别?

值类型:

  • 存储在堆栈中(后进先出)
  • System.ValueType 中派生的
  • 直接存储数据值
  • 内存是自动释放的
  • 调用速度快
  • 结构体(数值类型、bool型、用户定义的结构体),枚举,可空类型

引用类型:

  • 存放在堆中(引用地址存储在栈中,再由栈(内存)向堆(硬盘)中进行访问)
  • System.Object类
  • 引用类型存储对其值的引用位置
  • 堆内存是.NET中会由GC来自动释放
  • 调用速度慢
  • class、数组、interface 或 delegate、object、dynamic 和 string

2、简述C#中基础访问修饰符的作用?

public(公开的)
所有类的类成员
访问权限:不受任何限制
private(私有的)
所有类或类成员使用
访问权限:只能在本类中访问
protected(受保护的)
应用给类和内嵌类的所有成员
访问权限:当前类及子类
internal
应用给类和内嵌类的所有成员
访问权限: 应用于同一程序集中
internal protected
应用给类和内嵌类的所有成员
访问权限:应用于同一程序集和子类中

3、ADO.NET中的五个主要对象?

DataConnection:连接对象

DataCommand:执行命令和存储过程

DataReader:向前只读的数据流

DataAdapter:适配器,支持增删查询

DataSet:数据存储器

4、C#中委托是什么?事件是不是委托?事件和委托的关系?

委托是一个类,它定义了方法的类型,使得可以将方法作为另一个方法的参数进行传递。

事件是一种引用类型,实际上是一种特殊的委托,事件是对委托的高度封装。

5、重写和重载的区别?Ref与Out参数的作用是什么?

重载:方法名相同,参数列表不同(参数个数,参数类型,不同类型的排列顺序不同)

重写:当一个子类继承一个父类,而子类中的方法与父类中的方法名,参数个数,参数类型都完全一致时,就称子类中的这个方法重写了父类中的这个方法。

区别:重载编译时多态,重写运行时多态,重载不需要继承,重写必须继承。

out参数:输出参数

方法体中的out参数在方法体结束前,必须进行赋值。
在调用具有out参数的方法时,需准备一个带有out关键字的相同类型的变量接收out的结果。
out参数可以视为方法的返回值。

ref参数:引用传参

传进方法的参数,一旦在方法中发生改变,那么这个参数变量将永久性的发生改变。

如果遇到得方法中的参数带有out,ref关键字,那么在调用方法的时候,实参也必须带有out,ref关键字。

6、C#中的索引器是否只能根据数字进行索引?是否允许多个索引器参数?

索引器不只是根据数字进行索引的,参数的个数和类型都是任意的。

索引可以有多个参数,参数类型任意。

7、属性和Public字段的区别是什么?调用set设置的一个属性值,使用get方法读取的值一定是set设置进去的吗?

属性可以对设置值、获取值的过程进行非法值控制,比如年龄禁止设值负数,而字段则不能进行这样的设置。

虽然一般情况下get读取的值就是set设置的值,但是可以让get读取的值不是set设置的值的。

8、装箱和拆箱?

装箱:从值类型转换到引用类型。

拆箱:从引用类型转换到值类型, 前提是装箱

9、CTS、CLS、CLR分别代表什么?对应的作用是什么?

CTS:通用类型系统,一种确定公共语言运行库如何定义、使用和管理类型的规范。

CLS:公共语言规范,是CLR定义的语言特性集合,公共语言规范是一组约束和构造,它充当库编写器和编译器的向导。

CLR:公共语言运行时,用于编码MSIL的代码,主要在.NET的后台环境下运行。

10、类和结构的区别?

同:

类与结构都可以实例化

异:

类是引用类型,结构是值类型

类有默认的构造函数和析构函数,结构不能声明默认的构造函数

结构没有析构函数

结构不支持继承

结构的实例化可以不使用new

结构可以声明构造函数,但必须带参数

11、接口和类的区别?抽象和虚拟的区别?

接口和类的区别?

同:

接口和类都可以从多个接口继承

接口和类都可以包含事件,方法,属性…

异:

类中可以有字段,接口中不能有字段

类中有构造函数和析构函数,接口中没有构造函数和析构函数

类中可以定义具体的方法和实现,接口中只能声明方法,不能实现方法

类可以实例化,接口不能实例化

类可以继承多个接口,但只能继承一个类

接口成员一定要是公开的,不能是静态和虚拟的,类不限制

抽象和虚拟的区别?

同:

抽象方法和虚拟方法都用重写

异:

抽象方法,子类必须实现;虚拟方法,子类可以重写,也可以不重写

抽象方法只能声明,不能实现;虚拟方法有声明有实现

抽象类不能实例化;包含虚拟方法的类可以实例化

12、string和StringBuilder的区别

string是String的别名,它是不可变的,每次赋值都会重新分配内存空间,String类来自于System.Object,不能使用new string()来构造一个string对象。

StringBuilder是可变的,当长度超过时,StringBuilder 将自动创建一个更长的数组,把原来的数据复制到新数组中,来自于 System.Text,可以实例化,支持空参。

13、DataReader和

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力回答你的问题。对于 C# ADO.NET 的小管理窗口,一般需要实现增删改查的功能。下面是一个简单的实现过程: 1. 首先需要创建一个数据库,并创建一个表用于存储数据。可以使用 SQL Server Management Studio 进行创建。 2. 在 C# 中使用 ADO.NET 连接数据库,可以使用 SqlConnection、SqlCommand、SqlDataAdapter 等类。 3. 在窗口中添加控件,如 DataGridView、TextBox、Button 等,用于显示数据和进行增删改查操作。 4. 在窗口加载时,使用 SqlDataAdapter 填充 DataGridView 控件。代码如下: ``` SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM 表名", connectionString); DataTable table = new DataTable(); adapter.Fill(table); dataGridView1.DataSource = table; ``` 5. 在增加按钮的 Click 事件中,获取用户输入的数据,使用 SqlCommand 执行 INSERT INTO 语句插入数据。代码如下: ``` string sql = "INSERT INTO 表名 (字段1, 字段2) VALUES (@值1, @值2)"; SqlCommand cmd = new SqlCommand(sql, connection); cmd.Parameters.AddWithValue("@值1", textBox1.Text); cmd.Parameters.AddWithValue("@值2", textBox2.Text); cmd.ExecuteNonQuery(); ``` 6. 在修改按钮的 Click 事件中,获取用户输入的数据和选中的行,使用 SqlCommand 执行 UPDATE 语句更新数据。代码如下: ``` string sql = "UPDATE 表名 SET 字段1=@值1, 字段2=@值2 WHERE ID=@ID"; SqlCommand cmd = new SqlCommand(sql, connection); cmd.Parameters.AddWithValue("@值1", textBox1.Text); cmd.Parameters.AddWithValue("@值2", textBox2.Text); cmd.Parameters.AddWithValue("@ID", dataGridView1.SelectedRows[0].Cells["ID"].Value); cmd.ExecuteNonQuery(); ``` 7. 在删除按钮的 Click 事件中,获取选中的行,使用 SqlCommand 执行 DELETE FROM 语句删除数据。代码如下: ``` string sql = "DELETE FROM 表名 WHERE ID=@ID"; SqlCommand cmd = new SqlCommand(sql, connection); cmd.Parameters.AddWithValue("@ID", dataGridView1.SelectedRows[0].Cells["ID"].Value); cmd.ExecuteNonQuery(); ``` 以上就是一个简单的 C# ADO.NET 增删改查小管理窗口的实现过程。当然,还有很多需要完善的地方,比如异常处理、数据验证等。希望对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值