C# 用C语言构建一个数组#

C# 用C语言构建一个数组#,c#,arrays,list,for-loop,misuse,C#,Arrays,List,For Loop,Misuse,我无法让此代码为我工作: List<String[]> campaigns = new List<String[]>(); for(int i = 0; i < C; i++){ campaigns.Add(new String[]{ weekYear = something[i], campaign = info[i], totalBids = Total1[i], highestBid

我无法让此代码为我工作:

List<String[]> campaigns = new List<String[]>();
for(int i = 0; i < C; i++){
    campaigns.Add(new String[]{
        weekYear = something[i], 
        campaign = info[i], 
        totalBids = Total1[i], 
        highestBid = Highest[i], 
    });
}
list = campaigns.ToArray();
List活动=新列表();
对于(int i=0;i

我很确定我需要用其他东西替换字符串[],但是什么呢?

您需要使用一些自定义数据类型(类),它具有属性、weekYear、campaign、totalBids、highestBid以及所需的数据类型

   List<YourDataType> campaigns = new List<YourDataType>();

   campaigns.Add(new YourDataType{
        weekYear = something[i], 
        campaign = info[i], 
        totalBids = Total1[i], 
        highestBid = Highest[i], 
    });
List活动=新列表();
活动。添加(新的数据类型){
weekYear=某物[我],
活动=信息[i],
totalBids=Total1[i],
最高出价=最高[i],
});

要在此处创建数组,您需要考虑的是初始
列表的值。
列表
中的type参数,您将一个类型放在
之间,它就是您的列表的类型。有时候,当你第一次开始做这类事情时,你应该在脑海中用直译英语来思考

所以,如果你想把
活动
放在你的列表中,我会说,好的,我想要:

营地名单


代码中的哪个将是
列表
。您正在以正确的方式添加列表,但您添加的内容不是正确的类型,因此希望我的答案能够向您解释这一点。它必然是一个对象列表,因此您可以只使用
列表
,然后将任何您喜欢的内容添加到此列表中。

编写一个包含所需成员的类,并创建该类型的数组(append
[

或使用匿名类型:

var list = Enumerable.Range(0, C).Select(i => new {
    weekYear = something[i], 
    campaign = info[i], 
    totalBids = Total1[i], 
    highestBid = Highest[i], 
    }).ToArray();

如果您只需要一个
IEnumerable
,那么您可能不需要调用
ToArray()
,最好的方法是创建一个包含您试图保存的属性的活动类,并创建一个列表

List<Campaign> campaigns = new List<Campaign>();
for(int i = 0; i < C; i++){
campaigns.Add(new Campaign{
    weekYear = something[i], 
    campaign = info[i], 
    totalBids = Total1[i], 
    highestBid = Highest[i], 
    });
}
List活动=新列表();
对于(int i=0;i
您必须创建一个包含属性的类。详情如下:

class MyStrings
{
    public string WeekYear { get; set; }
    public string Campaign { get; set; }
    public string TotalBids { get; set; }
    public string HighestBid { get; set; }

}
然后你可以这样使用它:

        var campaigns = new List<MyStrings>();
        for (int i = 0; i < C; i++)
        {
            campaigns.Add(new MyStrings
            {
                WeekYear = something[i], 
                Campaign = info[i], 
                TotalBids = Total1[i], 
                HighestBid = Highest[i], 
            });
        }

它不起作用,因为这不是您尝试添加的字符串数组

相反,请尝试以下方法:

  List<dynamic> campaigns = new List<dynamic>();
  for (int i = 0; i < C; i++)
  {
    campaigns.Add(new {
      weekYear = "a", 
      campaign = "b", 
      totalBids = "c", 
      highestBid = "d", 
    });
  }
  dynamic[]  list = campaigns.ToArray();
List活动=新列表();
对于(int i=0;i
string[]a1=新字符串[]{“a1”、“b1”、“c1”、“d1”};
字符串[]a2=新字符串[]{“a2”、“b2”、“c2”、“d2”};
字符串[]a3=新字符串[]{“a3”、“b3”、“c3”、“d3”};
列表活动=新列表();

对于(int i=0;i
string
将不具有您尝试实例化的属性,当然这应该是您使用
weekYear
属性创建的对象吗?或者,如果您确实需要字符串数组,您可以省略“fieldnames”。如在
活动中。添加(新字符串[]{something[i],info[i],…})
然后通过索引访问它们。我将创建一个名为
活动的对象,并将其上的每个属性设置为需要的类型。此外,在这种情况下,不需要首先创建
列表
,然后最终调用
.ToArray()
,因为您从一开始就知道列表中会有确切的
C
元素。我倾向于使用列表,因为我对C#很陌生-只使用索引效果很好,谢谢@WutzYes,我知道这一点,因为我从某个地方获取了这段代码,并且代码使用了自定义数据类型。但是我不知道如何做到这一点我自己,但现在没关系了,我成功了。
  List<dynamic> campaigns = new List<dynamic>();
  for (int i = 0; i < C; i++)
  {
    campaigns.Add(new {
      weekYear = "a", 
      campaign = "b", 
      totalBids = "c", 
      highestBid = "d", 
    });
  }
  dynamic[]  list = campaigns.ToArray();
string[] a1 = new string[] { "a1", "b1", "c1", "d1" };
string[] a2 = new string[] { "a2", "b2", "c2", "d2" };
string[] a3 = new string[] { "a3", "b3", "c3", "d3" };
List<String[]> campaigns = new List<String[]>();
for (int i = 0; i <4; i++)
        {
            campaigns.Add(new String[]{
        a1[i],a2[i],a3[i]});
        }