【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 ,如何存放数据?
- 哈希表(HashTable)简述
在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对.
- 什么情况下使用哈希表
(1)某些数据会被高频率查询
(2)数据量大
(3)查询字段包含字符串类型
(4)数据类型不唯一
- 哈希表的使用方法
哈希表需要使用的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
{
}
}
}
}
【C#】【平时作业】习题-13-数据类型的更多相关文章
- 13.python基础试题(二)
借鉴:https://www.cnblogs.com/shengyang17/p/8543712.html https://www.cnblogs.com/you-wei1/p/9693254.htm ...
- Java基础语法Day_02-03(数据类型、运算符、方法、循环结构)
第5节 数据类型转换 day02_01_数据类型转换_自动转换 day02_02_数据类型转换_强制转换 day02_03_数据类型转换_注意事项 day02_04_ASCII编码表 第6节 运算符 ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- 《JavaScript 代码优化指南》
~~教你向老鸟一样敲代码~~. 1. 将脚本放在页面的底部 ... <script src="./jquery.min.js"></script> &l ...
- JavaScript代码优化指南
1. 将脚本放在页面的底部 <script src="./jquery.min.js"></script> <script src="./i ...
- 一鼓作气 博客--第三篇 note3
1 推荐读书消费者行为学 -商业的本质,APP得到,5分钟商学院 2定义字典 dic={'name':haibao,'age':18} 3字典的基本操作--查询 dic={'name':'haibao ...
- UIKit框架之UIGestureRecognizer
---恢复内容开始--- 1.继承链:NSObject 2.UIGestureRecognizer的子类有以下: UITapGestureRecognizer :点击 UIPinchGestureRe ...
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
- 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭)
卷 backup 的文件夹 PATH 列表卷序列号为 00000025 D4A8:14B0J:.│ 1.txt│ c语言经典案例效果图示.doc│ ├─1传智播客_尹成_C语言从菜鸟到高手_第一 ...
- 传智播客C语言视频第一季(有效下载期为10.1-10.7,10.8关闭)
J:\传智播客_尹成_C语言从菜鸟到高手├─传智播客_尹成_C语言从菜鸟到高手_第一章C语言概述A│ 第一讲1.1C语言第一阶段.mp4│ 第二讲1.2c语言入门教程.mp4 ...
随机推荐
- eBPF 概述:第 3 部分:软件开发生态
1. 前言 在本系列的第 1 部分和第 2 部分中,我们对 eBPF 虚拟机进行了简洁的深入研究.阅读上述部分并不是理解第 3 部分的必修课,尽管很好地掌握了低级别的基础知识确实有助于更好地理解高级别 ...
- 批量解压zip文件到指定位置
话不多说,直接上代码. # coding:utf-8 import zipfile import utils_file n = 21 # 我事先知道我有多少个文件,所以确定为21 for i in r ...
- 2023年3月中国数据库排行榜:开源OTO揽获前三,传统达梦、GBase触机便发
东风何时至,已绿湖上山. 春风送来了2023年3月的 墨天轮中国数据库流行度排行,本月共有260个数据库参与排名,本月榜单前十可以用一句话概括为:榜单前八较上月岿然不动,GBase 奋勇向前重返第九. ...
- 更强的RAG:向量数据库和知识图谱的结合
传统 RAG 的局限性 经典的 RAG 架构以向量数据库(VectorDB)为核心来检索语义相似性上下文,让大语言模型(LLM)不需要重新训练就能够获取最新的知识,其工作流如下图所示: 这一架构目前广 ...
- C++第五节课 函数默认值 函数重载
#include <iostream> using namespace std; // C++的函数默认值和函数重载 // 函数参数的入栈规则从右往左开始入栈 // 函数重载机制(第一种静 ...
- 封装大屏组件 screenfull
错误场景:使用大屏插件 screenFull 报错:in ./node_modules/screenfull/index.js Module parse failed: Unexpected tok ...
- 关于自动部署 - 基于gitlab关联 腾讯云 web 应用
gitlab 相当于 gitee 的企业版形式 : 步骤 1. 使用 Vscode 编写代码,使用 gitlab托管代码, 2. 新建腾讯云 web 应用 ,gitlab 关联 web应用, 3. 每 ...
- C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- 妙用编辑器:把EverEdit变成计算器
妙用编辑器:把EverEdit变成计算器 应用场景 日常工作过程中,会存在需要计算一些数据的场景,调用系统的计算器当然可以完成这项工作,但是需要来回切换,且系统自带的计算器没有表达式计算功能,真是不方 ...
- Sentinel简单使用(1)
使用场景 在微服务架构中,服务之间会进行大量的调用.为了防止某个服务被过多的请求压垮,导致整个系统崩溃,就需要对流量进行控制.同时,当某个服务出现故障时,为了防止故障扩散到整个系统,需要进行熔断操作. ...