2016-09-19 2 views
-1

Я новичок в C#, и у меня есть проблема в этой небольшой программе Я хочу вернуть введенную информацию в метод ClientsDetails использовать их в методе Print(). Любая помощь plz?Как вызвать метод, который принимает несколько параметров в C#

public static void Main(string[] args) 
    { 

     ClientsDetails(); 

     Print(???,???,???); 

     Console.ReadLine(); 


    } 

    public static void ClientsDetails() 
    { 
     Console.Write("Client's first name: "); 
     string firstName = Console.ReadLine(); 
     Console.Write("Client's last name: "); 
     string lastName = Console.ReadLine(); 
     Console.Write("Client's birthdate: "); 
     string birthday = Console.ReadLine(); 
    } 

    public static void Print(string first, string last, string birthday) 
    { 
     Console.WriteLine("Client : {0} {1} was born on: {2}", first, last, Birthday); 
    } 
} 
+2

Вы можете учиться больше о C# во-первых, он выглядит как домашнее задание r чем конкретный вопрос. – Prisoner

+1

Похоже, вы читали материалы класса, а также вы [Ask] или [faq] – Plutonix

+0

Здравствуйте, @Alex, я уже в курсе с Боб Табором. спасибо за ваш ответ – Khalil

ответ

-1

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

String f = "first string"; 
String l = "last string"; 
String b = "birthday string"; 
Print(f,l,b); 

Кстати, в вашем случае, кажется, что вы хотите входа пользователя, чтобы передать методу Print, поэтому простой способ это просто вызвать метод Print внутри метода ClientsDetails так:

Print(firstName, lastName, birthday); 

Для получения исчерпывающего ресурса, вы можете обратиться к docs, как всегда. На данный момент вы можете просто пренебречь частью Async Methods.

+0

hello @mok, аргументы введенный пользователем в методе ClientsDetails(), мне нужны те же аргументы, которые будут использоваться в методе Print(), – Khalil

+0

@Khalil {Hi}. Другой способ - вернуть значения переменных, которые заполняются пользователями за пределами метода 'ClientsDetails', например. передавая метод 'out'. – mok

+0

Дорогой @mok, вызывая Print() в методе ClientsDetails(), решил проблему, большое спасибо :) – Khalil

0

Я только что исправил вашу программу в качестве вашего требования.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     private static String FirstName; 
     private static String LastName; 
     private static String Birthday; 
     static void Main(string[] args) 
     { 
      ClientsDetails(); 
      Print(FirstName, LastName, Birthday); 
      Console.ReadKey(); 
     } 

     public static void ClientsDetails() 
     { 
      Console.Write("Client's first name: "); 
      FirstName = Console.ReadLine(); 
      Console.Write("Client's last name: "); 
      LastName = Console.ReadLine(); 
      Console.Write("Client's birthdate: "); 
      Birthday = Console.ReadLine(); 
     } 

     public static void Print(string first, string last, string birthday) 
     { 
      Console.WriteLine(String.Format("Client : {0} {1} was born on: {2}", first, last, Birthday)); 
     } 
    } 
} 
+0

Здравствуйте @Touhid, объявив три аргумента вне методов, не является выбором , я бы сделал это, если бы это было разрешено, но мне не нужно, чтобы они были объявлены в методе ClientsDetails(), а затем использовали их в основном методе при вызове метода Print(), Спасибо за ваш любезный ответ – Khalil

+0

Вы не можете получить доступ переменные из другого метода напрямую. Таким образом, я объявляю 3 переменную классу и назначаюсь из theClientsDetails(). поэтому доступ к назначенным переменным можно получить из любого места. – Touhid

+0

Я поддержал это, потому что я не думаю, что он должен был проголосовать. Вы не упомянули это требование в описании, так что это правильный ответ. Зная это требование, я также дал ответ. – Jered

1

Вы можете использовать-структуру:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication1 
{ 
    struct Person{ 
     public static FirstName; 
     public static LastName; 
     public static Birthday; 
    } 
    class Program 
    { 
     static void Main(string[] args) 
     {     
      Person person = ClientsDetails(); 
      Print(person.FirstName, person.LastName, person.Birthday); 
      Console.ReadKey(); 
     } 

     public static Person ClientsDetails() 
     { 
      Person returnValue = new Person(); 
      Console.Write("Client's first name: "); 
      returnValue.FirstName = Console.ReadLine(); 
      Console.Write("Client's last name: "); 
      returnValue.LastName = Console.ReadLine(); 
      Console.Write("Client's birthdate: "); 
      returnValue.Birthday = Console.ReadLine(); 
      return returnValue; 
     } 

     public static void Print(string first, string last, string birthday) 
     { 
      Console.WriteLine(String.Format("Client : {0} {1} was born on: {2}", first, last, birthday)); 
     } 
    } 
} 

или массив:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     {     
      string person = ClientsDetails(); 
      Print(person[0], person[1], person[2]); 
      Console.ReadKey(); 
     } 

     public static string[] ClientsDetails() 
     { 
      string[] returnValue = new string[3]; 
      Console.Write("Client's first name: "); 
      returnValue[0] = Console.ReadLine(); 
      Console.Write("Client's last name: "); 
      returnValue[1] = Console.ReadLine(); 
      Console.Write("Client's birthdate: "); 
      returnValue[3] = Console.ReadLine(); 
      return returnValue; 
     } 

     public static void Print(string first, string last, string birthday) 
     { 
      Console.WriteLine(String.Format("Client : {0} {1} was born on: {2}", first, last, birthday)); 
     } 
    } 
} 

Или ссылки (пройти по ссылке):

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     {  
      string firstName, lastName, birthday; 
      ClientsDetails(ref firstName, ref lastName, ref birthday); 
      Print(firstName, lastName, birthday); 
      Console.ReadKey(); 
     } 

     public static void ClientsDetails(ref string firstName, ref string lastName, ref string birthday) 
     { 
      Console.Write("Client's first name: "); 
      firstName = Console.ReadLine(); 
      Console.Write("Client's last name: "); 
      lastName = Console.ReadLine(); 
      Console.Write("Client's birthdate: "); 
      birthday = Console.ReadLine(); 
     } 

     public static void Print(string first, string last, string birthday) 
     { 
      Console.WriteLine(String.Format("Client : {0} {1} was born on: {2}", first, last, birthday)); 
     } 
    } 
} 
+0

Дорогой @Jered, Большое вам спасибо за ваш очень полезный ответ. это поможет мне понять «struct» и «pass by reference» – Khalil

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