C# 有没有可能有一个方法,我可以用(ref int x)调用一次,用(value int x)调用另一次--(ByValue ByRef)

C# 有没有可能有一个方法,我可以用(ref int x)调用一次,用(value int x)调用另一次--(ByValue ByRef),c#,C#,如何编写一个方法,一次可以由参数的ref调用,另一次可以由参数的Value调用 public Form2 f2 = null; private void BtOpenSecFrm_Click(object sender, EventArgs e) { OpenNewForm<Form2>(ref f2); } public Form2 f2=null; 私有void BtOpenSecFrm_单击(对象发送者,事件参数e) { OpenNewForm(参考f2); } /

如何编写一个方法,一次可以由参数的ref调用,另一次可以由参数的Value调用

public Form2 f2 = null;
private void BtOpenSecFrm_Click(object sender, EventArgs e)
{
    OpenNewForm<Form2>(ref f2);
}
public Form2 f2=null;
私有void BtOpenSecFrm_单击(对象发送者,事件参数e)
{
OpenNewForm(参考f2);
}
//第一个始终只打开窗体的一个实例

public Form3 f3 = null;
private void BtOpenSecFrm_Click(object sender, EventArgs e)
{
    OpenNewForm<Form3>(f3);// **<-Problem i would like to use the same Methode just without ref**
}
public Form3 f3=null;
私有void BtOpenSecFrm_单击(对象发送者,事件参数e)
{
OpenNewForm(f3);//**multipel-From同时使用

public void OpenNewForm<T>(ref T frmNext) where T : Form, new()
{
    if (frmNext == null || frmNext.IsDisposed)
        frmNext = new T();
    if (!frmNext.Visible)
        frmNext.Show();
    if (frmNext.WindowState == FormWindowState.Minimized)
        frmNext.WindowState = FormWindowState.Normal;
    frmNext.Focus();
}
public void OpenNewForm(ref T frmNext),其中T:Form,new()
{
如果(frmNext==null | | frmNext.IsDisposed)
frmNext=newt();
如果(!frmNext.Visible)
frmNext.Show();
如果(frmNext.WindowsState==FormWindowsState.Minimized)
frmNext.WindowsState=FormWindowsState.Normal;
frmNext.Focus();
}

您可以重载该方法,以便根据实际参数调用它

public void OpenNewForm<T>(ref T frmNext) where T : Form, new()
{
    // your implementation
}

public void OpenNewForm<T>(T frmNext) where T : Form, new()
{
    // your implementation
}
public void OpenNewForm(ref T frmNext),其中T:Form,new()
{
//您的实现
}
public void OpenNewForm(T frmNext),其中T:Form,new()
{
//您的实现
}

您可以重载该方法,以便根据实际参数调用它

public void OpenNewForm<T>(ref T frmNext) where T : Form, new()
{
    // your implementation
}

public void OpenNewForm<T>(T frmNext) where T : Form, new()
{
    // your implementation
}
public void OpenNewForm(ref T frmNext),其中T:Form,new()
{
//您的实现
}
public void OpenNewForm(T frmNext),其中T:Form,new()
{
//您的实现
}

thx用于您的Answare,但这不是我想做的。我只想有一种方法,如果可能的话,可以同时实现这两种功能。可以通过某种方式处理委托。thx用于您的Answare,但这不是我想做的。我只想有一种方法,如果可能的话,可以通过某种方式处理委托。这是不可能的n从片段中看不太明显,尝试用一种方法来做这件事可能是错误的。但是考虑到方法的返回类型。现在你不再需要REF了,你可以在第一种情况下分配F2,在第二种情况下跳过分配F3。好的,我试着去研究它。我不明白你的意思。为什么WOW?LD A返回返回我的徽标。表单已经在MyDoE中显示了。甚至不可能发生。这是不可能的。从片段中的意图并不明显,尝试用一种方法来做这件事可能是错误的。但是考虑一下要做出方法的返回类型。现在你不需要RF了,你可以在F2中分配F2。第一种情况,第二种情况跳过指定f3。好吧,我试着研究一下。我现在不明白你的意思。为什么返回可以解决我的问题。在返回之前,表单已经显示在方法中了。