0

以下は私のクラスです。列挙可能にする必要があります。私はオンラインで調べましたが、たくさんのドキュメントを見つけましたが、それでも迷子になっています。これは絶対に私がこれを尋ねるのは初めてだと思いますが、誰かが私のためにこのくそったれを列挙可能にしてください、そして私はそこからそれを理解するでしょう。C#ASP.Net4.0を使用しています

    public class ProfilePics
{
    public string status { get; set; }
    public string filename { get; set; }
    public bool mainpic { get; set; }
    public string fullurl { get; set; }

}
4

4 に答える 4

2

ええと...誰かが「このくそったれを列挙可能にする」だけなら、ここに行きます...

public class ProfilePics : System.Collections.IEnumerable
{
    public string status { get; set; }
    public string filename { get; set; }
    public bool mainpic { get; set; }
    public string fullurl { get; set; }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        yield break;
    }
}

何も列挙しませんが、列挙可能です。

今、私はいくつかの心の読書に従事しようとし、あなたがこのようなものが欲しいかどうか疑問に思います:

public class ProfilePicture
{
    public string Filename { get; set; }
}

public class ProfilePics : IEnumerable<ProfilePicture>
{
    public List<ProfilePicture> Pictures = new List<ProfilePictures>();

    public IEnumerator<ProfilePicture> GetEnumerator()
    {
        foreach (var pic in Pictures)
            yield return pic;
        // or simply "return Pictures.GetEnumerator();" but the above should
        // hopefully be clearer
    }
}
于 2014-06-25T22:51:49.587 に答える
0

問題は、何を列挙したいのかということです。

ProfilePicsあなたはあなたのタイプのアイテムを含むある種のコンテナが欲しいと思うので、

List<ProfilePics>

次のようなクラス内のいずれか:

public class ProfilePic
{
    public string status { get; set; }
    public string filename { get; set; }
    public bool mainpic { get; set; }
    public string fullurl { get; set; }

}

public class ProfilePics : IEnumerable<ProfilePic>
{
    private pics = new List<ProfilePic>();

    // ... implement the IEnumerable members
}

またはList<ProfilePics>、それらの場所で単純に使用するだけで、コンテナが必要になります。

見逃した方のために:このIEnumerableのMSDN Docu (さらにいくつかの例を含む)

于 2012-03-20T05:39:56.910 に答える
0

列挙可能なクラスになるには、いくつかのコレクションを実装する必要があります。あなたの例にはコレクションプロパティがありません。プロフィール写真のコレクションを作成する場合は、クラスの名前を「ProfiePic」に変更し、リストを使用します。

一部のプロパティをコレクションとして公開する場合は、IEnumerableまたはListまたはその他のコレクションタイプにします。

于 2012-03-20T05:40:40.187 に答える
0

継承のないクラスを使用します。

using System;
using System.Collections.Generic;

namespace EnumerableClass
{
    public class ProfilePics
    {
        public string status { get; set; }
        public string filename { get; set; }
        public bool mainpic { get; set; }
        public string fullurl { get; set; }

        public IEnumerator<object> GetEnumerator()
        {
            yield return status;
            yield return filename;
            yield return mainpic;
            yield return fullurl;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            ProfilePics pic = new ProfilePics() { filename = "04D2", fullurl = "http://demo.com/04D2", mainpic = false, status = "ok" };
            foreach (object item in pic)
            {
                Console.WriteLine(item);
                //if (item is string) ...
                //else if (item is bool) ...
            }
        }
    }
}
于 2014-07-26T19:48:43.613 に答える