Using C# on Mac To Build iOS and Android Apps | Toptal

In the past few years, Microsoft has pulled a few aces from up its sleeve. Yes, they messed up Skype, failed with smartphones, and almost succeeded with tablets. But, they did some really amazing things as well. Relinquishing their closed empire approach, they open-sourced .NET, joined the Linux Foundation, released SQL Server for Linux, and created this great new tool called Visual Studio for Mac. In this post, Head of Open Source Demir Selmanovic details how to make an Android and iOS app in C# on your Mac.

來源: Using C# on Mac To Build iOS and Android Apps | Toptal

【程式設計 C#】命令提示字元視窗的輸出與輸入

命令提示字元視窗是我們的視窗作業環境中的一個特殊視窗,不支援視窗的元件、滑鼠,只有簡單的文字輸出及鍵盤輸入。支援的輸入與輸出方法(部份):

Read()從鍵盤讀取一個輸入,返回值為整數型態,也就是鍵盤輸入字元(按的一個鍵)的ASCII碼。
ReadLine() 從鍵盤讀取一行(按enter代表輸入完成),方法傳回一個字串。
Write() 輸出,不換行。
WriteLine()輸出後換行(等效於”\r\n”)

輸出:

範例1:

// Hello1.cs
public class Hello1
{
   public static void Main()
   {
      System.Console.WriteLine("Hello, World!");
   }
}
  • 每一個 Main 方法必須包含在類別中 (本範例中為 Hello1)。
  • WriteLine 方法是System.Console 類別中用來輸出一個字串到主控台 (Console) 的方法 。

範例2:

可以使用 using 指示詞 (Directive)宣告使用System命名空間(類似Java的套件),之後可以用較簡短的方式使用該命名空間下的類別方法,如下所示:

// Hello2.cs
using System;

public class Hello2
{
   public static void Main()
   {
      Console.WriteLine("Hello, World!");
   }
}

範例3:

如果想要存取傳遞到應用程式的命令列參數,需變更 Main 方法的簽名,以下列方式來存取它們。本範例計算和顯示命令列引數。

// Hello3.cs
// arguments: A B C D
using System;

public class Hello3
{
   public static void Main(string[] args)
   {
      Console.WriteLine("Hello, World!");
      Console.WriteLine("你輸入了 {0} 個命令列參數:",
         args.Length );
      for (int i=0; i < args.Length; i++)
      {
         Console.WriteLine("{0}", args[i]); 
      }
   }
}

範例 4

在整個程式的應用環境裏,一個程式可以喚用另一個程式,也因此,若要傳回一個傳回碼 (Return Code)給其呼叫者,可將 Main 方法的簽名變成:

// Hello4.cs
using System;

public class Hello4
{
   public static int Main(string[] args)
   {
      Console.WriteLine("Hello, World!");
      return 0; //回傳0
   }
}

在命令提示字元視窗中取得鍵盤輸入:

Console.Write("請輸入一個整數(0~100):");
int num = Convert.ToInt32(Console.ReadLine());//取得鍵盤的輸入(型態是字串),再轉換成int32整數資料型態

若要取得其他資料型態數值,請換成其他的資料型態:

char,double,float等

範例:

using System;

public class Hello
{
   public static void Main()
   {
		string str1;
		int price, qty;
		Console.WriteLine();
		Console.WriteLine(" 富國電腦圖書廣場");
		Console.WriteLine("======================");
		Console.Write(" 1. 書名:");
		str1 = Console.ReadLine(); // 輸入書名並指定給 輸入書名並指定給str1變數

		Console.Write(" 2. 售價:");		
		price = int.Parse(Console.ReadLine());

		Console.Write(" 3. 數量:");		
		qty = Convert .ToInt32 (Console.ReadLine());

		Console.WriteLine("======================");
		Console.WriteLine(" 4. 金額:{0}", price * qty);
		Console.Read();
	}
}

 

【C#-題庫】字串 Strings

1.  何者敘述為真?

String s1, s2;
s1 = “Hi”;
s2 = “Hi”;

  1. 在無法使用new的情況下,String物件無法被建立。
  2. 只有一個物件會被建立。
  3. s1 和 s2 皆指向相同的一個物件。
  4. 2個物件會被建立,其中一個被s1參考,另一個被s2參考。
  5. s1 和s2 是指向相同的物件的2個參考。

A. 1, 2, 4
B. 2, 3, 5
C. 3, 4
D. 2, 5

Answer
B

2.  底下程式片段輸出為何?

String s1 = “ALL MEN ARE CREATED EQUAL”;
String s2;
s2 = s1.Substring(12, 3);
Console.WriteLine(s2);

A. ARE
B. CRE
C. CR
D. REA
E. CREATED

Answer
B

3. 下列那個程式片段能夠正確地複製一個字串到另一個字串?

A.

String s1 = "String";
String s2; 
s2 = s1;

B.

String s1 = "String" ; 
String s2;
s2 = String.Concat(s1, s2);

C.

String s1 = "String"; 
String s2;
s2 = String.Copy(s1);

D.

String s1 = "String"; 
String s2;
s2 = s1.Replace();

E.

String s1 = "String"; 
String s2;
s2 = s2.StringCopy(s1);
Answer
C

4. 利用String類別所建立的字串是不可變的,另一方面,利用StringBuilder所建立的字串是可變的。

A. True
B. False

Answer
A

5. 底下程式的輸出為何?

String s1 = "Nagpur";
String s2;
s2 = s1.Insert(6, "Mumbai"); 
Console.WriteLine(s2);

A. NagpuMumbair
B. Nagpur Mumbai
C. Mumbai
D. Nagpur
E. NagpurMumbai

Answer
E

6. 如果s1和s2是參考到字串的參考,底下何者可以正確地比較2個參考?

A. s1 is s2
B. s1 = s2
C. s1 == s2
D. strcmp(s1, s2)
E. s1.Equals(s2)

Answer
E

7. 底下程式的輸出為何?

namespace IndiabixConsoleApplication
{
    class SampleProgram
    {
        static void Main(string[ ] args)
        {
            string str= "Hello World!";
            Console.WriteLine( String.Compare(str, "Hello World?" ).GetType() );
        }
    }
}

A. 0
B. 1
C. String
D. Hello World?
E. System.Int32

Answer
E

解說:String.Compare比較兩個指定的 String 物件,並傳回一個整數,指出它們在排序順序中的相對位置。

GetType()取得所屬的資料型態,此題是String.Compare傳回一個整數(Int32),所以GetType會傳回System.Int32。

8.  底下那一個程式片段能夠正確地轉換一個Single資料型態成為String資料型態?

1.

Single f = 9.8f; 
String s;
s = (String) (f);

2.

Single f = 9.8f; 
String s;
s = CONVERT.ToString(f);

3.

Single f = 9.8f; 
String s;
s = f.ToString();

4.

Single f = 9.8f; 
String s;
s = Clnt(f);

5.

Single f = 9.8f; 
String s;
s = CString(f);

A. 1, 2
B. 2, 3
C. 1, 3, 5
D. 2, 4

Answer
B

9. 底下程式的輸出為何?

String s1="Kicit";
Console.Write(s1.IndexOf('c') + " "); 
Console.Write(s1.Length);

A. 3 6
B. 2 5
C. 3 5
D. 2 6
E. 3 7

Answer
B

10. 底下那一個程式片段能夠正確地轉換一個String資料型態成為int資料型態?

1.

String s = "123"; 
int i;
i = (int)s;

2.

String s = "123";
int i;
i = int.Parse(s);

3.

String s = "123"; 
int i;
i = Int32.Parse(s);

4.

String s = "123"; 
int i;
i = CONVERT.ToInt32(s);
5.
String s = "123"; 
int i;
i = CInt(s);

A. 1, 3, 5
B. 2, 4
C. 3, 5
D. 2, 3, 4

Answer
D

11. 底下何者對String的敘述是正確的?

A. 一個String 字串建立在堆疊(stack)上。
B. 一個String 字串依其長度來決定是建置在堆疊或堆積(heap)上。
C.  String 字串是原始的資料型態。
D. 一個String 字串的建立是透過String s1 = new String;敘述來建立。
E. 一個String字串是建立在堆積(heap)上。

Answer
E

12. 底下何者對String的敘述是正確的?

A. 一個String 字串是可變的,因其建立後,可以修改String 字串內容。
B. String 字串類別的方法可用來修改String 字串。
C. 一個數字無法用一個String的形式表示。
D. 一個String 字串有一個從零開始的索引
E. System.Array類別用來表示一個字串。

Answer
D

解說:String 是一個字元陣列。

13. 底下程式片段輸出為何?

String s1 = "Five Star";
String s2 = "FIVE STAR";
int c;
c = s1.CompareTo(s2);
Console.WriteLine(c);

A. 0
B. 1
C. 2
D. -1
E. -2

Answer
D

14. 如果s1和s2是參考到字串的參考,底下何者可以正確地判斷2個字串是否相等?1.

if(s1 = s2)

2.

if(s1 == s2)

3.

int c;
c = s1.CompareTo(s2);

4.

if( strcmp(s1, s2) )

5.

if (s1 is s2)

A. 1, 2
B. 2, 3
C. 4, 5
D. 3, 5

Answer
B

15. 底下何者對String的敘述是正確的?

1.2個子串可用 s3 = s1 + s2; 的方式相串接。
2.String 字串是原始的資料型態。
3.使用StringBuilder 類別建立的字串是可變的。
4.使用String 類別建立的字串是不可變的。
5.2個子串可用 s3 = s1&s2; 的方式相串接。

A. 1, 2, 5
B. 2, 4
C. 1, 3, 4
D. 3, 5

Answer
C

16. 底下敘述何者正確?

  1.  String是一個數值型態。
  2.  String字符值可以包含任何一個字元,包含跳脫字元。
  3.  等效運算子被定義為比較2個字串物件的值,和其參考。
  4.  嘗試存取超過字串界限的一個字元會導致一個IndexOutOfRangeException。
  5.  一個字串物件的內容可以在其建立後被改變。

A. 1, 3
B. 3, 5
C. 2, 4
D. 1, 2, 4

Answer
C

17.  底下何者可以被正確地找出字串 “She sells sea shells on the sea-shore”中第2個’s’的位置(在字串中的索引)?

 

A.

String str = "She sells sea shells on the sea-shore"; 
int i;
i = str.SecondIndexOf("s");

B.

String str = "She sells sea shells on the sea-shore"; 
int i, j;
i = str.FirstIndexOf("s"); 
j = str.IndexOf("s", i + 1);

C.

String str = "She sells sea shells on the sea-shore"; 
int i, j;
i = str.IndexOf("s"); 
j = str.IndexOf("s", i + 1);

D.

String str = "She sells sea shells on the sea-shore"; 
int i, j;
i = str.LastIndexOf("s"); 
j = str.IndexOf("s", i - 1);

E.

String str = "She sells sea shells on the sea-shore"; 
int i, j;
i = str.IndexOf("S"); 
j = str.IndexOf("s", i);
Answer
C

【C#-題庫】陣列 (Arrays)

1.  底下何者對下面的程式片段說法正確?

int[ , ] intMyArr = {{7, 1, 3}, {2, 9, 6}};
  1. intMyArr 表示一個2列和3行的規則陣列。
  2. intMyArr.GetUpperBound(1) 會得到2。
  3. intMyArr.Length 會得到24。
  4. intMyArr 表示一個5個整數的1維陣列。
  5. intMyArr.GetUpperBound(0) 會得到2.

A. 1, 2
B. 2, 3
C. 2, 5
D. 1, 4
E. 3, 4

Answer
A

解說:

1. Array.GetUpperBound 方法 : 取得 Array 中指定維度的陣列索引的上限。

2. Array.Length 屬性 : 取得代表 Array 所有維度的元素總數之 32 位元整數。

2. 底下何者對下面的程式片段說法正確?

int[] a = {11, 3, 5, 9, 4};
  1. 此陣列元素是建立在堆疊(stack)之上。
  2. 陣列的參考a是建立在堆疊(stack)之上。
  3. 此陣列元素是建立在堆積(heap)之上。
  4. 在宣告該陣列時,一個新的陣列被建立出來,而此新陣列是繼承自System.Array類別。
  5.  該陣列元素是依據其陣列的大小來決定建立於堆疊或堆積之上。

A. 1, 2
B. 2, 3, 4
C. 2, 3, 5
D. 4, 5
E. None of these

Answer
B

3. 底下何者敘述正確?

A. 陣列元素僅能是整數型態。
B. 一個陣列的維度是其所擁有元素的數量。
C. 一個陣列的長度是該陣列的維度數。
D. 陣列元素的預設值為0(零)。
E. 陣列元素是排序過的。

Answer
D

4.  如果a是一個5個整數的陣列,底下何者敘述正確?

A.

int[] a = new int[5]; 
int[] a = new int[10];

B.

int[] a = int[5]; 
int[] a = int[10];

C.

int[] a = new int[5]; 
a.Length = 10 ;

D.

int[] a = new int[5]; 
a = new int[10];

E.

int[] a = new int[5]; 
a.GetUpperBound(10);
Answer
D

5. 如果要正確地印出陣列a的所有元素,你要如何完成下面的程式?

int[][]a = new int[2][];
a[0] = new int[4]{6, 1 ,4, 3};
a[1] = new int[3]{9, 2, 7}; 
foreach (int[ ] i in a)
    {
      /* Add loop here */
      Console.Write(j + " ");
      Console.WriteLine(); 
    }

A. foreach (int j = 1; j < a(0).GetUpperBound; j++)
B. foreach (int j = 1; j < a.GetUpperBound (0); j++)
C. foreach (int j in a.Length)
D. foreach (int j in i)
E. foreach (int j in a.Length -1)

Answer
D

6. 底下程式片段輸出為何?

int[ , , ] a = new int[ 3, 2, 3 ]; 
Console.WriteLine(a.Length);

A. 20
B. 4
C. 18
D. 10
E. 5

Answer
C

7. 下列何者對陣列的說法為正確?

  1. Arrays can be rectangular or jagged. 陣列可以是規則的,也可以是不規則的。
  2. 規則陣列被儲存在緊鄰的記憶體空間中。
  3. 不規則陣列不可以存取System.Array類別的方法。
  4. 規則陣列不可以存取System.Array類別的方法。
  5. 不規則陣列儲存在非緊鄰的記憶體空間中。

A. 1, 2
B. 1, 3, 5
C. 3, 4
D. 1, 2, 5
E. 4, 5

Answer
D

8.  底下何者對下面的程式片段說法正確?

int[][]intMyArr = new int[2][]; 
intMyArr[0] = new int[4]{6, 1, 4, 3}; 
intMyArr[1] = new int[3]{9, 2, 7};

A. intMyArr 為一個指向一個2維不規則陣列的參考。
B. intMyArr指向的不規則陣列的2個列被儲存在緊鄰的記憶體空間中。
C. intMyArr[0] 指向第0個1維陣列,intMyArr[1]指向第1個1維陣列。
D. intMyArr 指向intMyArr[0] 和intMyArr[1].
E. intMyArr 指向intMyArr[1] 和intMyArr[2].

Answer
C

9. 那一個是正確的方式來定義一個2列和3行的陣列?

  1. int[ , ] a;
    a = new int[2, 3]{{7, 1, 3},{2, 9, 6}};
  2. int[ , ] a;
    a = new int[2, 3]{};
  3. int[ , ] a = {{7, 1, 3}, {2, 9,6 }};
  4. int[ , ] a;
    a = new int[1, 2];
  5. int[ , ] a;
    a = new int[1, 2]{{7, 1, 3}, {2, 9, 6}};

A. 1, 2 , 3
B. 1, 3
C. 2, 3
D. 2, 4, 5
E. 4, 5

Answer
B

10.  對底下的陣列宣告何者敘述正確?

int[][][] intMyArr = new int[2][][];

A. intMyArr 指向1個2維的2列不規則陣列。
B. intMyArr指向1個2維的3列不規則陣列。
C. intMyArr指向1個3維不規則陣列,其中包含了2個2維不規則陣列。
D. intMyArr指向1個3維不規則陣列,其中包含了3個2維不規則陣列。
E. intMyArr指向1個3維不規則陣列,其中包含了2個2維規則陣列。

Answer
C

11. 對底下的陣列宣告何者敘述正確?

int[] intMyArr = {11, 3, 5, 9, 4};

A. intMyArr為一個指向System.Array類別物件的參考。
B. intMyArr為一個指向繼承自System.Array類別的物件的參考。
C. intMyArr為一個指向整數陣列的參考。
D. intMyArr為一個指向在堆疊中的物件參考。
E. intMyArr為一個指向建立在堆疊中的陣列參考。

Answer
B

12. 下面那個程式片段能夠正確地定義(define)並初始化(initialize )一個陣列的4個整數?

  1. int[] a = {25, 30, 40, 5};
  2. int[] a;
    a = new int[3];
    a[0] = 25;
    a[1] = 30;
    a[2] = 40;
    a[3] = 5;
  3. int[] a;
    a = new int{25, 30, 40, 5};
  4. int[] a;
    a = new int[4]{25, 30, 40, 5};
  5. int[] a;
    a = new int[4];
    a[0] = 25;
    a[1] = 30;
    a[2] = 40;
    a[3] = 5;

A. 1, 2
B. 3, 4
C. 1, 4, 5
D. 2, 4, 5
E. 2, 5

Answer
C

13. 底下程式片段的輸出為何?

    int[][] a = new int[2][];
    a[0] = new int[4]{6, 1, 4, 3};
    a[1] = new int[3]{9, 2, 7}; 
    Console.WriteLine(a[1].GetUpperBound(0));

A. 3
B. 4
C. 7
D. 9
E. 2

Answer
E

14. 那一個敘述能夠正確地取得底下陣列的元素數量?

int[] intMyArr = {25, 30, 45, 15, 60};
  1. intMyArr.GetMax;
  2. intMyArr.Highest(0);
  3. intMyArr.GetUpperBound(0);
  4. intMyArr.Length;
  5. intMyArr.GetMaxElements(0);

A. 1, 2
B. 3, 4
C. 3, 5
D. 1, 5
E. 4, 5

Answer
B

15. 底下程式片段的輸出為何?

namespace IndiabixConsoleApplication
{
    class SampleProgram
    {
        static void Main(string[ ] args)
        {
            int i, j;
            int[ , ] arr = new int[ 2, 2 ];
            for(i = 0; i < 2; ++i)
            {
                for(j = 0; j < 2; ++j)
                {
                    arr[i, j] = i * 17 + i * 17;
                    Console.Write(arr[ i, j ] + " ");
                }
            }
        }
    }
}

A. 0 0 34 34
B. 0 0 17 17
C. 0 0 0 0
D. 17 17 0 0
E. 34 34 0 0

Answer
A

【資料結構】佇列(Queue)介紹與使用

生活中的各種佇列

系統 客戶 服務者
接待櫃台 一般人員 接待人員
購票櫃台(高鐵、台鐵、戲院…) 購票者 售票服務人員
醫院 病患 護理師
機場 飛機 飛機跑道
道路網 汽車 交通號誌燈
超市、攤販 購買者 結帳櫃台
電腦 工作 CPU, disk, printer

Queue的種類

  • Multiple queues, multiple servers,台鐵售票、量販店/統聯結帳櫃台
  • Single queue, multiple servers,高鐵售票、
  • Single queue, single server, 小型商店、攤販…
  • Priority queues

C# Queue類別

C# System.Collection 命名空間裏提供了一個Queue類別,實現在佇列先進行出的概念(FIFO,First In First Out),和堆疊Stack 的操作(後進先出)完全不一樣。Queue類別也是一個有序集合物件。

Queue集合類別允許多個null/空值,且允許重複的值,提供Enqueue() 方法來加入值到Queue集合物件中,Dequeue() 方法從Queue集合物件中取出資料。

 

120116_0009_Queue1.png

 

Queue重要的屬性與方法

方法 或 屬性 用途
Count 傳回Queue集合物件中的元素數量
Enqueue 加入一個項目到queue中
Dequeue 從queue的前端取出一個項目並刪除該項目
Peek 從queue的前端取出一個項目(不刪除該項目)
Contains 檢查queue是否包含某一個特定項目
Clear 清除queue所有的項目
TrimToSize 調整queue的大小到實際儲存項目的大小

加入項目到 Queue中:

Queue 是一個非泛型的集合(non-generic collection),你可以使用Enqueue()方法加入任何資料形態的元素到queue中。
Enqueue() 簽名: void Enqueue(object obj)

Enqueue()範例

Queue queue = new Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue(“Four”);

存取Queue:

Dequeue() 方法從queue的前端取出一個項目並刪除該項目。
Dequeue() method signature: object Dequeue()

Dequeue()範例

Queue queue = new Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue(“Four”);
Console.WriteLine(“Queue中的元素數量: {0}”, queue.Count);
while (queue.Count > 0) Console.WriteLine(queue.Dequeue());
Console.WriteLine(“Queue中的元素數量: {0}”, queue.Count);

輸出:
Queue中的元素數量: 4
3
2
1
Four
Queue中的元素數量: 0

Peek():

從queue的前端取出一個項目(不刪除該項目),在一個空的queue喚用Peek() 和 Dequeue() 方法會導至一個執行時期的例外, “InvalidOperationException”.
Peek() 方法 Signature: object Peek();

Peek()範例:

Queue queue = new Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue(“Four”);
Console.WriteLine(“Queue中的元素數量: {0}”, queue.Count);
Console.WriteLine(queue.Peek());
Console.WriteLine(queue.Peek());
Console.WriteLine(queue.Peek());
Console.WriteLine(“Queue中的元素數量: {0}”, queue.Count);

輸出:
Queue中的元素數量: 4
3
3
3
Queue中的元素數量: 4

 

如果你想走訪queue中的每一個元素,又不想刪去其中的元素,可以將queue轉換為一個陣列:

走訪Queue範例:

Queue queue = new
Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue(“Four”);
Console.WriteLine(“Queue中的元素數量: {0}”, queue.Count);
foreach (var i in queue.ToArray())
Console.WriteLine(i);
Console.WriteLine(“Queue中的元素數量: {0}”, queue.Count);

輸出:

Queue中的元素數量: 4
3
2
1
Four
Queue中的元素數量: 4

  • Contains方法

Contains()方法檢查queue是否包含某一個特定項目,有的話方法回傳true,沒有的話回傳false。
Contains() Signature: bool Contains(object obj);

Contains範例

Queue queue = new
Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue(“Four”);
queue.Contains(2); // true
queue.Contains(100); //false

  • Clear()方法:

Clear()方法清除queue所有的項目。
Clear() Signature: void Clear();

Clear()範例:

Queue queue = new
Queue();
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queue.Enqueue(“Four”);
Console.WriteLine(“Queue中的元素數量: {0}”, queue.Count);
queue.Clear();
Console.WriteLine(“Queue中的元素數量: {0}”, queue.Count);

輸出:
Queue中的元素數量: 4
Queue中的元素數量: 0

使用Queue類別的佇列建立操作示範:

using System;
using System.Collections;
class Program
{
    static void Main(string[] args)
    {
        //建立一個看診佇列
        Queue myQ = new Queue();
        myQ.Enqueue("張三");//新增人員到看診佇列,也就是加入排隊…
        myQ.Enqueue("李四");
        myQ.Enqueue("王五");
        myQ.Enqueue("馬六");

        // 列印看診佇列的數量和值
        Console.WriteLine("候診的人數:    {0}", myQ.Count);

        // 列印看診佇列中的所有值
        Console.Write("目前候診的名單:");
        PrintValues(myQ);

        // 列印佇列中的第一個元素,並移除
        Console.WriteLine("進入診間的人:\t{0}", myQ.Dequeue());

        // 加入看診佇列
        Console.WriteLine("蘇小小加入等待看診排隊…");

        myQ.Enqueue("蘇小小");

        // 列印看診佇列中的所有值
        Console.Write("目前候診的名單:");
        PrintValues(myQ);

        // 列印看診佇列中的第一個元素,並移除
        Console.WriteLine("進入診間的人:\t{0}", myQ.Dequeue());

        // 列印看診佇列中的所有值
        Console.Write("目前候診的名單:");
        PrintValues(myQ);

        // 列印看診佇列中的第一個元素
        Console.WriteLine("下一個要進入診間的人(查詢):   \t{0}", myQ.Peek());

        // 列印看診佇列中的所有值
        Console.Write("目前候診的名單:");
        PrintValues(myQ);

        Console.ReadLine();

    }

    public static void PrintValues(IEnumerable myCollection)
    {
        foreach (Object obj in myCollection)
            Console.Write("    {0}", obj);
        Console.WriteLine();
    }
}

/* 程式的輸出
候診的人數:    4
目前候診的名單:    張三    李四    王五    馬六
進入診間的人:  張三
蘇小小加入等待看診排隊…
目前候診的名單:    李四    王五    馬六    蘇小小
進入診間的人:  李四
目前候診的名單:    王五    馬六    蘇小小
下一個要進入診間的人(查詢):    王五
目前候診的名單:    王五    馬六    蘇小小
*/

 

【佇列影音教學 on youtube】

【程式設計-C#】九九乘法表

【程式設計-C#】九九乘法表

【程式設計-C#】九九乘法表

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 九九乘法表
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string output = ""; //用來儲存要輸出的資料
            for (int i = 1; i <= 9; i++)
            {
                for (int j = 1; j <= 9; j++)
                {
                    output += "" + i + "*" + j + "=" + (i * j).ToString().PadLeft(2, ' ') + " ";
                }
                output += "\r\n"; //每印完一列,進行跳行(r:return, n:new line)
            }
            label1.Text = output; //將output內容輸出到label1上
        }
    }
}

9x9flow