Computer >> Máy Tính >  >> Lập trình >> C#

Toán tử IS so với AS trong C #

Toán tử IS

Toán tử "is" trong C # kiểm tra xem kiểu thời gian chạy của một đối tượng có tương thích với một kiểu nhất định hay không.

Sau đây là cú pháp -

expr is type

Đây, expr là biểu thức

loại là tên của loại

Sau đây là một ví dụ cho thấy cách sử dụng toán tử is trong C # &minis;

Ví dụ

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();
   }
}

Đầu ra

Class One
Class Two
None of the classes!

Toán tử AS

Toán tử "as" thực hiện chuyển đổi giữa các loại tương thích. Nó giống như một hoạt động truyền và nó chỉ thực hiện các chuyển đổi tham chiếu, chuyển đổi không thể sử dụng và chuyển đổi quyền anh. Toán tử as không thể thực hiện các chuyển đổi khác, chẳng hạn như chuyển đổi do người dùng xác định, thay vào đó, toán tử này sẽ được thực hiện bằng cách sử dụng biểu thức ép kiểu.

Sau đây là một ví dụ cho thấy việc sử dụng hoạt động as trong C #. Ở đây như được sử dụng để chuyển đổi -

string s = obj[i] as string;

Cố gắng chạy mã sau để làm việc với toán tử 'as' trong C # -

Ví dụ

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();
   }
}

Đầu ra

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