程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Visual Studio:針對Java開發人員的C#編程語言(1)(7)

Visual Studio:針對Java開發人員的C#編程語言(1)(7)

編輯:關於C語言

運算符

C# 提供了 Java 支持的所有可用運算符,如下表所示。在表的末尾,您將看到一些新的運算符,它們可以在 C# 中使用而不可以在 Java 中使用:

運算符 類別 符號 [Text] [Text] 一元 ++ -- + - ! ~ () 乘法 * / % 加法 + - 移位 << >> 關系 < > <= >= instanceof 相等 == != 邏輯與 & 邏輯異或 ^ 邏輯或 | 條件與 && 條件或 || 條件 ? : 賦值 = *= /= %= += -= <<= >>= &= ^= |= 操作數的類型 typeof 操作數的大小 sizeof 執行溢出檢查 checked 取消溢出檢查 unchecked

唯一不可以在 C# 中使用的 Java 運算符是 >>> 移位運算符。之所以在 Java 中存在此運算符,是因為該語言中缺乏無符號變量,例如在需要右移位以在最高有效比特位插入 1 時。

然而,C# 支持無符號變量,因而 C# 只需要標准 >> 運算符。取決於操作數是否帶有符號,此運算符產生不同的結果。右移一個無符號數會在最高有效比特位插入 0,而右移一個有符號數則會復制前面的最高有效比特位。

checked 和 unchecked 運算符

如果對於分配給正在使用的數據類型的比特數來說結果太大,則算術運算會產生溢出。對於特定的整數算術運算,通過使用 checked 和 unchecked 關鍵字,可以檢查或忽略這樣的溢出。如果表達式是一個使用 checked 的常量表達式,則會在編譯時產生錯誤。

下面這個簡單的示例說明了這兩個運算符的用法

using System;
public class Class1
{
 public static void Main(string[] args)
 {
  short a = 10000, b = 10000;
  short d = unchecked((short)(10000*10000));
  Console.WriteLine(d= + d);
  short c = (short)(a*b);
  Console.WriteLine(c= + c);
  short e = checked((short)(a*b));
  Console.WriteLine(e= + e);
 }
}

在這段代碼中,unchecked 運算符避免了發生編譯時錯誤,否則,下面的語句會產生錯誤:

short d = unchecked((short)(10000*10000));

下一個表達式在默認情況下是不檢查的,因此值會悄悄溢出:

short c = (short)(a*b);

我們可以使用 checked 運算符來強制檢查該表達式是否會在運行時溢出:

short e = checked((short)(a*b));

當運行時,賦第一個值給 d & c 會以值 -7936 悄悄溢出,但是當試圖使用 checked() 以獲得 e 的乘積值時,程序會引發 System.OverflowException 異常。

注意:另外,通過使用命令行編譯器開關 (/checked) 或者直接在Visual Studio 中基於每個項目使用此開關,您還可以控制是否檢查代碼塊中的算術溢出。

is 運算符

此運算符確定左邊對象的類型是否與右邊指定的類型相匹配:

if (objReference is SomeClass) ...

在下面的示例中,CheckType() 方法打印一條消息,描述傳遞給它的參數的類型:

using System;
public class ShowTypes
{
 public static void Main(string[] args)
 {
  CheckType (5);
  CheckType (10f);
  CheckType ("Hello");
 }
 private static void CheckType (object obj)
 {
  if (obj is int)
   {
    Console.WriteLine("Integer parameter");
   }
   else if (obj is float)
   {
    Console.WriteLine("Float parameter");
   }
   else if (obj is string)
   {
    Console.WriteLine("String parameter");
   }
  }
}

運行此程序,輸出如下:

Integer parameter
Float parameter
String parameter

sizeof 運算符

sizeof 運算符以指定值類型的字節數返回其大小,如下面的代碼所示:

using System;
public class Size
{
 public static void Main()
 {
  unsafe
  {
   Console.WriteLine("The size of short is {0}.", sizeof(short));
   Console.WriteLine("The size of int is {0}.", sizeof(int));
   Console.WriteLine("The size of double is {0}.",sizeof(double));
  }
 }
}

注意,包含 sizeof 運算符的代碼放在一個不安全的塊中。這是因為 sizeof 運算符被認為是一個不安全的運算符(由於它直接訪問內存)。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved