提问者:小点点

在另一个叫做的方法内部的方法是什么?


下面代码中的string dgvValue(int cell)是什么类型的方法?

private void btnEdit_Click(object sender, EventArgs e)
{
    if (dgvGuestList.SelectedRows.Count > 0)
    {
        String dgvValue(int cell)
        {
            return dgvGuestList.SelectedRows[0].Cells[cell].Value.ToString();
        }
        
        editGuest editGuest = new editGuest(int.Parse(dgvValue(0)), dgvValue(1), 
        int.Parse(dgvValue(2)), dgvValue(0), dgvValue(0), dgvValue(0), dgvValue(0));
        editGuest.ShowDialog();
    }
    else
    {
        DialogResult error = MessageBox.Show("No row selected.", "Error", MessageBoxButtons.OK, 
        MessageBoxIcon.Exclamation);
    }
}

共2个答案

匿名用户

这是C#的一个特性,称为局部函数,在C#7:

许多用于类的设计包括仅从一个位置调用的方法。 这些附加的私有方法使每个方法保持较小且重点突出。
局部函数使您能够在另一个方法的上下文中声明方法。 局部函数使类的读者更容易看到仅从声明局部方法的上下文调用该方法。

匿名用户

添加到Zohar的答案。 我们甚至可以在return语句之后定义这些方法。 这样代码看起来就会像这样干净和隔离。

public double SomeMethod(double a, double b)
{
    var A = fn(a);
    var B = fn(b);
    return A + B;

    double fn(double x) => x + 2;
}