winform List顺序打乱
时间: 2023-12-06 11:02:41 浏览: 28
如果要在WinForm中打乱List的顺序,可以使用Fisher-Yates算法(也称为Knuth shuffle算法)。
以下是一个使用Fisher-Yates算法打乱List顺序的示例代码:
```csharp
private static void Shuffle<T>(List<T> list)
{
Random rng = new Random();
int n = list.Count;
while (n > 1)
{
n--;
int k = rng.Next(n + 1);
T value = list[k];
list[k] = list[n];
list[n] = value;
}
}
```
使用方式:
```csharp
List<int> myList = new List<int>() { 1, 2, 3, 4, 5 };
Shuffle(myList);
```
注意:这会改变List本身的顺序。如果您不想改变List,可以使用`OrderBy`方法来创建一个新的打乱顺序的List:
```csharp
List<int> myList = new List<int>() { 1, 2, 3, 4, 5 };
List<int> shuffledList = myList.OrderBy(x => Guid.NewGuid()).ToList();
```
相关问题
winform 将list保存txt
WinForm 是一种程序开发框架,可以使用它来创建 Windows 图形用户界面应用程序。在 WinForm 应用程序中,我们可以通过代码将 List 的内容保存到 txt 文件中。
首先,我们需要在 WinForm 应用程序中创建一个 List,并向其中添加一些数据。比如,我们可以创建一个 List<string> 类型的变量,然后使用 Add 方法添加一些字符串数据。
接下来,我们可以使用 System.IO 命名空间中的 File 类的 WriteAllLines 方法将 List 中的数据保存到 txt 文件中。这个方法需要两个参数:要保存的 txt 文件的路径,以及包含数据的 List 对象。我们可以使用 SaveFileDialog 对象来选择要保存的 txt 文件的路径,然后将 List 对象作为参数传递给 WriteAllLines 方法。
最后,我们可以使用 MessageBox.Show 方法在界面上显示保存成功的提示信息。
以下是一个示例代码:
```csharp
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
namespace WinFormSaveListToTxt
{
public partial class Form1 : Form
{
List<string> dataList = new List<string>();
public Form1()
{
InitializeComponent();
}
private void buttonSave_Click(object sender, EventArgs e)
{
// 向 List 中添加一些数据
dataList.Add("数据1");
dataList.Add("数据2");
dataList.Add("数据3");
// 弹出文件保存对话框,选择要保存的 txt 文件路径
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "文本文件|*.txt";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
// 将 List 中的数据保存到 txt 文件中
File.WriteAllLines(saveFileDialog.FileName, dataList);
// 显示保存成功的提示信息
MessageBox.Show("保存成功!");
}
}
}
}
```
以上就是使用 WinForm 将 List 保存为 txt 文件的简单实现方法。通过创建 List,并使用 File 类的 WriteAllLines 方法保存数据,在界面上提供保存文件的对话框以及保存成功的提示信息,可以方便地实现这一功能。
C#winform实现顺序表的增删改查
顺序表是一种数据结构,C#中可以使用数组来实现。下面是一个简单的顺序表的增删改查的实现:
1. 声明一个数组作为顺序表的存储结构:
```
int[] array = new int[100];
int size = 0; // 当前数组中元素的个数
```
2. 实现插入元素的方法,在末尾插入元素:
```
public void Insert(int value)
{
if(size < array.Length)
{
array[size] = value;
size++;
}
}
```
3. 实现删除元素的方法,删除指定位置的元素:
```
public void Delete(int index)
{
if(index >= 0 && index < size)
{
for(int i = index; i < size - 1; i++)
{
array[i] = array[i + 1];
}
size--;
}
}
```
4. 实现修改指定位置元素的方法:
```
public void Modify(int index, int value)
{
if(index >= 0 && index < size)
{
array[index] = value;
}
}
```
5. 实现查找元素的方法:
```
public int Search(int value)
{
for(int i = 0; i < size; i++)
{
if(array[i] == value)
{
return i;
}
}
return -1;
}
```
以上就是一个简单的顺序表的增删改查的实现。你可以将这些方法放在一个类中,并在 Winform 中调用这个类来操作顺序表。