2013-06-18 97 views
-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 

和其他类中使用这些变量。我知道void类型不能返回任何东西,但是我知道我的方法是如何工作的(从调试开始)。就像你看到我试图用for循环那样做。在这里,我有9个广告,每个广告都有一天。

就像我说我要回报每一位广告ID [数组],每days.stats.impresions和days.stats.click

我该怎么办呢?矿石如何返回更多变量/数组从方法到其他类,我使用webservises,所以我不能使用类似的数据库矿石。

+0

你能展示的例子,因为回报是我最难的事 – sparagas

回答

1

从问题的关注点可以看出,您需要设计的返回值,然后对它进行编码。

你的查询,几乎做它(现在):

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.Impressions; // every day have his own impressions 

现有的代码显示这应该扩大到包括:

kazkas.Ads[n].Total.Clicks; 
kazkas.Ads[n].Total.Impressions; 

所以,现在你准备开始设计。首先,你需要一个统计类只包含的点击和展示:

public class Stat 
{ 
    public long Impressions { get; set; } 
    public long Clicks { get; set; } 
} 

的优化这里可能是使用一个结构,但我不会去成。

正如你现在已经定义了它的每一天刚一统计特性:

public class DayStat 
{ 
    public Stat Stats { get; set; } 
} 

现在终于可以定义顶级ADSTAT:

public class AdStat 
{ 
    public int id { get; set; } 
    public DayStat Day[]; 
    public Stat Total { get; set; } 
} 

等等...这里还有更多的问题,例如确保创建数组并且实例永远不会是null(这就是为什么使这些类中的某些结构成为选项的原因)。但我真的是一个VB程序员,所以我会停下来之前,我陷入SO IDE中输入废话:-)

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; 
} 
+0

我使用Web服务,使用get set是个好主意吗? – sparagas

+0

为什么不呢?这是一个POCO对象,它没有任何逻辑,它可以被序列化/反序列化等等。 –

+0

你能不能展示写一个小示例返回应该是什么样子,或者如何将变量/数组放在 sparagas

0

更改void到要返回类型,说Campaign,并返回相应的变量。您在方法中定义的变量只能存在于您的方法中,并且无法从其他方法或类访问。

+0

可以显示示例? – sparagas

+0

不,因为我不知道你想要返回什么。请参阅[MSDN](http://msdn.microsoft.com/zh-cn/library/ms173114(v = vs80).aspx)。 – CodeCaster

+0

我想返回 kazkas.Ads [n]; (n =有多少广告) kazkas.Ads [n] .id; kazkas.Ads [n] .Days [m] .Stats.Clicks; //每天都有自己的点击次数 kazkas.Ads [n] .Days [m] .Stats.Impresons; //每天都有他自己的印象 – sparagas