假设我有一个贯穿对象列表的循环,
foreach( object pawn in objectList )
{
pawn.update();
}
这会运行所有更新代码,对吗?很简单,因为您不必将任何信息传递给更新函数以使所有对象都运行。
如何在列表中的一个对象中访问此对象数组?或者那个问题的任何对象?有点像你总能从控制台获得成员。
例如,我可以在任何对象中检索类似Console.BackgroundColor的值。如何使用对象列表执行此操作?
this.value = Console.BackgroundColor // You can access it directly from the class.
答案 0 :(得分:3)
这涉及实例与静态方法。 Console.BackgroundColor是一个静态属性,所以它随处可用。你的循环调用实例方法,因此它只能在它有直接引用的实例上调用方法。
我建议您阅读有关静态与实例方法的更多信息。
http://cplus.about.com/od/howtodothingsinc/a/An-Overview-Of-Static-and-Instance-In-C.htm
答案 1 :(得分:1)
可以访问类的静态公共成员
例如
public static class Blah
{
public static List<MyObject> Stuff = new List<MyObject>();
}
可以使用Blah.Stuff
; 从任意位置访问
但是。
这通常是一个坏主意。大多数情况下,如果您稍微调整一下设计,则不需要像这样的全局访问。它对TRULY全球资源最有用。
根据您的情况,您可能需要类似
的内容 foreach( IChild pawn in objectList )
{
pawn.Parent = objectList;
pawn.update();
}
其中
public interface IChild
{
void update();
List<IChild> Parent { get; set; }
}