关于类型判断符is和迭代器接口实现中yield return的使用

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 学习2
{
    class Program
    {
        static void Main(string[] args)
        {
            mytest mt = new mytest();
            foreach (object element in mt)//由于返回的数值的类型不统一,所以采用object来接受
            {
                if (element is string)//利用is来判断数据的类型再对应处理
                {
                    Console.WriteLine(Convert.ToString(element));
                }
                if (element is int)
                {
                    int sum = Convert.ToInt32(element) + 1;
                    Console.WriteLine(sum);
                }
            }
        }
    }

    class mytest
    {
        public System.Collections.IEnumerator GetEnumerator()   //在类中实现foreach迭代器IEnumerator接口的GetEnumerator方法
       { 
         yield return "hello";   //利用yield return依次返回不同的文字和数值
         yield return 1; 
         yield return "good"; 
       } 
    } 
}

  

  is类型判断符MSDN说明:http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ZH-CN&k=k(IS_CSHARPKEYWORD);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-CSHARP)&rd=true

注意:is判断符所返回的数值为true或false,并且is对于能强制转换而不引发异常的类型返回true(例如 继承类 is 基类)

class Class1 {}
class Class2 {}
class Class3 : Class2 { }
class IsTest
{
  static void Main()
    {
        Class1 c1 = new Class1();
        Class2 c2 = new Class2();
        Class3 c3 = new Class3();
        if(c1 is Class1)//返回 true
       {
        }         }        
       if(c2 is Class2)//返回 true
       {
         }        
       if(c3 is Class2)//返回 true
       {
         }        
    }
}

  

posted @ 2012-05-13 14:36  MadKeX  阅读(253)  评论(0)    收藏  举报