编辑属性时出现的问题?
public class PhotoAlbum : Collection<Photograph>,IDisposable
{
private bool _hasChanged = false;
public bool HasChanged
{
get
{
if (_hasChanged)
return true;
foreach (Photograph p in this)
{
if (p.HasChanged)
return true;
return false;
}
}
internal set
{
_hasChanged = value;
if (value == false)
{
foreach (Photograph p in this)
p.HasChanged = false;
}
}
}
public Photograph Add(string fileName)
{
Photograph p = new Photograph(fileName);
base.Add(p);
return p;
}
protected override void InsertItem(int index, Photograph item)
{
base.InsertItem(index, item);
HasChanged = true;
}
protected override void RemoveItem(int index)
{
Items[index].Dispose();
base.RemoveItem(index);
HasChanged = true;
}
protected override void SetItem(int index, Photograph item)
{
base.SetItem(index, item);
HasChanged = true;
}
public void Dispose()
{
foreach (Photograph p in this)
p.Dispose();
}
protected override void ClearItems()
{
if (Count > 0)
{
Dispose();
base.ClearItems();
HasChanged = true;
}
}
}
}
编译时报错:错误 1 “Manning.MyPhotoAlbum.PhotoAlbum.HasChanged.get”: 并非所有的代码路径都返回值 C:\Documents and Settings\XuShuXiang\My Documents\Visual Studio 2005\Projects\MyPhotos\MyPhotoAlbum\PhotoAlbum.cs 16 13 MyPhotoAlbum
为什么啊???
------解决方案--------------------
C# code
public bool HasChanged
{
get
{
if (_hasChanged)
return true;
[color=#FF0000] foreach (Photograph p in this) [/color] {
if (p.HasChanged)
return true;
return false;
}
}
internal set
{
_hasChanged = value;
if (value == false)
{
foreach (Photograph p in this)
p.HasChanged = false;
}
}