-3

いくつかの変数 (配列) を正しく返したい

kazkas.Ads[n]; (n = how many ads are)
kazkas.Ads[n].id;
kazkas.Ads[n].Days[m].Stats.Clicks;  // every day have his own clicks
kazkas.Ads[n].Days[m].Stats.Impresons; // every day have his own impresions

このメソッドから、これらの変数を他のクラスで使用します。

 public static void GetAdsStats(string Ticket, DateTime start, DateTime end, int CamId)
    {
        var client = new CampaignStatsServiceClient();
        var id = new CampaignIdFilter();
        id.CampaignId = CamId;
        var statsdata = new GetAdStatsData();
        var kazkas = new Campaign();


        kazkas = client.GetAdStats(Ticket, new GetAdStatsData
        {
            IdFilter = id,
            StartDate = start,
            EndDate = end
        });
        long AllClicks = 0;
        long AllImpresions = 0;
        int reklamos = kazkas.Ads.Length;
        long[] statistikaClikai = new long[reklamos];
        long[] statistikaImpresions = new long[reklamos];
        for (int i = 0; i < reklamos; i++)
        {
            int dienos = kazkas.Ads[i].Days.Length;
            for (int lop = 0; lop < dienos; lop++)
            {

                AllClicks = AllClicks + kazkas.Ads[i].Days[lop].Stats.Clicks;
                AllImpresions = AllImpresions + kazkas.Ads[i].Days[lop].Stats.Impressions;

            }
            statistikaClikai[i] = AllClicks;
            statistikaImpresions[i] = AllImpresions;

        }

    }

void 型が何も返せないことは知っていますが、これにより、メソッドが機能することを (デバッグから) 知ることができます。ご覧のとおり、forループでそれをやろうとしていました。ここには 9 つの広告があり、すべての広告に 1 日あります。

私が言うように、すべての広告 ID [配列内]、およびすべての days.stats.impresions と days.stats.click を返したい

どうやってやるの ?メソッドから他のクラスにより多くの変数/配列を返す方法について、私はWebサービスを使用しているため、データベースまたはそのようなものを使用できません。

4

3 に答える 3

1

必要なメンバーを含むクラスまたは構造体を作成します

public class Stat
{
   public int Id { get; set; }
   public long Clicks { get; set; }
   ...
}

メソッドのシグネチャを から に変更し、void GetAdsStats統計IEnumberable<Stat> GetAdsStatsのコレクションを返すか、yieldキーワードを使用して統計オブジェクトを返します。

また、メソッドが何も返さない場合 (戻り値の型void) は、 で始まる名前を使用しないでGetください。

例:

public static IEnumerable<Stat> GetAdsStats(...)
{
   ...
   var statList = new List<Stat>();
   for (int i = 0; i < reklamos; i++)
   {
        var stat = new Stat();
        statList.Add(stat);
        int dienos = kazkas.Ads[i].Days.Length;
        for (int lop = 0; lop < dienos; lop++)
        {

            AllClicks = AllClicks + kazkas.Ads[i].Days[lop].Stats.Clicks;
            AllImpresions = AllImpresions + kazkas.Ads[i].Days[lop].Stats.Impressions;

        }
        stat.Clicks = AllClicks;
        stat.Impression = AllImpresions;

    }

    return statList;
}
于 2013-06-18T10:07:07.187 に答える
0

voidを返したい型に変更しCampaign、適切な変数を返します。メソッドで定義する変数は、メソッド内にのみ存在し、別のメソッドまたはクラスからアクセスすることはできません。

于 2013-06-18T10:07:45.603 に答える