2013-02-21 4 views
0

Я новичок в ООП. Надеюсь, кто-то уточнит мои сомнения.Определение и вызов метода

Если я хочу, чтобы вызвать метод, как

int number = numberMethod(); 

Что должно быть определение метода ??

public void numberMethod(out int num) 
{ 
    num = 3; 
} 

или

public int numberMethod() 
{ 
    int num = 3; 
    return num; 
} 

или оба определения являются одинаковыми ??

+5

Вы пробовали? – svick

+1

Второй, как правило, предпочтительный метод. 'out' обычно используется, когда вы хотите присвоить значение обратно _and_, чтобы вернуть значение в результате. Например, если вы хотите вернуть «истинный» или «ложный» при успешном анализе, как с ['Int32.TryParse'] (http://msdn.microsoft.com/en-us/library/f02979c7.aspx). Если вы этого не делаете, просто используйте значение 'return', а не' out'. –

ответ

3

Второй один,

Поскольку вы вызываете метод, как показано ниже, что означает, что вы метод, Retuns значение, вызывая

int number = numberMethod(); 

метод

public int numberMethod() 
{ 
    int num = 3; 
    return num; 
} 

если вы хотите, чтобы пользователь сначала один, чем его необходимо называть

int number ; 
numberMethod(out number); 

, потому что вы имеете пустое возвращаемое значение и указав в PARAM

метод

public void numberMethod(out int num) 
{ 
    num = 3; 
} 
+0

Thaank вас Pranay, Что мой метод имеет 2 входной и один выходной параметр, как: общественной ничтожной getAgentsOnReserveCount (DateTime С.Д., Int т, из ИНТ х) { } затем вызвать метод, как: lblAgentsOnReserve.Text = getAgentsOnReserveCount (d1,4) .ToString(); дает вам сообщение об ошибке «метод перегрузки». – Vinnie

+0

@Vinnie - чтобы избежать ошибки, вам нужно указать там, что означает, что код будет «int a = 4; lblAgentsOnReserve.Text = getAgentsOnReserveCount (d1, out a) .ToString();» - прочитать о ключевом слове на msdn, даст вам представление о том, как и когда его использовать. –

+0

очень полезно, спасибо всем за ваши ответы .. – Vinnie

4

Нет, они не то же самое. Вы должны использовать вторую форму, а не первую.

Если вы пытаетесь использовать возвращаемое значение метода - который является то, что вы делаете здесь:

int number = numberMethod(); 

то метод должен иметь соответствующий тип возвращаемого значения - тот, который неявно конвертируется в int. Вы не можете вызвать метод void, и C# не подразумевает «метод с параметром out и void тип возвращаемого типа« как »с типом возврата, соответствующим типу параметра out».

Это очень, очень редко хорошая идея включить out параметр в методе с типом void возврата. (Фактически, относительно неплохо использовать параметры out, IMO. Обычно они указывают, что один метод пытается сделать слишком много.)

2

Нет, это не тот же метод, его очень освобождаться от подписки сообщения,

public int numberMethod() // return as integer 
{ 
    int num = 3; 
    return num; 
} 

- правильный метод, который будет использоваться для ваших нужд.

Второй метод

public void numberMethod(out int num) 
{ 
    num = 3; 
} 

также могут быть использованы, но You need to change the way it is invoked

он может быть использован как

int num; 
numberMethod(out num); 

как метод закончится, имеющий тот же самый эффект, т.е. num будет имеют значение 3.


out параметра в методе только предпочтительный, когда вам нужно иметь более одного значения, возвращаемые из method/function.

Смежные вопросы