【C#】【平时作业】习题-13-数据类型

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 【C#】【平时作业】习题-13-数据类型

目录

1、 什么是 ArrayList ,如何存放数据?

动态数组(ArrayList)代表了可被单独索引的对象的有序集合。它基本上可以替代一个数组。但是,与数组不同的是,您可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。它也允许在列表中进行动态内存分配、增加、搜索、排序各项。

下表列出了 ArrayList 类的一些常用的 方法

序号 方法名 & 描述
1 public virtual int Add( object value );
在 ArrayList 的末尾添加一个对象。
2 public virtual void AddRange( ICollection c );
在 ArrayList 的末尾添加 ICollection 的元素。
3 public virtual void Clear();
从 ArrayList 中移除所有的元素。
4 public virtual bool Contains( object item );
判断某个元素是否在 ArrayList 中。
5 public virtual ArrayList GetRange( int index, int count );
返回一个 ArrayList,表示源 ArrayList 中元素的子集。
6 public virtual int IndexOf(object);
返回某个值在 ArrayList 中第一次出现的索引,索引从零开始。
7 public virtual void Insert( int index, object value );
在 ArrayList 的指定索引处,插入一个元素。
8 public virtual void InsertRange( int index, ICollection c );
在 ArrayList 的指定索引处,插入某个集合的元素。
9 public virtual void Remove( object obj );
从 ArrayList 中移除第一次出现的指定对象。
10 public virtual void RemoveAt( int index );
移除 ArrayList 的指定索引处的元素。
11 public virtual void RemoveRange( int index, int count );
从 ArrayList 中移除某个范围的元素。
12 public virtual void Reverse();
逆转 ArrayList 中元素的顺序。
13 public virtual void SetRange( int index, ICollection c );
复制某个集合的元素到 ArrayList 中某个范围的元素上。
14 public virtual void Sort();
对 ArrayList 中的元素进行排序。
15 public virtual void TrimToSize();
设置容量为 ArrayList 中元素的实际个数。

2、 什么 Queue ,如何存放数据?

队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为 入队 ,当您从列表中移除一项时,称为 出队

Queue 类的方法和属性

下表列出了 Queue 类的一些常用的 属性

属性 描述
Count 获取 Queue 中包含的元素个数。

下表列出了 Queue 类的一些常用的 方法

序号 方法名 & 描述
1 public virtual void Clear();
从 Queue 中移除所有的元素。
2 public virtual bool Contains( object obj );
判断某个元素是否在 Queue 中。
3 public virtual object Dequeue();
移除并返回在 Queue 的开头的对象。
4 public virtual void Enqueue( object obj );
向 Queue 的末尾添加一个对象。
5 public virtual object[] ToArray();
复制 Queue 到一个新的数组中。
6 public virtual void TrimToSize();
设置容量为 Queue 中元素的实际个数

3、 什么 Stack ,如何存放数据?

C# Stack (栈)是常见的数据结构之一,栈是一种先进后出的结构,即元素从栈的尾部插入,从栈的尾部移除

4、 什么 Hashtable ,如何存放数据?

  1. 哈希表(HashTable)简述

在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对.

  1. 什么情况下使用哈希表

(1)某些数据会被高频率查询

(2)数据量大

(3)查询字段包含字符串类型

(4)数据类型不唯一

  1. 哈希表的使用方法

哈希表需要使用的namespace

using System.Collections;
using System.Collections.Generic;

哈希表的基本操作:

//添加一个keyvalue键值对:
HashtableObject.Add(key,value);
//移除某个keyvalue键值对:
HashtableObject.Remove(key);
//移除所有元素:         
HashtableObject.Clear(); 
// 判断是否包含特定键key:
HashtableObject.Contains(key);

5、 什么泛型,如何存放数据?

泛型(Generic) 允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。换句话说,泛型允许您编写一个可以与任何数据类型一起工作的类或方法。

您可以通过数据类型的替代参数编写类或方法的规范。当编译器遇到类的构造函数或方法的函数调用时,它会生成代码来处理指定的数据类型

6、 使用泛型技术保存从学生表里查询的全部学生信息。

using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsFormsApp1
{
    public class Student
    {
        //字段
        private string _account;
        private string _name;
        private string _usertype;
        private string _password;
        private string _vip;
        private string _garde;
        private string _amount;
        private string _age;
        private string _hobby;
        private string _department;
        //属性
        public string Account { get => _account; set => _account = value; }
        public string Name { get => _name; set => _name = value; }
        public string Usertype { get => _usertype; set => _usertype = value; }
        public string Password { get => _password; set => _password = value; }
        public string Vip { get => _vip; set => _vip = value; }
        public string Garde { get => _garde; set => _garde = value; }
        public string Amount { get => _amount; set => _amount = value; }
        public string Age { get => _age; set => _age = value; }
        public string Hobby { get => _hobby; set => _hobby = value; }
        public string Department { get => _department; set => _department = value; }
        //构造函数
        public Student() { }
        public Student(string studentAccount, string studentPasswd)
        {
            _account = studentAccount;
            _password = studentPasswd;
        }
        public Student(string studentAccount, string studentPasswd, string stdentName, string studentTel) 
        {
            _account = studentAccount;
            _password = studentPasswd;
            _name = stdentName;
            _usertype = studentTel;
        }
        public Student(string studentAccount, string studentPasswd, string stdentName, string studentTel,string vip,string garde,string amount,string age,string hobby,string department)
        {
            _account = studentAccount;
            _password = studentPasswd;
            _name = stdentName;
            _usertype = studentTel;
            _vip = vip;
            _garde = garde;
            _account = amount;
            _age = age;
            _hobby = hobby;
            _department = department;
        }
    }
    //功能类
    public class HandleStudent
    {
        //操作方法
        /// <summary>
        /// 连接数据库
        /// </summary>
        /// <returns>MySqlConnection 数据库连接对象</returns>
        public static MySqlConnection HandleConnection()
        {
            MySqlConnection con = new MySqlConnection("Server=127.0.0.1;Database=studentsinfo;UserId=root;Password=qq2686485465;");
            return con;
        }
        /// <summary>
        /// 根据主键判断 是否存在学生
        /// </summary>
        /// <param name="key"></param>
        /// <returns>boolea 存在返回真,不存在返回假</returns>
        public static bool HandleStudentIsIn(string key)
        {
            //对参数进行处理验证
            if (Equals(key.Trim(), "")) return false;
            //连接数据库
            MySqlConnection con = HandleConnection();
            //打开数据库
            con.Open();
            //参数化拼接字符串
            string sql = "Select*from students where `account` = @Account";
            //创建命令对象
            MySqlCommand cmd = new MySqlCommand(sql, con);
            //指定参数
            cmd.Parameters.Add(new MySqlParameter("@Account", key));
            //执行
            MySqlDataReader dr = cmd.ExecuteReader();
            //判断
            if (dr.Read())
            {
                con.Close();
                return true;
            }
            else
            {
                con.Close();
                return false;
            }
        }
        /// <summary>
        /// 登录验证
        /// </summary>
        /// <param name="studentAccount">账号</param>
        /// <param name="studentPwd">密码</param>
        /// <returns>Boolean 验证成功返回真,否则返回假</returns>
        public static bool HandleLogin(string studentAccount, string studentPwd)
        {
            //对参数进行处理验证
            if (Equals(studentAccount.Trim(), "") || Equals(studentPwd.Trim(), "")) return false;
            //连接数据库
            MySqlConnection con = HandleConnection();
            //打开数据库
            con.Open();
            //参数化拼接字符串
            string sql = "Select*from students where `account` = @Account AND `password` = @Password";
            //创建命令对象
            MySqlCommand cmd = new MySqlCommand(sql, con);
            //指定参数
            cmd.Parameters.Add(new MySqlParameter("@Account", studentAccount));
            cmd.Parameters.Add(new MySqlParameter("@Password", studentPwd));
            //执行
            MySqlDataReader dr = cmd.ExecuteReader();
            //判断
            if (dr.Read())
            {
                con.Close();
                return true;
            }
            else
            {
                con.Close();
                return false;
            }
        }
        /// <summary>
        /// 添加学生
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="student"></param>
        /// <returns>int型 操作影响的行数</returns>
        public static int HandleAddStudents<T>(HandleStudent student)
        {
            MySqlConnection con = HandleConnection();
            con.Open();
            //判断学生是否存在,信息是否完善
            if (HandleStudentIsIn(student.Account) || Equals(student.Account, "") || Equals(student.Name, "") || Equals(student.Password, "") || Equals(student.Usertype, "")) return 0;
            //添加学生信息
            string sql = "INSERT INTO students(`account`,`name`,`usertype`,`password`,`vip`,`garde`,`amount`,`age`,`hobby`,`department`)" +
                "VALUES" +
                "(@Account,@Name,@UserType,@Password,1,0,0,0,'IT','OMTPC')";
            MySqlCommand cmd = new MySqlCommand(sql, con);
            cmd.Parameters.Add(new MySqlParameter("@Account", student.Account));
            cmd.Parameters.Add(new MySqlParameter("@Name", student.Name));
            cmd.Parameters.Add(new MySqlParameter("@UserType", student.Usertype));
            cmd.Parameters.Add(new MySqlParameter("@Password", student.Password));
            int rows = cmd.ExecuteNonQuery();
            con.Close();
            return rows;
        }
        public static List<Student> GetAllStudents() 
        {
            List<Student> ls = new List<Student>();
            try
            {
                MySqlConnection con = HandleConnection();
                con.Open();
                string str = "SELECT*FROM `students`";
            }
            catch (Exception e) 
            {
            }
            finally
            {
            }
        }
    }
}


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
C#
C#学习相关系列之数据类型类的三大特性(二)
C#学习相关系列之数据类型类的三大特性(二)
|
1月前
|
存储 C#
C#数据类型之结构体介绍
C#数据类型之结构体介绍
|
1月前
|
C#
C#数据类型之枚举类型
C#数据类型之枚举类型
|
1月前
|
存储 编译器 数据处理
C#基础入门之数据类型
C#基础入门之数据类型
|
4月前
|
存储 C# 图形学
【Unity 3D】C#数据类型和变量、命名规范的讲解(附源码)
【Unity 3D】C#数据类型和变量、命名规范的讲解(附源码)
52 1
|
1月前
|
存储 C#
深入C#数据类型
深入C#数据类型
5 0
|
1月前
|
C#
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
|
1月前
|
存储 C# 索引
C#学习相关系列之数据类型类的定义(一)
C#学习相关系列之数据类型类的定义(一)
|
1月前
|
存储 开发框架 .NET
C#学习相关系列之数据类型---Diactionary字典的用法
C#学习相关系列之数据类型---Diactionary字典的用法
|
3月前
|
存储 C#
C# 数据类型与类型转换:包含教程与示例
使用正确的数据类型对应于相应的变量是重要的;这样可以避免错误、节省时间和内存,还会使您的代码更易于维护和阅读。最常见的数据类型有:
30 0