如何为一个类数组的一个属性赋值?

问题描述:

我有一个类和一个数组。该数组被声明为类型:Class。如何为一个类数组的一个属性赋值?

//Class 
public class TestClass 
{ 
    public int testint { get; set; } 
     public string teststr { get; set; } 
    public TestClass(int _testint, string _teststr) 
    { 
     testint = _testint; 
      teststr = _teststr; 
    } 
} 

//Array declaration 
TestClass[] MyArray = new TestClass[ 3 ]; 

现在我想做的事情(这是仅用于测试 - 我心中有一个更大的代码使用这种方法我想工作的时候):

我想能够只设置teststr或仅仅是阵列单元的testint,如下所示:

MyArray[ 0 ].testint = 3; 

这不会返回任何错误,但是如果我尝试打印这个;结果为空(空 - 空)。

我使用Blend 4与Silverlight - 请帮助,如果你知道如何分配单一的属性,像我想在这里!

+4

我很惊讶,你没有一个空指针异常...... 尝试做' MyArray [0] = new TestClass(){testint = 3}'代替。 – Thomas 2013-04-30 12:57:25

+1

我希望您想到的更大的代码具有大写的属性名称。 – 2013-04-30 12:59:57

+1

@Thomas:我想这是因为这段代码参与了一些绑定机制(请参阅Blend 4 with Silverlight),所以NullPointerException应该由UI处理。 – 2013-04-30 13:02:54

您必须创建一个TestClass的实例,因为您刚刚创建了一个空数组,即该数组有3个引用为空。

TestClass[] MyArray = new TestClass[ 3 ]; 

MYARRAY是{null, null, null},所以MyArray[0] == null

MyArray[0] = new TestClass(42, "42"); 

MYARRAY是{anObject, null, null}

MyArray[0].testint = 3; // this is valid 
+0

upvote,因为我看不出为什么有一个downvote ... – 2013-04-30 13:01:05

+0

当我尝试这个,我得到这条线上的错误CS1729: 'MyArray [0] = new TestClass();' – 2013-04-30 13:07:04

+0

您没有en空构造函数,所以你不能无参数地调用TestClass()。您可以为您的TestClass()添加一个空的构造函数,或者为构造函数提供参数以匹配您现有构造函数的签名。 – 2013-04-30 13:09:39