熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> ASP編程 >> 正文

針對 Java 開發人員的 C# 編程語言(2)

2013-11-15 12:48:05  來源: ASP編程 

  此程序的輸出告訴我們結果是 SystemDouble 類型選擇它是因為SystemMathPI 是這種類型
  
  Calculated area is =
  The result is of type SystemDouble
  
  流程控制
  
  在這兩種語言中流程控制語句是非常相似的但是這一部分也會討論它們的一些細微差別
  
  分支語句
  分支語句根據特定的條件改變運行時程序執行的流程
  
  ifelse 和 else if
  這些在兩種語言中是一樣的
  
  switch 語句
  在兩種語言中switch 語句都提供條件多分支操作但是有點不同的是Java 允許您越過一個 case 並執行下一個 case除非您在 case 的末尾使用了 break 語句然而C# 需要在每個 case 的末尾都使用 break 或 goto 語句如果兩者都不存在則編譯器會產生下列錯誤
  
  Control cannot fall through from one case label to another
  
  不過請注意在沒有指定要執行的代碼的地方當 case 匹配時控制會越過隨後的 case當在 switch 語句中使用 goto 時我們只能跳至同一 switch 中的另一個 case 塊如果我們想要跳至 default case我們可以使用goto default;否則我們需要使用goto case cond;其中 cond 是我們希望跳至的 case 的匹配條件Java 的 switch 語句的另一個不同之處在於在 Java 中我們只能對整數類型使用 switch 語句而 C# 允許我們對字符串變量使用 switch 語句
  
  例如下面的程序在 C# 中是合法的但在 Java 中卻是不合法的
  
  switch (args[])
  {
   case copy:
    
    break;
   case move:
    
    goto case delete;
    break;
   case del:
   case remove:
   case delete:
    
    break;
   default:
    
    break;
  }
  
  goto 的返回
  在 Java 中goto 是一個沒有實現的保留關鍵字然而我們可以使用帶有 break 或 continue 標簽的語句來達到與 goto 相似的目的
  
  C# 允許 goto 語句跳至帶有標簽的語句不過請注意為了跳至一個特定的標簽goto 語句必須在該標簽的范圍內換句話說goto 不可用來跳進一個語句塊(不過它可以跳出一個語句塊)跳出一個類或退出 trycatch 語句中的 finally 塊不過請注意在大多數情況下我們都不鼓勵您使用 goto因為它違反了面向對象編程的良好實踐
  
  循環語句
  循環語句重復指定的代碼塊直到滿足給定的條件為止
  
  for 循環
  在兩種語言中for 循環的語法和操作均相同
  
  for (initialization; condition; expression)
   statement;
  
  foreach 循環
  C# 引入了一種新的循環類型稱為 foreach 循環(類似於 Visual Basic 的 For Each)foreach 循環允許遍歷支持 IEnumerable 接口的容器類中的每一項(例如數組)下面的代碼說明了如何使用 foreach 語句來輸出一個數組的內容
  
  public static void Main()
  {
   int[] arr= new int[] {};
   foreach ( int i in arr)
   {
    ConsoleWriteLine(Value is {} i);
   }
  }
  
  在 C# 中的數組部分我們將更詳細地介紹 C# 中的數組
  
  while 和 dowhile 循環
  在兩種語言中while 和 dowhile 語句的語法和操作均相同
  
  while (condition)
  {
   //statements
  }
  
  As usual dont forget the trailing ; in dowhile loops:
  
  do
  {
   //statements
  }
  while(condition);
  
  類基礎
  
  訪問修飾符
  C# 中的修飾符與 Java 大致相同我們將在這一部分介紹其中的一些細微差別每個類成員或類本身都可以用訪問修飾符進行聲明以定義許可訪問的范圍沒有在其他類中聲明的類只能指定 public 或 internal 修飾符而嵌套的類(如其他的類成員)可以指定下面五個修飾符中的任何一個
  
  public — 對所有類可見
  
  protected —僅從派生類中可見
  
  private — 僅在給定的類中可見
  
  internal — 僅在相同的程序集中可見
  
  protected internal — 僅對當前的程序集或從包含類中派生的類型可見
  
  publicprotected 和 private 修飾符
  public 修飾符使得可以從類內外的任何地方訪問成員protected 修飾符表示訪問僅限於包含類或從它派生的類private 修飾符意味著只可能從包含類型中進行訪問
  
  internal 修飾符
  internal 項只可以在當前的程序集中進行訪問NET 中的程序集大致等同於 Java 的 JAR 文件它表示可以從中構造其他程序的生成塊
  
  protected internal 修飾符
  protected internal 項僅對當前程序集或從包含類派生的類型可見在 C# 中默認訪問修飾符是 private而 Java 的默認訪問修飾符是包范圍
  
  sealed 修飾符
  在其類聲明中帶有 sealed 修飾符的類可以認為是與抽象類完全相反的類 — 它不能被繼承我們可以將一個類標記為 sealed以防止其他類重寫它的功能自然地sealed 類不能是抽象的同時還需要注意該結構是隱式密封的因此它們不能被繼承sealed 修飾符相當於在 Java 中用 final 關鍵字標記類
  
  readonly 修飾符
  要在 C# 中定義常量我們可以使用 const 或 readonly 修飾符替換 Java 的 final 關鍵字在 C# 中這兩個修飾符之間的區別在於const 項是在編譯時處理的而 readonly 字段是在運行時設置的這可以允許我們修改用於在運行時確定 readonly 字段值的表達式
  
  這意味著給 readonly 字段的賦值可以出現在類構造函數及聲明中例如下面的類聲明了一個名為 IntegerVariable 的 readonly 變量它是在類構造函數中初始化的
  
  using System;
  public class ReadOnlyClass
  {
   private readonly int IntegerConstant;
  
   public ReadOnlyClass ()
   {
    IntegerConstant = ;
   }
   // We get a compile time error if we try to set the value of the readonly
   // class variable outside of the constructor
   public int IntMember
   {
    set
    {
     IntegerConstant = value;
    }
    get
    {
     return IntegerConstant;
    }
   }
  
   public static void Main(string[] args)
   {
    ReadOnlyClass obj= new ReadOnlyClass();
  
    // We cannot perform this operation on a readonly field
    objIntMember = ;
    ConsoleWriteLine(Value of IntegerConstant field is {}
                 objIntMember);
   }
  }
  
  注意如果 readonly 修飾符應用於靜態字段它就應該在該靜態字段中進行初始化
  
  類的構造函數
  
  Main() 方法
  
  每個 C# 應用程序都必須#Arrays in C#只能包含一個 Main() 方法Main() 方法指定程序從何處開始執行注意在 C# 中Main() 用大寫字母開頭而 Java 使用小寫的 main()
  
  Main() 只能返回 int 或 void並且有一個可選的字符串數組參數來表示命令行參數
  
  static int Main (string[] args)
  {
   
   return ;
  }
  
  字符串數組參數可以包含任何傳入的命令行參數這與 Java 中完全一樣因此args[] 指定第一個命令行參數而 args[] 表示第二個參數等等與 C++ 不同的是args 數組不包含 EXE 文件的名稱
  
  其他方法
  
  當將參數傳遞給方法時它們可能通過值傳遞也可能通過引用傳遞值參數只提取任何變量的值以在方法中使用因而調用代碼中的變量值不受方法中對這些參數所執行的操作的影響
  
  而引用型參數指向在調用代碼中聲明的變量因而在通過引用傳遞時方法將修改該變量的內容
  
  通過引用傳遞
  在 Java 和 C# 中引用對象的方法參數總是通過引用傳遞而基本數據類型參數則通過值傳遞
  
  在 C# 中所有參數在默認情況下都是通過值傳遞的要通過引用進行傳遞我們需要指定關鍵字 ref 或 out 中的一個這兩個關鍵字的不同之處在於參數的初始化ref 參數必須在使用前進行初始化而 out 參數無需在傳遞前進行顯式初始化並且任何先前的值都會被忽略
  
  請注意當方法將引用類型作為參數使用時引用本身是通過值傳遞的然而引用仍然指向內存中的同一對象因此對對象的屬性所做的任何改變在方法退出之後將保持不變但是因為引用本身是通過值傳遞的所以在方法內它應該改為指向一個不同的對象甚至一個新對象而一旦方法執行完畢引用就會恢復為指向原來的對象即使原來的對象是未賦值的也同樣如此
  
  ref 關鍵字
  當我們希望調用
From:http://tw.wingwit.com/Article/program/ASP/201311/21656.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.