【发布时间】:2012-02-22 21:47:10
【问题描述】:
我设计了一个类,它就像一张 CD 一样,我还有另一个类来测试我设计的类。 测试类创建一个新的 CD 对象并用变量等填充它。
我的问题是测试类说我的类失败是由于在创建对象后变量数组发生了变化,而这些变量并没有直接改变实际的类属性,我该如何阻止这种情况?
测试类:
string[] myCdTracks = { "Song 1", "Song 2", "Song 3" };
string[] myCdTracks2 = { "Song 1", "Song 2", "Song 3" };
CD myCd = new CD("My Songs", "Fergus", "Rock", myCdTracks);
for (int i = 0; i < myCdTracks.Length; i++)
{
它在不应该的时候改变了它的值。
myCdTracks[i] = "aaaa";
}
result = "PASS";
if (myCd.Tracks.Length != testArray.Length)
{
result = "FAIL";
}
else
{
for (int i = 0; i < myCd.Tracks.Length; i++)
{
if (myCd.Tracks[i] != testArray[i])
{
result = "FAIL";
}
}
}
我的 CD 课:
public class CD
{
string _Name;
string _Artist;
string _Genre;
string[] _Tracks;
public CD(string name, string artist, string genre, string[] tracks)
{
_Name = name;
_Artist = artist;
_Genre = genre;
_Tracks = tracks;
}
// ... Some properties
public string[] Tracks
{
get
{
return _Tracks;
}
set
{
for (int i = 0; i < _Tracks.Length; i++)
{
_Tracks[i]= value[i];
}
}
}
}
【问题讨论】:
-
你想在这里完成什么?因为我现在可以告诉你,可能有比使用属性设置器不实际设置属性的热混乱更好的方法。
-
@Brad_Stone,还请注意您在 Tracks 上的二传手容易爆炸。你循环输入数组而不考虑它的长度甚至它的存在。
-
这只是理解简单 get 和 set 的练习练习,没有任何进展,这只是为了让我可以快速理解为什么 Tracks 会被覆盖。设置为一个简单的琐碎任务。