2016-09-13 11 views
1

ちょっと私はちょっとしたエクササイズのように、誰かが応募する必要がある仕事、場所、連絡方法を書き出す小さなコンソールアプリケーションを作った。 私のコードを見ると、Console.WriteLineステートメントを書き出すことは効率的であるのを助けるために関数を作ったことを考えると非常に効率的です。ループでより効率的なConsole.Writelineブロックを作成するのに助けが必要

私は、これはループを使用しますが、それはループを別の変数で各時間を作る方法がわからないイムことであろう達成するための最善の方法を考えていた(例えばphn1、phn2変数)

みんなありがとう!

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

namespace PlacestoApplyfor 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //Displays the actual program in descending order. 
      //Used functions as a faster method to change variable names on the fly 
      //Whilst keeping its format clean and in descending order 
      Console.WriteLine("--Name of Places--"); 
      ApplyFor("EdwayApps" ,"Appxperts","Genie App Studio","Appster"); 
      Console.WriteLine("--Name of Locations--"); 
      LocationsInOrder("3/424 St kilda", "101/27 Little Collins St", "Contact Online only", "2/377 LonsDale ST"); 
      Console.WriteLine("--Companies Numbers-- "); 
      PhoneNumbers(043990976,1300939225,0421336722,1800709291); 
     } 

     static void ApplyFor(string num1, string num2, string num3, string num4) { 
     //Literally just the job names 
     Console.WriteLine(num1); 
     Console.WriteLine(num2); 
     Console.WriteLine(num3); 
     Console.WriteLine(num4); 
     } 

     // Job Locations 

     static void LocationsInOrder(string loc1, string loc2, string loc3, string loc4) { 
     Console.WriteLine(loc1); 
     Console.WriteLine(loc2); 
     Console.WriteLine(loc3); 
     Console.WriteLine(loc4); 
     } 

     //Contact - references 

     static void PhoneNumbers(int phn1, int phn2, int phn3, int phn4) { 
     Console.WriteLine(phn1); 
     Console.WriteLine(phn2); 
     Console.WriteLine(phn3); 
     Console.WriteLine(phn4); 

     } 
    } 
} 
+5

なぜあなたのメソッドの各行をさらにインデントしていますか? –

+0

あなたの電話番号をint '0421336722'として渡すと先行ゼロが失われています。あなたはこれを知っていますか? –

+0

Console.WriteLine()は非常に高価です。実際にコンソールウィンドウを所有しているconhost.exeプロセスとの基本的なプロセスの相互運用性はあまり効率的ではありません。しかし、それはまだ遠く、**遠すぎ**、ユーザーの目より速いです。コンソールウィンドウ内の狂ったスクロールテキストは完全に使用できないUIです。代わりにその基本的な問題に対処しなければならなくなりました。今ではConsole.WriteLine()はまったく気にしません。 –

答えて

4

paramsキーワードはあなたの友達です:

static void PhoneNumbers(params int[] phn) 
{ 
    foreach(var num in phn) 
     Console.WriteLine(num); 
} 

それからちょうど行うことができます。でも

PhoneNumbers(1,2,3,4,5,6,7,8,9); 

または配列を渡す:

PhoneNumbers(new int[] {1,2,3,4,5,6,7,8,9}); 
+0

申し訳ありませんが、まだプログラミングに新しい、あなたが意味することを完全に理解していませんが、私はそれに亀裂があります。 PhoneNumbers関数の代わりに配列を置くことを意味しますか?それとも関数の中に置くのですか? 正しい軌道にいれば教えてください –

+0

@ keanu.bそれは配列と構文的な砂糖の両方です。メソッドに同じ種類の可変数のパラメータを渡すことも、配列を渡すこともできます。内部的には、どちらの場合でも配列と同じようにパラメータを扱うだけです。 – Lloyd

1

なぜそんなにconsole.wを書いているあなたその代わりのriteline() は、クラスに次のコード

を書く

static void Main(string[] args) 
    { 
     Console.WriteLine("--Name of Places--"); 
     ApplyFor("EdwayApps", "Appxperts", "Genie App Studio", "Appster"); 
     Console.WriteLine("--Name of Locations--"); 
     LocationsInOrder("3/424 St kilda", "101/27 Little Collins St", "Contact Online only", "2/377 LonsDale ST"); 
     Console.WriteLine("--Companies Numbers-- "); 
     PhoneNumbers(043990976, 1300939225, 0421336722, 1800709291); 
     Console.ReadLine(); 
    } 
    static void ApplyFor(string num1, string num2, string num3, string num4) 
    { 
     //Literally just the job names 
     Console.WriteLine(num1 + "\n"+num2 + "\n" + num3 + "\n " + num4); 
    } 
    // Job Locations 
    static void LocationsInOrder(string loc1, string loc2, string loc3, string loc4) 
    { 
     Console.WriteLine(loc1 + "\n" + loc2 + "\n" + loc3 + "\n " + loc4); 
    } 
    //Contact - references 
    static void PhoneNumbers(int phn1, int phn2, int phn3, int phn4) 
    { 
     Console.WriteLine(phn1 + "\n" + phn2 + "\n" + phn3 + "\n " + phn4 +"\n"); 
    } 
+0

それははるかに良く見えます、申し訳ありません私はプログラミングに新しいと私は新しい行を作る方法を忘れました –

+0

助けをありがとう! –

0
あなたは「すべての行を書き、改行用セパレータを構成するために一つだけの機能で行うことができます

\ n "または"、 "をカンマで区切って1行に入力します。 "トピック"を印刷機能の最初のパラメータとして追加して、 " - トピック - "記号内に展開することもできます。 paramsを使用して

static void Main(string[] args) 
{ 
    //Displays the actual program in descending order. 
    //Used functions as a faster method to change variable names on the fly 
    //Whilst keeping its format clean and in descending order 
    Print("Name of Places", "EdwayApps", "Appxperts", "Genie App Studio", "Appster"); 
    Print("Name of Locations", "3/424 St kilda", "101/27 Little Collins St", "Contact Online only", "2/377 LonsDale ST"); 
    Print("Companies Numbers", 043990976, 1300939225, 0421336722, 1800709291); 

    Console.ReadKey(); 
} 

static void Print(string topic, params object[] array) 
{ 
    Console.WriteLine("-- {0} -- \n\n {1}\n", topic, string.Join("\n ", array)); 
} 
0

はロイドが言ったように涼しいですが、あなたは)Console.WriteLineをを(最適化しようとする場合には、そのために何度も.WriteLineを呼び出すループをしないことができます。 1行

static void PhoneNumbers(params int[] phn) 
{ 
    Console.WriteLine(String.Join(" ", phn)); 
} 

か、値の固定数で1行のすべてのそれらの値を書きたい場合には、方法

static void PhoneNumbers(params int[] phn) 
{ 
    Console.WriteLine(String.Join(Environment.NewLine, phn)); 
} 

同じことばかりスペース区切りString.Formatを見て、String.Joinちょうどこれを行う

static void PhoneNumbers(params int[] phn) 
{ 
    Console.WriteLine(String.Format("{0} {1} {2} {3}", phn)); 
} 
+0

私は電話番号の値を書式設定して文字列形式に変更し、それをリストしますか?よく書くように –

+0

ああ待っているので、console.writeline( ""、phn)の中に私は場所の名前を追加することができますし、それはそれの後に変数を追加しますか? –

+0

そのドキュメントを見てください... https://msdn.microsoft.com/en-us/library/xh1dzhdx(v=vs.110).aspx基本的にString.Formatを使用すると、プレースホルダーをあなたのオブジェクトを印刷する場所。あなたの場合、4つの整数の配列を言うことができます。 {0}はその配列の最初の整数の位置になり、{1}は2番目の配列の位置になります... array [0] + "、" + array [1] + " 、 "+ array [2] +"、 "+ array [3]また、それを使っていくつかの追加の書式設定をすることもできますし、String.Concatも存在します – xer21

関連する問題