Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

IS เทียบกับ AS Operators ใน C #


ตัวดำเนินการ IS

โอเปอเรเตอร์ "is" ใน C# จะตรวจสอบว่าประเภทรันไทม์ของออบเจ็กต์เข้ากันได้กับประเภทที่กำหนดหรือไม่

ต่อไปนี้เป็นวากยสัมพันธ์ −

expr is type

ที่นี่ ด่วน คือนิพจน์

ประเภท เป็นชื่อประเภท

ต่อไปนี้คือตัวอย่างการแสดงการใช้ isoperator ใน C# &minis;

ตัวอย่าง

using System;

class One { }
class Two { }

public class Demo {
   public static void Test(object obj) {
      One x;
      Two y;

      if (obj is One) {
         Console.WriteLine("Class One");
         x = (One)obj;
      } else if (obj is Two) {
         Console.WriteLine("Class Two");
         y = (Two)obj;
      } else {
         Console.WriteLine("None of the classes!");
      }
   }

   public static void Main() {
      One o1 = new One();
      Two t1 = new Two();
      Test(o1);
      Test(t1);
      Test("str");
      Console.ReadKey();
   }
}

ผลลัพธ์

Class One
Class Two
None of the classes!

ตัวดำเนินการ AS

ตัวดำเนินการ "as" ทำการแปลงระหว่างประเภทที่เข้ากันได้ มันเหมือนกับการดำเนินการแคสต์และมันทำเฉพาะการแปลงอ้างอิง การแปลงที่ไม่มีค่า และการแปลงการชกมวย ตัวดำเนินการ as ไม่สามารถทำการแปลงอื่นๆ เช่น การแปลงที่ผู้ใช้กำหนด ซึ่งควรดำเนินการโดยใช้นิพจน์การแคสต์แทน

ต่อไปนี้คือตัวอย่างที่แสดงการใช้งาน as operation ใน C# ตามที่ใช้สำหรับการแปลง -

string s = obj[i] as string;

ลองเรียกใช้รหัสต่อไปนี้เพื่อทำงานกับตัวดำเนินการ 'as' ใน C# -

ตัวอย่าง

using System;

public class Demo {
   public static void Main() {
      object[] obj = new object[2];
      obj[0] = "jack";
      obj[1] = 32;

      for (int i = 0; i < obj.Length; ++i) {
         string s = obj[i] as string;
         Console.Write("{0}: ", i);
         if (s != null)
         Console.WriteLine("'" + s + "'");
         else
         Console.WriteLine("This is not a string!");
      }
      Console.ReadKey();
   }
}

ผลลัพธ์

0: 'jack'
1: This is not a string!