【发布时间】:2014-11-25 01:14:51
【问题描述】:
我在将类的实例传递给函数时遇到问题,而没有事先对其进行初始化(这个库的设置方式,在创建类实例时,会触发事件,我最初不希望发生这种情况)。
TopClass TC = new TopClass();
并且可以从 AClass 类中访问 TC (dostuff) 的成员...
AClass myClass = TC.dostuff(parameters);
方法定义为:
public void MyMethod(Aclass myClass, bool value) {/* */}
调用方法为
bool val = true; //or false, depending on what I need
MyMethod(AClass myclass = TC.dostuff(parameters), val); // Is this really bad?
在不触发事件的情况下,我无法在 MyMethod 中对其进行初始化,并且我无法将类实例作为 null 传递,这让我只能完成上述操作。至少通过这种方式,我可以在 MyMethod 中停止或启动所需的事件,具体取决于 bool 值。这里到底发生了什么? (除了可能不是好的 OOP 设计)。在这种情况下创建对 AClass 的引用会有所帮助吗?
【问题讨论】:
-
“这真的很糟糕吗?”好吧,它不会编译...
-
我认为您需要在这里更具体地很多。你能展示一下事件吗?而 actual 类名...听起来您的对象在其构造函数中做得太多了。
-
我不明白要求。什么构造函数/方法准确地触发事件?最后一行代码是什么?它无法编译。这是真正的问题吗?
-
你太复杂了,按照 BWHazel 的建议去做。
-
奇怪的是它确实可以编译。我删除了生成的文件并重建,结果相同(VS 2013)。我正在使用 IrrKlang 提供的库来进行声音处理。我真的是一个初学者,和其他一些人一样,关于如何传递他们的 ISound 类的实例也有问号。创建一个实例会触发声音本身:例如ISound 音乐 = engine.Play3D(filenamepath).