.NET 复习

考试题型
选择题20道 填空题5道 判断题4道  简答题3道 编程题2道
​

判断题 (考4道)

  1. 若某页面上包含动画内容,则该页面肯定是动态页面(×)

  2. 一个网站中可以同时包含静态页面和动态页面(√)

  3. 数组可以由一组数据类型不相同的元素组成(×)

  4. foreach语句适用于枚举组中的元素(√)

  5. 当一个类实例化,它的构造函数中包含的代码肯定会执行(√)

  6. 自动属性能使编译器自动底生成私有变量以及默认的get和set访问器。(√)

  7. 单击Button类型控件会形成页面往返处理。(√)

  8. 当页面往返时,在触发控件的事件之前会触发Page.Load事件。(√)

  9. 不能再服务器端访问HTML服务器控件。(×)

选择题(考20道)

  1. 以下选项不包括编程语言的是(A)

  • A. ASP.NET

  • B. Python

  • C. Visual C#

  • D. Java

  1. APP_Code文件夹用来储存 (C)

    • A. 数据库文件

    • B. 共享文件

    • C. 代码文件

    • D. 主题文件

  2. Web.config 文件不能用于 (A)

    • A. Application事件处理代码的定义

    • B. 数据库连接字符串的定义

    • C. 对文件夹的访问权限

    • D. 自定义应用程序的配置

  3. 下列数据类型属于值类型的是 (A)

    • A. struct

    • B. class

    • C. interface

    • D. delegate

  4. 下列数据类型属于引用类型的是 (C)

    • A. bool

    • B. char

    • C. string

    • D. enum

  5. 下面对protected修饰符说法正确的是 (D)

    • A. 只能在派生类中访问

    • B. 只能在所属的类中访问

    • C. 能在当前应用程序中访问

    • D. 能在所属的类或派生类中访问

  6. Web服务器控件不包括 (B)

    • A. Table

    • B. Input

    • C. AdRotator

    • D. Calendar

  7. 单击Button类型控件后能执行客户端脚本的属性是 (A)

    • A. OnClientClick

    • B. OnClick

    • C. OnCommandClick

    • D. OnClientCommand

选择题(全部)

1

image-20231224190802626

2

image-20231224191004718

3

image-20231224191019456

4

image-20231224191041087

5

image-20231224191107609

6

image-20231224191141280

7

image-20231224191204444

8

image-20231224191253852

9

image-20231224191335408

10

image-20231224191359292

11

image-20231224191421988

12

image-20231224191439422

13

image-20231224191504920

14

image-20231224191610419

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道)

  1. NET Framework 主要包括 公共语言运行库CLR类库

  2. 在单文件页模型中,C#代码必须包含于 <script>…</script>

  3. C#使用的类库就是 .NET Framework 提供的类库

  4. 要在一个类中包含System.Data 命名空间的语句是 using System.Data

  5. 若在TextBox控件中输入内容并当焦点离开时触发TextChanged事件,则应设置 AutoPostBack="True"

  6. 通过 IsPostBack 属性可以判断页面是否第一次载入。

  7. ASP.NET的服务器包括 HTML服务器控件Web服务器控件

  8. 当需要将TextBox控件作为密码输入框时,应设置 TextMode="Password"

简答题(考3道)

  • 简述Global.asax文件特点及作用

    image-20231226120504301

    特点:

    1. GlobaLasax文件(全局应用程序类文件)是一个可选文件,用于包含响应应用程序级别 和会话级别事件的代码。

    2. 若一个网站中包含GlobaLasax,则必须存储于网站的根文件夹,且 每个网站只能包含一个GlobaLasax文件。

    3. 当用户向一个.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 的区别。

    image-20231226112957381

    • public:公共成员可以在任何地方访问,包括其他类和程序集。

    • internal:内部成员只能在同一程序集中访问,对于其他程序集是不可见的。

    • protected:受保护成员可以在其定义类及其派生类中访问,但对于外部代码是不可见的。

    • protected internal:受保护内部成员可以在当前程序集中访问,也可以在其定义类及其派生类中访问。

    • private:私有成员只能在其定义类中访问,对于其他类和程序集是不可见的。

    修饰符访问级别可见性子类中是否可见程序集中是否可见
    public公共任何地方可见
    internal内部同一程序集可见
    protected受保护同一程序集,子类可见
    protected internal受保护内部同一程序集可见
    private私有同一类可见
    1. public:

      • 公共成员可以在任何地方访问,包括其他类和程序集。

        public class MyClass
        {
            public int MyPublicField;
            public void MyPublicMethod() { }
        }
    2. internal:

      • 内部成员只能在同一程序集中访问,对于其他程序集是不可见的。

        internal class MyInternalClass
        {
            internal int MyInternalField;
            internal void MyInternalMethod() { }
        }
    3. protected:

      • 受保护成员可以在其定义类及其派生类中访问,但对于外部代码是不可见的。

        public class MyBaseClass
        {
            protected int MyProtectedField;
            protected void MyProtectedMethod() { }
        }
        ​
        public class MyDerivedClass : MyBaseClass
        {
            public void AccessProtectedMember()
            {
                MyProtectedField = 42;        // 可以访问基类的受保护字段
                MyProtectedMethod();          // 可以调用基类的受保护方法
            }
        }
    4. protected internal:

      • 受保护内部成员可以在当前程序集中访问,也可以在其定义类及其派生类中访问。

        public class MyProtectedInternalClass
        {
            protected internal int MyProtectedInternalField;
            protected internal void MyProtectedInternalMethod() { }
        }
    5. private:

      • 私有成员只能在其定义类中访问,对于其他类和程序集是不可见的。

        public class MyPrivateClass
        {
            private int MyPrivateField;
            private void MyPrivateMethod() { }
        }

  • 简述值类型和引用类型的区别。

    C#数据类型有值类型和引用类型两种。

    值类型变量直接包含它们的数据,而引用类型变 量存储它们的数据的引用。

    对于值类型,一个变量的操作不会影响另一个变量;

    而对于引用 类型,两个变量可能引用同一个对象,因此对一个变量的操作可能会影响到另一个变量。

    image-20231226113034377

特征值类型引用类型
存储方式直接存储数据存储在堆上,变量存储引用
内存管理生命周期与作用域相同生命周期受引用计数和垃圾回收器控制
性能访问速度较快访问速度较慢,适用于大型数据结构
复制行为复制数据本身复制引用,多个引用指向同一对象
基本类型示例整数、浮点数、字符、布尔类、接口、数组、委托等

总结:

  • 值类型通常更轻量,适用于小型数据,存储在栈上,具有更快的访问速度。

  • 引用类型适用于大型、复杂的数据结构,存储在堆上,通过引用访问,具有更灵活的生命周期管理。

知识点

验证某个值的范围(第五章)(正则表达式,JS判断还有第五章的方法都可以);

  • RequiredFieldValidator(必需字段验证器):

    • 作用: 用于确保某个输入字段不为空。

    • 属性: ControlToValidate 指定要验证的输入控件。

<asp:RequiredFieldValidator ID="rfvName" runat="server" ControlToValidate="txtName" ErrorMessage="姓名是必填项" />

image-20231224171008580

  • CompareValidator(比较验证器):

    • 作用: 用于比较两个输入字段的值。

    • `**属性:**ControlToValidate指定要验证的输入控件,ControlToCompare指定要比较的输入控件,Operator` 指定比较操作。

<asp:CompareValidator ID="cvPassword" runat="server" ControlToValidate="txtPassword" ControlToCompare="txtConfirmPassword" Operator="Equal" ErrorMessage="密码和确认密码不匹配" />
  • RangeValidator(范围验证器):

    • 作用: 用于确保输入值在指定的范围内。

    • 属性: ControlToValidate 指定要验证的输入控件,MinimumValueMaximumValue 指定范围的最小和最大值。

<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 指定要验证的输入控件,ClientValidationFunctionServerValidate 用于指定自定义验证逻辑。

<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"];
  • 优缺点

    CookieSession
    优点跨域名访问:可以在同一浏览器中跨多个页 面和域名共享数据。 客户端存储:不占用服务器资源,数据存储在客户端。安全性:数据存储在服务器端,相对较安全。 可以存储较大量的数据。 支持跨标签页共享。
    缺点 安全性:容易被恶意用户篡改,因此不适合存储敏感信息。 大小限制:存储容量有限。 不支持跨标签页共享。占用服务器资源:每个用户的Session信息都需要在服务器端存储,对服务器资源有一定压力。 跨域名访问复杂:默认情况下,Session不能跨域名访问,需要额外的配置。 变成表格
  • 区别

    CookieSession
    存储位置存储在客户端(浏览器)存储在服务器端
    大小限制有大小限制,通常为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"

image-20231224172954491

控件的自动回调属性(AutoPostBack属性);

AutoPostBack 属性是在ASP.NET Web Forms中一些特定控件上的属性,用于指示当控件的值发生变化时是否自动执行回发(PostBack)。回发是指将页面发送回服务器,以便进行服务器端处理。

  1. TextBox(文本框):

    <asp:TextBox ID="txtInput" runat="server" AutoPostBack="true" OnTextChanged="txtInput_TextChanged"></asp:TextBox>

    作用: 当文本框的文本内容发生变化时,会自动向服务器发送回发请求,并触发 txtInput_TextChanged 事件。

  2. 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 事件。

  3. CheckBox(复选框):

    <asp:CheckBox ID="chkBox" runat="server" AutoPostBack="true" OnCheckedChanged="chkBox_CheckedChanged" />

    作用: 当复选框的选中状态发生变化时,会自动向服务器发送回发请求,并触发 chkBox_CheckedChanged 事件。

  4. RadioButton(单选按钮):

    <asp:RadioButton ID="rbOption" runat="server" AutoPostBack="true" OnCheckedChanged="rbOption_CheckedChanged" />

    作用: 当单选按钮的选中状态发生变化时,会自动向服务器发送回发请求,并触发 rbOption_CheckedChanged 事件。

  5. 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 允许开发者使用面向对象的编程方式来操作数据库,而无需关心底层数据库的细节。

主要组件:
  1. DbContext: 表示数据库会话,负责与数据库的连接和事务管理。

  2. DbSet: 表示数据库中的表,每个 DbSet 对应数据库中的一个表。

  3. Entity: 表示数据库表中的记录,通常是一个类。

  4. 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 的优势:

  1. 面向对象: 提供了面向对象的编程方式,将数据库表映射为.NET中的类。

  2. LINQ 支持: 提供了强大的 LINQ 支持,使得在 C# 代码中可以使用类似自然语言的方式进行查询。

  3. 自动迁移: 支持数据库迁移,可以根据数据模型的变化自动更新数据库。

  4. ORM 功能: 提供了丰富的 ORM 功能,包括关联、惰性加载等。

  5. 跟踪查询: 具备跟踪查询的能力,可以跟踪对象的状态变化。

通过 LINQ 结合 Entity Framework,开发者可以更轻松地进行数据库操作,而无需深入涉足 SQL 语句的编写和数据库连接的管理。 LINQ 提供了一种直观、简洁的查询语法,使得数据库操作更易读、易维护。

用ADO.NET、用原生、或者用LinQ+EF,这几种有什么区别,优势在哪里

区别/优势ADO.NET原生 SQLLINQ+EF
方式底层数据库访问技术使用数据库原生 SQL 语句使用 Entity Framework,通过 LINQ 进行查询
编程风格手动管理数据库连接和命令手动管理数据库连接和 SQL 语句更面向对象,无需手动管理连接和 SQL 语句
SQL 语句需要手动编写和管理 SQL 语句需要手动编写和管理 SQL 语句LINQ 提供查询语法,不需要手动编写 SQL 语句
精确控制提供了对数据库的细粒度控制适用于对数据库操作需要高度定制的场景提供面向对象编程方式,减少直接控制的需求
性能优化需要手动优化 SQL 语句可以通过手动优化 SQL 语句来提高性能由 EF 负责生成和优化 SQL 查询语句
适用场景复杂查询、存储过程等高度控制需求直接执行复杂查询或存储过程面向对象编程、提高开发效率

三层架构相关知识点

image-20231224174918448

如图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 对象,调用了基类的虚方法和派生类的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值