兩个必须避免函式写法.PDFVIP

  • 4
  • 0
  • 约1.31万字
  • 约 7页
  • 2018-11-06 发布于湖北
  • 举报
M-Power eNews VSD 加值服務部 李煌乙 如何使用 PowerBuilder11 實作出最佳的 .NET 專案 PowerBuilder 11 開發.NET 應用,使用的語言主要是 PowerScripts ,關鍵在於透過編譯器 的自動轉譯功能,產出標準.NET IL(Intermediate Language)的執行碼,運作於.NET Framework 環境上。這樣的開發機制,理論上雖說可以完全使用 PB 既有的開發經驗來開發新的.NET 應用, 但實際上由於.NET 與 PowerScripts 這兩種語言間先天存在著一定的差異,例如在語法的結構 上,PowerScripts 是比較鬆散、兼容的,相較之下,.NET 所使用的語言(如 C#) ,則顯得比較嚴 謹、沒有什麼彈性,這使得許多在 PowerBuilder 中能過通過編譯的語法,在.NET 編譯器上卻不 一定能行的通,因此 PB 程式設計師在開發上需要注意一些細節,才能讓.NET 應用的開發流程 更順暢,產出合乎期待的程式碼。為此,本期文章特地整理了 PB 開發.NET Target 應用須注意 的事項,以便幫助程式設計師實作出最佳的,NET 應用。 兩個必須避免的函式寫法 ‧ 避免使用 GoTo 語法 由於 PB 中沒有範圍(Scope)這樣的觀念,因此 GoTo 能夠在傳統的 PB 程式中使用,不過 在 .NET 中有範圍的觀念,雖然 GoTo 的語法能夠使用,但如果 GoTo 的 label 被標示在不同的範 圍裡,那編譯時就會出錯,範例如下: 在這個範例中, PB 程式碼(左下)會被轉譯成 .NET 程式碼(右下) ,由於.NET 語法的特性 label 的部份會形成另一個新的範圍,造成編譯錯誤! 原 PB 程式碼 轉譯後的 C# 程式碼(會造成編譯錯誤!) if b = 0 then if (b == 0) label: ... { // opening a new scope else label: ... ... } end if else goto label { ... } goto label; ‧ 避免以間接的方式執行一個物件的祖先事件: 例如有三個 Window ,W_1 、W_2 、W_3 ,W_2 繼承自 W_1 ,W_3 又繼承自 W_2 ,在三 個 Window 中都有一個 Clicked event ,傳統PB 中如果在 W_3 的 clicked event 以如左下方式呼 叫執行 W_1 的 clicked event 是可行的,程式的意義是以間接的方式去呼叫執行祖先 W_1 的 clicked event ,不過這樣的語法轉換成C#的程式碼後,由於 C#並不支援如 PB 般的非直接呼叫 September 09 M-Power eNew 本篇文章版權為倍力資訊股份有限公司所有,未經書面同意,嚴禁複製、轉載

文档评论(0)

1亿VIP精品文档

相关文档