gpt4 book ai didi

c# - 我将如何对结构数组进行排序?

转载 作者:行者123 更新时间:2023-11-30 13:14:07 27 4
gpt4 key购买 nike

我有一个包含歌曲数据的结构:

public struct uLib
{
public string Path;
public string Artist;
public string Title;
public string Album;
public string Length;
}

我的库由这个 uLib 的数组组成。我将如何按艺术家对这个数组进行排序?是否有我可以对这种类型的数组调用的 native 排序函数,或者我是否必须“自己动手”?

最佳答案

首先,那不应该是一个结构体。它大于 16 个字节,因此您无法获得结构的性能优势。此外,它不代表单个值,因此在语义上将其作为结构没有意义。只需将其设为一个类即可。

Array 类有一个Sort 方法,您可以使用:

Array.Sort(theArray, (x,y) => string.Compare(x.Artist,y.Artist));

如果您没有 C# 3,您可以使用委托(delegate)而不是 lambda 表达式:

Array.Sort(theArray, delegate(uLib x, uLib y) { return string.Compare(x.Artist,y.Artist) } );

编辑:
以下是您的数据作为类的示例:

public class ULib {

private string _path, _artist, _title, _album, _length;

public string Path { get { return _path; } set { _path = value; } }
public string Artist { get { return _artist; } set { _artist = value; } }
public string Title { get { return _title; } set { _title = value; } }
public string Album { get { return _album; } set { _album = value; } }
public string Length { get { return _length; } set { _length = value; } }

public ULib() {}

public ULib(string path, string artist, string title, string album, string length) {
Path = path;
Artist = artist;
Title = title;
Album = album;
Length = length;
}

}

在 C# 中,属性有一个缩写形式。这不是为私有(private)变量和 setter 和 getter 编写代码来访问它,而是自动创建:

public string Path { get; set; }

关于c# - 我将如何对结构数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/634017/

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