考试题型 选择题20道 填空题5道 判断题4道 简答题3道 编程题2道
判断题 (考4道)
-
若某页面上包含动画内容,则该页面肯定是动态页面(×)
-
一个网站中可以同时包含静态页面和动态页面(√)
-
数组可以由一组数据类型不相同的元素组成(×)
-
foreach语句适用于枚举组中的元素(√)
-
当一个类实例化,它的构造函数中包含的代码肯定会执行(√)
-
自动属性能使编译器自动底生成私有变量以及默认的get和set访问器。(√)
-
单击Button类型控件会形成页面往返处理。(√)
-
当页面往返时,在触发控件的事件之前会触发Page.Load事件。(√)
-
不能再服务器端访问HTML服务器控件。(×)
选择题(考20道)
-
以下选项不包括编程语言的是(A)
-
A. ASP.NET
-
B. Python
-
C. Visual C#
-
D. Java
-
APP_Code文件夹用来储存 (C)
-
A. 数据库文件
-
B. 共享文件
-
C. 代码文件
-
D. 主题文件
-
-
Web.config
文件不能用于 (A)-
A. Application事件处理代码的定义
-
B. 数据库连接字符串的定义
-
C. 对文件夹的访问权限
-
D. 自定义应用程序的配置
-
-
下列数据类型属于值类型的是 (A)
-
A. struct
-
B. class
-
C. interface
-
D. delegate
-
-
下列数据类型属于引用类型的是 (C)
-
A. bool
-
B. char
-
C. string
-
D. enum
-
-
下面对protected修饰符说法正确的是 (D)
-
A. 只能在派生类中访问
-
B. 只能在所属的类中访问
-
C. 能在当前应用程序中访问
-
D. 能在所属的类或派生类中访问
-
-
Web服务器控件不包括 (B)
-
A. Table
-
B. Input
-
C. AdRotator
-
D. Calendar
-
-
单击Button类型控件后能执行客户端脚本的属性是 (A)
-
A. OnClientClick
-
B. OnClick
-
C. OnCommandClick
-
D. OnClientCommand
-
选择题(全部)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1. (1)A(2)D(3)A 2. (1)D (2)B (3)C (4)A (5)A 3. (1)A (2)C (3)D (4)B (5)D (6)B 4. (1)B(2)C(3)A(4)D(5)B 5. (1)A (2)D(3)B(4)C 6. (1)C(2)A(3)A(4)D(5)B 7. (1)A(2)B(3)C 8. (1)B (2)A (3)D 9. (1)B(2)C (3)A 10. (1)D(2)A(3)B(4)D 11. (1)B(2)A(3)D 12. (1)A(2)D(3)C(4)B 13. (1)D(2)A(3)B 14. (1)C(2)A(3)B(4)D
填空题(考5道)
-
NET Framework 主要包括 公共语言运行库CLR 和 类库
-
在单文件页模型中,C#代码必须包含于
<script>…</script>
-
C#使用的类库就是 .NET Framework 提供的类库
-
要在一个类中包含
System.Data
命名空间的语句是using System.Data
-
若在TextBox控件中输入内容并当焦点离开时触发TextChanged事件,则应设置 AutoPostBack="True"
-
通过 IsPostBack 属性可以判断页面是否第一次载入。
-
ASP.NET的服务器包括 HTML服务器控件 和 Web服务器控件。
-
当需要将TextBox控件作为密码输入框时,应设置 TextMode="Password"。
简答题(考3道)
-
简述Global.asax文件特点及作用
特点:
-
GlobaLasax文件(全局应用程序类文件)是一个可选文件,用于包含响应应用程序级别 和会话级别事件的代码。
-
若一个网站中包含GlobaLasax,则必须存储于网站的根文件夹,且 每个网站只能包含一个GlobaLasax文件。
-
当用户向一个.aspx文件首次发出访问请求时,Web 服务器都会执行Global.asax文件。因此,包含在Global.asax文件中的代码将首先被执行。
作用:
-
Application_Start() : Web应用程序启动时运行的代码。
-
-
Application_End():Web应用程序关闭时运行的代码。
-
Application_Error():Web应用程序出现未处理的错误时运行的代码。
-
-
Session_Start():用户访问Web应用程序启动新会话时运行的代码。
-
Session_End():用户结束会话时运行的代码。
-
-
请说明修饰符 public、internal、protected、protected internal 、private 的区别。
-
public:公共成员可以在任何地方访问,包括其他类和程序集。
-
internal:内部成员只能在同一程序集中访问,对于其他程序集是不可见的。
-
protected:受保护成员可以在其定义类及其派生类中访问,但对于外部代码是不可见的。
-
protected internal:受保护内部成员可以在当前程序集中访问,也可以在其定义类及其派生类中访问。
-
private:私有成员只能在其定义类中访问,对于其他类和程序集是不可见的。
修饰符 访问级别 可见性 子类中是否可见 程序集中是否可见 public 公共 任何地方可见 是 是 internal 内部 同一程序集可见 是 否 protected 受保护 同一程序集,子类可见 是 否 protected internal 受保护内部 同一程序集可见 是 是 private 私有 同一类可见 是 否 -
public:
-
公共成员可以在任何地方访问,包括其他类和程序集。
public class MyClass { public int MyPublicField; public void MyPublicMethod() { } }
-
-
internal:
-
内部成员只能在同一程序集中访问,对于其他程序集是不可见的。
internal class MyInternalClass { internal int MyInternalField; internal void MyInternalMethod() { } }
-
-
protected:
-
受保护成员可以在其定义类及其派生类中访问,但对于外部代码是不可见的。
public class MyBaseClass { protected int MyProtectedField; protected void MyProtectedMethod() { } } public class MyDerivedClass : MyBaseClass { public void AccessProtectedMember() { MyProtectedField = 42; // 可以访问基类的受保护字段 MyProtectedMethod(); // 可以调用基类的受保护方法 } }
-
-
protected internal:
-
受保护内部成员可以在当前程序集中访问,也可以在其定义类及其派生类中访问。
public class MyProtectedInternalClass { protected internal int MyProtectedInternalField; protected internal void MyProtectedInternalMethod() { } }
-
-
private:
-
私有成员只能在其定义类中访问,对于其他类和程序集是不可见的。
public class MyPrivateClass { private int MyPrivateField; private void MyPrivateMethod() { } }
-
-
-
简述值类型和引用类型的区别。
C#数据类型有值类型和引用类型两种。
值类型变量直接包含它们的数据,而引用类型变 量存储它们的数据的引用。
对于值类型,一个变量的操作不会影响另一个变量;
而对于引用 类型,两个变量可能引用同一个对象,因此对一个变量的操作可能会影响到另一个变量。
特征 | 值类型 | 引用类型 |
---|---|---|
存储方式 | 直接存储数据 | 存储在堆上,变量存储引用 |
内存管理 | 生命周期与作用域相同 | 生命周期受引用计数和垃圾回收器控制 |
性能 | 访问速度较快 | 访问速度较慢,适用于大型数据结构 |
复制行为 | 复制数据本身 | 复制引用,多个引用指向同一对象 |
基本类型示例 | 整数、浮点数、字符、布尔 | 类、接口、数组、委托等 |
总结:
-
值类型通常更轻量,适用于小型数据,存储在栈上,具有更快的访问速度。
-
引用类型适用于大型、复杂的数据结构,存储在堆上,通过引用访问,具有更灵活的生命周期管理。
知识点
验证某个值的范围(第五章)(正则表达式,JS判断还有第五章的方法都可以);
-
RequiredFieldValidator
(必需字段验证器):-
作用: 用于确保某个输入字段不为空。
-
属性:
ControlToValidate
指定要验证的输入控件。
-
<asp:RequiredFieldValidator ID="rfvName" runat="server" ControlToValidate="txtName" ErrorMessage="姓名是必填项" />
-
CompareValidator
(比较验证器):-
作用: 用于比较两个输入字段的值。
-
`**属性:**
ControlToValidate指定要验证的输入控件,
ControlToCompare指定要比较的输入控件,
Operator` 指定比较操作。
-
<asp:CompareValidator ID="cvPassword" runat="server" ControlToValidate="txtPassword" ControlToCompare="txtConfirmPassword" Operator="Equal" ErrorMessage="密码和确认密码不匹配" />
-
RangeValidator
(范围验证器):-
作用: 用于确保输入值在指定的范围内。
-
属性:
ControlToValidate
指定要验证的输入控件,MinimumValue
和MaximumValue
指定范围的最小和最大值。
-
<asp:RangeValidator ID="rvAge" runat="server" ControlToValidate="txtAge" Type="Integer" MinimumValue="18" MaximumValue="99" ErrorMessage="年龄必须在18到99之间" />
-
RegularExpressionValidator
(正则表达式验证器):-
作用: 用于基于正则表达式的模式匹配验证。
-
属性:
ControlToValidate
指定要验证的输入控件,ValidationExpression
指定正则表达式模式。
-
<asp:RegularExpressionValidator ID="revEmail" runat="server" ControlToValidate="txtEmail" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ErrorMessage="请输入有效的邮箱地址" />
-
CustomValidator
(自定义验证器):-
作用: 允许开发人员编写自定义的客户端和服务器端验证逻辑。
-
属性:
ControlToValidate
指定要验证的输入控件,ClientValidationFunction
和ServerValidate
用于指定自定义验证逻辑。
-
<asp:CustomValidator ID="cvCustom" runat="server" ControlToValidate="txtCustom" ClientValidationFunction="validateCustom" OnServerValidate="ServerValidateCustom" ErrorMessage="自定义验证失败" />
-
ValidationSummary
(验证摘要):-
作用: 显示所有验证错误的摘要。
-
属性:
ShowMessageBox
指定是否在客户端显示摘要弹出框。
-
<asp:ValidationSummary ID="vsSummary" runat="server" ShowMessageBox="true" />
Cookie和Session的使用、优缺点、区别;
-
使用
Cookie:
// 创建一个 Cookie HttpCookie cookie = new HttpCookie("UserPreferences"); cookie.Value = "DarkTheme"; cookie.Expires = DateTime.Now.AddMonths(1); Response.Cookies.Add(cookie); // 读取 Cookie HttpCookie readCookie = Request.Cookies["UserPreferences"]; if (readCookie != null) { string theme = readCookie.Value; // 进行相应的操作 }
Session:
// 将值存储到 Session Session["UserID"] = "123"; // 从 Session 中读取值 string userId = (string)Session["UserID"];
-
优缺点
Cookie Session 优点 跨域名访问:可以在同一浏览器中跨多个页 面和域名共享数据。 客户端存储:不占用服务器资源,数据存储在客户端。 安全性:数据存储在服务器端,相对较安全。 可以存储较大量的数据。 支持跨标签页共享。 缺点 安全性:容易被恶意用户篡改,因此不适合存储敏感信息。 大小限制:存储容量有限。 不支持跨标签页共享。 占用服务器资源:每个用户的Session信息都需要在服务器端存储,对服务器资源有一定压力。 跨域名访问复杂:默认情况下,Session不能跨域名访问,需要额外的配置。 变成表格 -
区别
Cookie Session 存储位置 存储在客户端(浏览器) 存储在服务器端 大小限制 有大小限制,通常为4KB 理论上无限制,但受服务器配置和性能影响 安全性 容易被恶意用户篡改,不适合存储敏感信息 相对较安全,但仍需注意防范会话劫持等攻击 访问方式 可以通过JavaScript读取和写入 通常通过服务器端编程语言(如PHP、ASP.NET)来读取和写入 生命周期 可以设置过期时间,可以是会话级别或长期存储 通常与用户的会话周期一致,失效时间由服务器设定
判断页面是否为第一次载入相关知识;
4.1.2 IsPostBack 属性
当控件的事件被触发时,Page.Load
事件会在控件事件之前被触发。如果想在执行控件 的事件处理代码时不执行Page_Load()方法代码,可以通过判断Page.IsPostBack
属性值实现, IsPostBack
属性在用户第一次浏览页而时,会返回值false,否则返回值true。
注意:当.aspx
文件中@Page
指令的AutoEventWireup
属性值为true时, ASP.NET能自动将页面事件绑定到名为“Page事件名”的方法。例如,Page.Load
事件会自动绑定到 Page_Load()
方法,也就是说,触发Page.Load
事件后,将执行Page_Load()
方法中包含的代码。而要把控件事件绑定到对应的方法,需要设置名为 “On事件名” 的属性。例如,将 ID 属性值为btnSubmit
的按钮控件的Click事件绑定到BtnSubmit_Click()
方法,需要设置 OnClick="BtnSubmit_Click"
控件的自动回调属性(AutoPostBack属性);
AutoPostBack
属性是在ASP.NET Web Forms中一些特定控件上的属性,用于指示当控件的值发生变化时是否自动执行回发(PostBack)。回发是指将页面发送回服务器,以便进行服务器端处理。
-
TextBox
(文本框):<asp:TextBox ID="txtInput" runat="server" AutoPostBack="true" OnTextChanged="txtInput_TextChanged"></asp:TextBox>
作用: 当文本框的文本内容发生变化时,会自动向服务器发送回发请求,并触发
txtInput_TextChanged
事件。 -
DropDownList
(下拉列表):<asp:DropDownList ID="ddlOptions" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlOptions_SelectedIndexChanged"> <asp:ListItem Text="Option 1" Value="1"></asp:ListItem> <asp:ListItem Text="Option 2" Value="2"></asp:ListItem> </asp:DropDownList>
作用: 当下拉列表的选中项发生变化时,会自动向服务器发送回发请求,并触发
ddlOptions_SelectedIndexChanged
事件。 -
CheckBox
(复选框):<asp:CheckBox ID="chkBox" runat="server" AutoPostBack="true" OnCheckedChanged="chkBox_CheckedChanged" />
作用: 当复选框的选中状态发生变化时,会自动向服务器发送回发请求,并触发
chkBox_CheckedChanged
事件。 -
RadioButton
(单选按钮):<asp:RadioButton ID="rbOption" runat="server" AutoPostBack="true" OnCheckedChanged="rbOption_CheckedChanged" />
作用: 当单选按钮的选中状态发生变化时,会自动向服务器发送回发请求,并触发
rbOption_CheckedChanged
事件。 -
ListBox
(列表框):<asp:ListBox ID="lstOptions" runat="server" AutoPostBack="true" OnSelectedIndexChanged="lstOptions_SelectedIndexChanged"> <asp:ListItem Text="Option 1" Value="1"></asp:ListItem> <asp:ListItem Text="Option 2" Value="2"></asp:ListItem> </asp:ListBox>
作用: 当列表框的选中项发生变化时,会自动向服务器发送回发请求,并触发
lstOptions_SelectedIndexChanged
事件。
LinQ结合
EF框架`访问数据库(框架介绍或者怎么办)
LINQ (Language Integrated Query) 是一种用于查询数据的语言集成查询技术。在.NET平台中,LINQ 可以与 Entity Framework (EF) 框架结合使用,使得开发者可以使用 LINQ 查询语法直接在代码中进行数据库查询,而无需直接编写 SQL 语句。
Entity Framework(EF)框架介绍:
Entity Framework 是.NET平台的一种对象关系映射 (ORM) 框架,它的目标是简化将数据库操作转换为面向对象编程语言的过程。EF 允许开发者使用面向对象的编程方式来操作数据库,而无需关心底层数据库的细节。
主要组件:
-
DbContext: 表示数据库会话,负责与数据库的连接和事务管理。
-
DbSet: 表示数据库中的表,每个 DbSet 对应数据库中的一个表。
-
Entity: 表示数据库表中的记录,通常是一个类。
-
LINQ to Entities: LINQ 提供的查询语法,用于在代码中执行数据库查询。
LINQ to Entities:
LINQ to Entities 是 Entity Framework 提供的 LINQ 提供程序,它允许使用 LINQ 查询语法直接在代码中查询数据库。
示例代码:
// 创建DbContext实例 using (var context = new MyDbContext()) { // 使用LINQ查询数据库 var query = from user in context.Users where user.Age > 18 select user; // 执行查询并处理结果 foreach (var user in query) { Console.WriteLine($"Name: {user.Name}, Age: {user.Age}"); } }
Entity Framework 的优势:
-
面向对象: 提供了面向对象的编程方式,将数据库表映射为.NET中的类。
-
LINQ 支持: 提供了强大的 LINQ 支持,使得在 C# 代码中可以使用类似自然语言的方式进行查询。
-
自动迁移: 支持数据库迁移,可以根据数据模型的变化自动更新数据库。
-
ORM 功能: 提供了丰富的 ORM 功能,包括关联、惰性加载等。
-
跟踪查询: 具备跟踪查询的能力,可以跟踪对象的状态变化。
通过 LINQ 结合 Entity Framework,开发者可以更轻松地进行数据库操作,而无需深入涉足 SQL 语句的编写和数据库连接的管理。 LINQ 提供了一种直观、简洁的查询语法,使得数据库操作更易读、易维护。
用ADO.NET、用原生、或者用LinQ+EF,这几种有什么区别,优势在哪里
区别/优势 | ADO.NET | 原生 SQL | LINQ+EF |
---|---|---|---|
方式 | 底层数据库访问技术 | 使用数据库原生 SQL 语句 | 使用 Entity Framework,通过 LINQ 进行查询 |
编程风格 | 手动管理数据库连接和命令 | 手动管理数据库连接和 SQL 语句 | 更面向对象,无需手动管理连接和 SQL 语句 |
SQL 语句 | 需要手动编写和管理 SQL 语句 | 需要手动编写和管理 SQL 语句 | LINQ 提供查询语法,不需要手动编写 SQL 语句 |
精确控制 | 提供了对数据库的细粒度控制 | 适用于对数据库操作需要高度定制的场景 | 提供面向对象编程方式,减少直接控制的需求 |
性能优化 | 需要手动优化 SQL 语句 | 可以通过手动优化 SQL 语句来提高性能 | 由 EF 负责生成和优化 SQL 查询语句 |
适用场景 | 复杂查询、存储过程等高度控制需求 | 直接执行复杂查询或存储过程 | 面向对象编程、提高开发效率 |
三层架构相关知识点
如图9-1 所示,使用ASPNET 三层架构将 Web 应用程序分成三层:
表示层 (Web) 业务逻辑层(BLL) 数据访问层(DAL)。
表示层用于接收用户的数据输入,再根据用户的请求调用业务逻辑层中不同的业务逻辑,最后显示业务逻辑处理的结果。
业务逻辑层由表示层调用,用于获取用户在表示层输入的数据,再进行业务逻辑处理,此时若涉及数据访问,则调用数据访问层完成数据查找、插入、更新和删除等操作,最后向表示层返回业务逻辑处理结果。
数据访问层由业务逻辑层调用,用于操作数据库以实现业务逻辑层要求的数据访问操作。
页面跳转两个重点:
-
页面跳转时携带数据的方法:
i. Cookie 和 Session:
Cookie:
-
传递数据: 可以通过在服务器端设置 Cookie,在客户端获取传递的数据。
// 在服务器端设置Cookie Response.Cookies["UserName"].Value = "John";
-
获取数据: 在目标页面通过
Request.Cookies
读取 Cookie 数据。// 在目标页面读取Cookie string userName = Request.Cookies["UserName"]?.Value;
Session:
-
传递数据: 数据存储在服务器端的 Session 中,可以通过
Session
对象在服务器端设置传递的数据。// 在服务器端设置Session Session["UserName"] = "John";
-
获取数据: 在目标页面通过
Session
对象读取 Session 数据。// 在目标页面读取Session string userName = (string)Session["UserName"];
ii. 把参数放在 URL 上:
-
传递数据: 可以将参数直接附加在 URL 后面,通过查询字符串传递。
// 页面跳转时传递参数 Response.Redirect("TargetPage.aspx?UserName=John");
-
获取数据: 在目标页面通过
Request.QueryString
读取 URL 中的参数。// 在目标页面读取参数 string userName = Request.QueryString["UserName"];
Cookie 和 Session 更适用于需要在多个页面之间共享数据的场景,而将参数放在 URL 上更适用于简单的数据传递。
-
-
几个重要的类,通过这几个类能拿到什么:
i. Service 类:
-
Service 类: 通常是业务逻辑层的类,用于处理具体的业务操作,如数据库操作、业务规则处理等。
public class UserService { public List<User> GetUsers() { // 执行业务逻辑,从数据库中获取用户数据 // ... } }
-
获取什么: 通过 Service 类可以获取处理业务逻辑所需的数据,例如从数据库中检索的用户数据。
-
ii. Request 或 Response 对象:
-
Request 对象: 用于处理客户端的请求信息。
// 获取请求中的参数 string userName = Request.QueryString["UserName"];
-
获取什么: 通过
Request
对象可以获取客户端传递的数据,如表单数据、URL 参数等。
-
-
Response 对象: 用于向客户端发送响应。
// 设置响应内容 Response.Write("Hello, World!"); // 设置Cookie Response.Cookies["UserName"].Value = "John";
-
获取什么: 通过
Response
对象可以设置响应的内容、Cookie 等,向客户端发送数据。
-
iii. Application 对象:
-
Application 对象: 用于在整个应用程序中共享数据。
// 存储数据到 Application 对象 Application["TotalUsers"] = 1000;
-
获取什么: 通过
Application
对象可以存储和获取应用程序级别的全局数据。
-
-
一些高级控件,如:UpdatePanel, 进度条,表格,TreeView等等
1. UpdatePanel:
-
用途: UpdatePanel 是 ASP.NET AJAX 中的控件,用于实现局部页面刷新而不是整个页面刷新,提高用户体验。
-
特点: 使用 UpdatePanel 可以使页面中的一部分区域在发生异步回发时更新,而不需要刷新整个页面。
-
使用示例:
<asp:ScriptManager runat="server"></asp:ScriptManager> <asp:UpdatePanel runat="server" UpdateMode="Conditional"> <ContentTemplate> <!-- 放置需要局部刷新的内容 --> <asp:Label ID="lblMessage" runat="server" Text="Initial Text"></asp:Label> <asp:Button ID="btnUpdate" runat="server" Text="Update" OnClick="btnUpdate_Click" /> </ContentTemplate> </asp:UpdatePanel>
protected void btnUpdate_Click(object sender, EventArgs e) { lblMessage.Text = "Updated Text"; }
2. 进度条(UpdateProgress):
-
用途: 用于显示在 UpdatePanel 发生异步回发时的进度信息,提供用户友好的交互。
-
特点: UpdateProgress 通常与 UpdatePanel 配合使用,当 UpdatePanel 发送异步请求时,UpdateProgress 将显示加载或进度信息。
-
使用示例:
<asp:UpdatePanel runat="server" UpdateMode="Conditional"> <ContentTemplate> <!-- 放置需要局部刷新的内容 --> <asp:Label ID="lblMessage" runat="server" Text="Initial Text"></asp:Label> <asp:Button ID="btnUpdate" runat="server" Text="Update" OnClick="btnUpdate_Click" /> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="btnUpdate" EventName="Click" /> </Triggers> </asp:UpdatePanel> <asp:UpdateProgress runat="server" AssociatedUpdatePanelID="UpdatePanel1"> <ProgressTemplate> <!-- 显示加载或进度信息的内容 --> Loading... </ProgressTemplate> </asp:UpdateProgress>
3. 表格(GridView):
-
用途: GridView 控件用于在 Web 页面上显示和编辑数据,支持分页、排序等功能。
-
特点: GridView 可以绑定到数据源,例如数据库中的数据表,用于显示和操作数据。
-
使用示例:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"> <Columns> <asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" SortExpression="EmployeeID" /> <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" /> <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" /> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [EmployeeID], [FirstName], [LastName] FROM [Employees]"> </asp:SqlDataSource>
4. 树视图(TreeView):
-
用途: 树视图控件用于在 Web 页面上展示层次结构的数据,通常用于表示文件夹结构、组织结构等。
-
特点: 可以绑定到数据源,支持展开和折叠节点,提供用户友好的树状结构显示。
-
使用示例:
<asp:TreeView ID="TreeView1" runat="server" DataSourceID="XmlDataSource1" ShowExpandCollapse="True"> <DataBindings> <asp:TreeNodeBinding DataMember="Category" TextField="CategoryName" ValueField="CategoryID" /> <asp:TreeNodeBinding DataMember="Product" TextField="ProductName" ValueField="ProductID" /> </DataBindings> </asp:TreeView> <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/App_Data/Products.xml"></asp:XmlDataSource>
编程题(考2道)
1. 1、 用循环语句+条件语句判断符合条件的情况和输出,输出时要做异常处理:
example:
using System; class Program { static void Main() { int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; foreach (int number in numbers) { try { if (number % 2 == 0) { // 如果是偶数,输出 Console.WriteLine($"Even Number: {number}"); } else { // 如果是奇数,抛出异常 throw new InvalidOperationException("Odd Number Exception"); } } catch (InvalidOperationException ex) { // 捕获异常并输出 Console.WriteLine($"Exception: {ex.Message}"); } } } }
2.考察用C#写类(要会写出来),会有几个方法,比如构造方法,有返回值的函数、方法,两个类互相继承如何写,类的多态了解一下,不考接口、事件。
example:
using System; // 基类 class Shape { public virtual void Draw() { Console.WriteLine("Drawing a shape"); } } // 派生类 class Circle : Shape { public override void Draw() { Console.WriteLine("Drawing a circle"); } public double CalculateArea(double radius) { return Math.PI * radius * radius; } } class Program { static void Main() { // 创建 Circle 对象 Circle circle = new Circle(); // 调用基类的虚方法 circle.Draw(); // 调用派生类的方法 double area = circle.CalculateArea(5.0); Console.WriteLine($"Area of the circle: {area}"); } }
在这个示例中,Shape
是基类,Circle
是派生类。Circle
重写了基类的虚方法 Draw
,并添加了一个计算面积的方法 CalculateArea
。在 Main
方法中,创建了 Circle
对象,调用了基类的虚方法和派生类的方法。