当前位置:  开发笔记 > 编程语言 > 正文

我如何对一系列结构进行排序?

如何解决《我如何对一系列结构进行排序?》经验,为你挑选了1个好方法。

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

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

我的库包含了一个这样的数组uLib.我怎么用艺术家对这个阵列进行排序?我可以在这种类型的数组上调用本机排序函数,还是必须"自己动手"?



1> Guffa..:

首先,这不应该是一个结构.它大于16个字节,因此您无法获得具有结构的性能优势.此外,它不代表单个值,因此在语义上使其成为结构是没有意义的.只是让它成为一个类.

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

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

如果您没有C#3,则使用委托而不是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#中,有一个简短的财产形式.不是为私有变量编写代码,而是使用setter和getter来访问它,而是自动创建:

public string Path { get; set; }

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有