c# 数组 switch case
时间: 2023-08-31 21:05:58 浏览: 68
您可以使用 switch case 语句来根据数组中的元素执行不同的代码块。以下是一个示例:
```csharp
int[] arr = {1, 2, 3};
int index = 1;
switch(arr[index])
{
case 1:
Console.WriteLine("第一个元素");
break;
case 2:
Console.WriteLine("第二个元素");
break;
case 3:
Console.WriteLine("第三个元素");
break;
default:
Console.WriteLine("未知元素");
break;
}
```
在上面的示例中,我们使用 switch case 语句检查数组 `arr` 中索引为 `index` 的元素,并根据其值执行相应的代码块。如果元素的值不是 1、2 或 3,则执行 default 代码块。
相关问题
C# Jet byte[]
你可以使用以下代码将 Jet 数据库中的表转换为 byte[] 数组:
```csharp
public byte[] ConvertJetTableToByteArray(string connectionString, string tableName)
{
byte[] byteArray = null;
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();
// 获取表的记录数
OleDbCommand command = new OleDbCommand($"SELECT COUNT(*) FROM [{tableName}]", connection);
int recordCount = (int)command.ExecuteScalar();
// 获取表的字段数和字段类型
command.CommandText = $"SELECT TOP 1 * FROM [{tableName}]";
DataTable schemaTable = new DataTable();
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(command);
dataAdapter.FillSchema(schemaTable, SchemaType.Source);
int fieldCount = schemaTable.Columns.Count;
List<Type> fieldTypes = new List<Type>();
for (int i = 0; i < fieldCount; i++)
{
fieldTypes.Add(schemaTable.Columns[i].DataType);
}
// 构造 byte[] 数组
byteArray = new byte[4 + fieldCount * 2 + recordCount * fieldCount * 2];
BinaryWriter binaryWriter = new BinaryWriter(new MemoryStream(byteArray));
binaryWriter.Write(recordCount);
binaryWriter.Write(fieldCount);
for (int i = 0; i < fieldCount; i++)
{
binaryWriter.Write((short)Type.GetTypeCode(fieldTypes[i]));
binaryWriter.Write((short)Encoding.Unicode.GetByteCount(schemaTable.Columns[i].ColumnName));
binaryWriter.Write(Encoding.Unicode.GetBytes(schemaTable.Columns[i].ColumnName));
}
command.CommandText = $"SELECT * FROM [{tableName}]";
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
for (int i = 0; i < fieldCount; i++)
{
if (reader.IsDBNull(i))
{
binaryWriter.Write((short)0);
}
else
{
object fieldValue = reader.GetValue(i);
byte[] fieldBytes = null;
switch (Type.GetTypeCode(fieldTypes[i]))
{
case TypeCode.Boolean:
fieldBytes = BitConverter.GetBytes((bool)fieldValue);
break;
case TypeCode.Byte:
fieldBytes = new byte[] { (byte)fieldValue };
break;
case TypeCode.Char:
fieldBytes = Encoding.Unicode.GetBytes(new char[] { (char)fieldValue });
break;
case TypeCode.DateTime:
fieldBytes = BitConverter.GetBytes(((DateTime)fieldValue).ToOADate());
break;
case TypeCode.Decimal:
fieldBytes = ((decimal)fieldValue).ToByteArray();
break;
case TypeCode.Double:
fieldBytes = BitConverter.GetBytes((double)fieldValue);
break;
case TypeCode.Int16:
fieldBytes = BitConverter.GetBytes((short)fieldValue);
break;
case TypeCode.Int32:
fieldBytes = BitConverter.GetBytes((int)fieldValue);
break;
case TypeCode.Int64:
fieldBytes = BitConverter.GetBytes((long)fieldValue);
break;
case TypeCode.Single:
fieldBytes = BitConverter.GetBytes((float)fieldValue);
break;
case TypeCode.String:
fieldBytes = Encoding.Unicode.GetBytes((string)fieldValue);
break;
}
binaryWriter.Write((short)fieldBytes.Length);
binaryWriter.Write(fieldBytes);
}
}
}
binaryWriter.Close();
}
return byteArray;
}
```
在上面的代码中,我们首先打开 Jet 数据库连接,并获取目标表的记录数和字段信息。然后,我们使用 `BinaryWriter` 将表的记录和字段写入 `MemoryStream` 中,并将 `MemoryStream` 转换为 byte[] 数组并返回它。最后,我们关闭 `BinaryWriter` 和 `MemoryStream` 对象以释放资源。
文件管理系统源码c#
文件管理系统是一种用于组织和管理计算机文件的软件系统。它提供了对文件的增删改查等操作,实现了对文件的有效管理和维护。以下是一个基于C语言的简单文件管理系统的源码示例:
```C
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char fname[20];
char ftype[10];
int fsize;
} File;
void addFile(File *files, int *count)
{
printf("请输入文件名:");
scanf("%s", files[*count].fname);
printf("请输入文件类型:");
scanf("%s", files[*count].ftype);
printf("请输入文件大小:");
scanf("%d", &files[*count].fsize);
(*count)++;
printf("文件添加成功!\n");
}
void printFiles(File *files, int count)
{
printf("文件列表:\n");
for (int i = 0; i < count; i++) {
printf("文件名:%s\t文件类型:%s\t文件大小:%d\n", files[i].fname, files[i].ftype, files[i].fsize);
}
}
int main()
{
File files[100];
int count = 0;
int choice;
while (1) {
printf("文件管理系统\n");
printf("1. 添加文件\n");
printf("2. 查看文件列表\n");
printf("3. 退出\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
addFile(files, &count);
break;
case 2:
printFiles(files, count);
break;
case 3:
exit(0);
default:
printf("无效选项,请重新选择。\n");
}
}
return 0;
}
```
这个简单的文件管理系统源码实现了添加文件和查看文件列表的功能。用户可以选择添加文件,然后输入文件名、文件类型和文件大小,系统会将文件信息保存到文件数组中,并更新文件数量。用户还可以选择查看文件列表,系统会遍历文件数组,输出每个文件的信息。用户还可以选择退出系统。这个源码示例只是一个简单的文件管理系统,实际应用中可能还需要更多完善的功能和优化。