gpt4 book ai didi

c# List 赋值问题

转载 作者:行者123 更新时间:2023-11-30 17:21:03 27 4
gpt4 key购买 nike

我是 C# 的新手,所以这对我来说可能很难用语言表达。

我正在创建一个媒体应用程序,我有一个类(称为 MediaFile),其中包含有关媒体文件的信息(名称、大小、播放次数和标签)。这些是字符串、 double 、整数和 List<string>类型,分别。

我有这些对象的列表,例如调用 MediaFile[2].Tags将引用“标签”字符串列表(相关关键字)。

我遇到的问题是,当我要求用户为选定的 MediaFile 输入标签时,每当我尝试将这些标签保存到该特定对象时,标签都会保存到每个 对象。分配的代码目前看起来像这样:

MediaFile[lstLibrary.SelectedIndices[0]].Tags.Add(tempTag);

'tempTag' 是一个字符串,我试图将其添加到字符串列表中,但就像我说的 - 即使只选择了 一个 文件,'tempTag' 字符串也会添加到每个 MediaFile 的字符串列表。

任何人都可以阐明我做错了什么吗?

非常感谢。

编辑:感谢您的所有回复。每当我创建一个 MediaFile实例我通过 new List<string>给构造函数。后来当我去更改这个字符串列表时,我发现所有的 MediaFiles 似乎都有相同的字符串引用。这是 MediaFile 类:

public static List<MediaType> MediaFile = new List<MediaType>();
public class MediaType
{
public string Name;
public string Path;
public double Size;
public int Plays;
public List<string> Tags;

// Constructor for adding new files
public MediaType(string path, List<string> tags)
{
Path = path;
Tags = tags;
}

在我要求用户选择一个文件添加到媒体库之后:

MediaFile.Add(new MediaType(Path.GetFullPath(file), new List<string>()));

所以一开始没有“标签”,但后来(这就是我的问题):

if (tempTag != "")
MediaFile[lstLibrary.SelectedIndices[0]].Tags.Add(tempTag);
}

有什么想法吗?抱歉这篇文章太长了!

最佳答案

这表明您已将相同的字符串引用添加到所有 MediaFiles。换句话说,您可能已经完成了:

List<string> tags = new List<string>();

for (int i = 0; i < 100; i++)
{
MediaFile file = new MediaFile(tags);
MediaFiles.Add(file);
}

这很容易测试 - 只需检查是否 MediaFile[0].Tags == MediaFile[1].Tags - 我怀疑您会发现计算结果为 True,这意味着您对两个文件使用相同的列表。

相反,您应该创建一个 List<string>对于每个 MediaFile实例。

当然,如果您可以发布一些代码,那将有助于我们更准确地确定问题...

关于c# List<string> 赋值问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3787282/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com