在一個項目中,客戶要求對報表中的簽名進行仿手寫的簽名處理,因此我們原先只是顯示相關人員的姓名的地方,需要採用手寫方式簽名,我們的報表是利用FastReport處理的,在利用楷體處理的時候,開發展示倒是正常效果,不過實際上在伺服器運行的時候,出來的確實正規的宋體格式,相應的字體都已經安裝,不過還是沒有... ...
goto 語句 可以無條件轉移到程式中的標簽指定的位置,由標識符加上冒號構成,語法如下:
goto 標簽名; 代碼塊1; 標簽名: 代碼塊2;
例子:
/// <summary> /// 例子:使用goto /// </summary> static void Simple1() { loop: var num = new Random().Next(0, 10); Console.WriteLine($"num:{num}"); if (num % 2 == 0) // 如果是偶數,則跳過中間代碼,直接運行 jump標簽 後的代碼 goto jump; Console.WriteLine("== Coding =="); jump: Console.WriteLine("Hello World!!!"); if (num % 2 != 0) { Console.WriteLine(); // 如果不是偶數,則運行 loop標簽 後的代碼 goto loop; } Console.ReadLine(); }
PS:
1.運行到標簽名後面的代碼【代碼塊2】就會執行,並不是只有跳轉才會執行
2.跳轉【goto】標簽時,中間的代碼不會被執行,標簽名後的代碼塊會被執行一次,邏輯有問題容易形成死迴圈
/// <summary> /// 例子:死迴圈 /// </summary> static void SimpleEndlessLoop() { loop: Console.WriteLine("Hello World!!!"); goto loop; Console.ReadLine(); }
3.標簽名 必須和 goto 在同一起,無法跨方法和類
4.goto 可以跳出迴圈,但不能跳入迴圈
/// <summary> /// 例子:goto在迴圈中的使用 /// </summary> static void SimpleFor() { for (int i = 0; i < 9; i++) { Console.WriteLine($"i={i}"); goto loop; } loop: Console.WriteLine("Hello World!!!"); Console.ReadLine(); }
5.goto 可以在switch中跳入別的case中
/// <summary> /// 例子:goto在 switch 中的使用 /// </summary> static void SimpleSwitch() { loop: var num = new Random().Next(0, 10); switch (num) { case 1: Console.WriteLine("Hello World!!!"); break; default: Console.WriteLine($"num={num}"); // goto 可以在switch中跳入別的case中 if (num % 2 == 0) gotocase 1; break; } if (num % 2 != 0) { Console.WriteLine(); // 如果不是偶數,則運行 loop標簽 後的代碼 goto loop; } Console.ReadLine(); }