我有这个方法:
public void makecall(int TransmitPhoneLoc, int ReceivePhoneLoc)
{
clsPhone Tphone = (clsPhone) phoneArray[TransmitPhoneLoc];
clsPhone Rphone = (clsPhone)phoneArray[ReceivePhoneLoc];
Tphone.ringPhone();
Rphone.ringPhone();
//Tphone.hello();
}
我正在尝试将其拆分为两种方法,以便我可以相互独立地使用Tphone
和Rphone
。这是我最近的尝试......糟透了我知道,但我正在努力!
public clsPhone incoming(int TransmitPhoneLoc)
{
clsPhone Tphone = (clsPhone)phoneArray[TransmitPhoneLoc];
return Tphone;
}
public clsPhone Outgoing(int ReceivePhoneLoc)
{
clsPhone Rphone = (clsPhone)phoneArray[ReceivePhoneLoc];
return Rphone;
}
public void makecall()
{
// Rphone and Tphone do something?
}
任何有关如何独立使用这两个对象的帮助将不胜感激。
修改
问题是我不确定如何从我创建的两个方法中取代原始方法的值,并以与原始方法相同的方式实现它们。所以第三种方法是调用第一种和第二种方法。我试图像这样做,因为我将有其他方法,如endcall
。
这是我的fianl解决方案,谢谢你所有的尝试,我知道要理解像我这样的新手想要完成的事情并不容易。感谢Dilvid为我的最终解决方案提供灵感。我希望现在很清楚我想做什么。我在我的ClsPhone中有一个方法来设置连接,这在ClsExchange中激活。还有其他方法可以结束通话等。
public clsPhone incoming(int TransmitPhoneLoc)
{
clsPhone Tphone = (clsPhone)phoneArray[TransmitPhoneLoc];
return Tphone;
}
public clsPhone Outgoing(int ReceivePhoneLoc)
{
clsPhone Rphone = (clsPhone)phoneArray[ReceivePhoneLoc];
return Rphone;
}
public void makecall(int tpc, int opc)
{
Outgoing(tpc).ringPhone();
incoming(opc).ringPhone();
}
答案 0 :(得分:1)
不确定你要做什么,但是这是怎么回事?它是沿着正确的方向做的吗?
public void MakeCall(int phoneLoc)
{
clsPhone phone = (clsPhone)phoneArray[phoneLoc];
phone.ringPhone();
}
用法:由于OP代码表明数组中接收和发送电话的索引值的先验知识,因此可以使用该方法...
MakeCall(tpc);
//and/or
MakeCall(opc);
或者你可以这样做......
public clsPhone GetPhone(int phoneLoc)
{
return (clsPhone)phoneArray[phoneLoc];
}
用法:
GetPhone(tpc).ringPhone();
//and/or
GetPhone(opc).ringPhone();
班级使用选项:
public class MyClass
{
clsPhone[] phoneArray;//set this however
int tpc = 1;
int opc = 2;
clsPhone Tphone { get { return GetPhone(tpc); } }
clsPhone Rphone { get { return GetPhone(opc); } }
private clsPhone GetPhone(int phoneLoc)
{
return (clsPhone)phoneArray[phoneLoc];
}
public void MakeCall()
{
Tphone.ringPhone();
Rphone.ringPhone();
}
}
希望有意义!
答案 1 :(得分:1)
我将前两个方法更改为此(忽略您选择的非标准命名约定):
public clsPhone incoming(int TransmitPhoneLoc) {
return phoneArray[TransmitPhoneLoc] as clsPhone;
}
public clsPhone Outgoing(int ReceivePhoneLoc) {
return phoneArray[ReceivePhoneLoc] as clsPhone;
}
你的最后一个方法是:
public void makecall() {
// You'll need to have the values for rPhoneLoc / tPhoneLoc set somewhere
// or as parameters to this method
var rPhone = Outgoing(rPhoneLoc);
var tPhone = Incoming(tPhoneLoc);
rPhone.ringPhone(tPhone);
}
我意识到您的ringPhone
方法当前可能不接受目标调用的参数。考虑到你如何使用这两个重构,这个重构可能有意义。
答案 2 :(得分:0)
我想你想要这样的东西:
public void makecall(clsPhone Tphone, clsPhone Rphone)
{
Tphone.ringPhone();
Rphone.ringPhone();
}
那么你要做
public static void main()
{
var phone1 = incoming(213123) // just sample values, idk what int TransmitPhoneLoc is
var phone2 = Outgoing(345435)
makecall(phone1, phone2)
}
答案 3 :(得分:0)
为什么不进一步简化:
public MakeCall(int phoneLocation)
{
clsPhone phone = (clsPhone)phoneArray[phoneLocation];
phone.ringPhone();
}
...
MakeCall(transmitPhoneLoc);
MakeCall(receivePhoneLoc);
答案 4 :(得分:0)
我相信你是在追求......
public clsPhone Tphone(int TransmitPhoneLoc)
{
clsPhone tempPhone = (clsPhone)phoneArray[TransmitPhoneLoc];
return tempPhone
}
public clsPhone Rphone(int ReceivePhoneLoc)
{
clsPhone tempPhone = (clsPhone)phoneArray[ReceivePhoneLoc];
return tempPhone
}
public void makecall()
{
//use
Tphone(1234).ringPhone();
//or
Rphone(1234).ringPhone();
}