Member 12719658 Ответов: 2

Как вызвать метод (функцию) и метод с параметрами в языке Си#


Греттинги Все,

Пожалуйста, простите меня, если это функция, а не метод. Не уверен, что разница, когда я набрал этот вопрос.

Когда я ищу код в Интернете, я вижу код, который находится в методах, а не в щелчках кнопок, поэтому мне трудно использовать то, что я нахожу, потому что я не знаю, как правильно их называть. Обычно я думал бы использовать
PopulateTreeView();
но это не работает. Может ли кто-нибудь показать мне, как вызвать этот метод из другого места в моей программе? Я буду называть это от нагрузки или нажмите кнопку.

Все, что я ищу, это если я найду код, который я хотел бы использовать при исследовании моих проблем, и если я найду что-то, но использует методы, как вы знаете, как это назвать и что использовать в параметрах?

<pre lang="c#">

private void PopulateTreeView(int parentId, TreeNode parentNode)
{
    String Seqchildc = "SELECT MENUPARVAL,FRM_NAME,MNUSUBMENU FROM MNUSUBMENU WHERE MENUPARVAL=" + parentId + "";
    SqlDataAdapter dachildmnuc = new SqlDataAdapter(Seqchildc, conn);
    DataTable dtchildc = new DataTable();
    dachildmnuc.Fill(dtchildc);
    TreeNode childNode;
    foreach (DataRow dr in dtchildc.Rows)
    {
        if (parentNode == null)
            childNode = treeView1.Nodes.Add(dr["FRM_NAME"].ToString());
        else
            childNode = parentNode.Nodes.Add(dr["FRM_NAME"].ToString()); 
            PopulateTreeView(Convert.ToInt32(dr["MNUSUBMENU"].ToString()), childNode);
    }
}


Что я уже пробовал:

Гугл и пытаюсь разобраться в этом самостоятельно

2 Ответов

Рейтинг:
19

OriginalGriff

Начните с просмотра определения функции / метода - это первая строка метода (Не беспокойтесь о разнице, просто назовите их "методы" в C# и мысленно переведите "функция" в "метод", когда вы его увидите. Это просто разные термины для одного и того же).

Итак, в коде, который вы показываете, первая строка-это:

private void PopulateTreeView(int parentId, TreeNode parentNode)
И это определение метода, которое описывает метод и то, как вы его используете.
private                  Access control: how visible it it to the outside world?
                         In this case, it is only visible inside the class in which 
                         it is defined.
void                     Return type. In this case, teh methid does not return any value.
PopulateTreeView         Method name
(                        Start of parameter list
int parentId,            First parameter: an integer
TreeNode parentNode      Second parameter: a TreeNode
)                        End of parameter list
Это называется сигнатурой метода.

Поскольку ни один из параметров не является необязательным (т. е. за ними не следует знак равенства и значение по умолчанию), вы должны указать оба из них при вызове метода, вы не можете опустить ни один из них, иначе вы получите ошибку компилятора. (Существует способ вызова метода с разными параметрами, но для этого необходимо написать аналогичный метод с тем же именем, который принимает разные параметры: метод с другой сигнатурой. Это называется перегрузкой метода.)

Поэтому, когда вы вызываете его, вы передаете значения в качестве параметров:
PopulateTreeView(666, listHead);
например.

Точные значения, которые вы передадите, зависят от вас: те, которые я покажу, вероятно, вообще не будут работать, но откуда бы вы ни взяли исходный код метода, должно быть очевидно, что именно нужно передать ему!


Рейтинг:
0

Member 12719658

Спасибо за ответ OriginalGriff. Я нашел решение, в которое верю, однако я не совсем уверен, как все это работает. Это было на оригинальном сайте, где был код, а также я погуглил часть кода и нашел что-то очень похожее здесь, на codeproject. Поскольку они оба очень близки, я буду считать, что это правильно.

<pre lang="c#">PopulateTreeView(Convert.ToInt32(dr["MNUSUBMENU"].ToString()), childNode); 


Мне тоже кажется, что это слишком много вещей, чтобы просто вызвать метод, но, как вы можете видеть, я все еще учусь.

Еще раз спасибо!