C#語法學習(類型轉換)

/*
 * Created by SharpDevelop.
 * User: Administrator
 * Date: 2008/8/27
 * Time: 下午 04:52
 * 類型轉換
 * C#中類型轉換的機制分為兩種:
 * 隱式轉換(Implicit Conversions)
 * 顯式轉換(Explicit Conversions)
 * 隱式轉換不需指明欲轉變的目的類型;
 * 而顯式轉換明確地使用轉換運算符(cast)指定要轉換成哪一种類型.
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 
*/
using  System;
class  Test
{
    
static   void  Main()
    {
        
int  a = 5 ; // System.Int32
         long  b; // System.Int64
        b = a; // 隱式轉換
         long  c = 10 ;
        c
= ( int )a; // 顯式轉換
        Console.WriteLine(b);
        Console.WriteLine(
" int的最大值 "   +   int .MaxValue);
        Console.WriteLine(
" long的最大值 "   +   long .MaxValue);
        Console.WriteLine(b.GetType());
    }

}

/*
 * Created by SharpDevelop.
 * User: Administrator
 * Date: 2008/8/27
 * Time: 下午 05:02
 * C#中對轉換進行檢查
 * checked
 * unchecked
 * checked語句
 * unchecked語句
 * 兩者的使用準則
 * 1,寫代碼時將可能發生的非預期溢出的代碼放到一個checked塊中.
 * 2,寫代碼是將允許發生溢出的代碼顯式地放到一個unchecked塊中
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 
*/
using  System;
using  System.Windows.Forms;
class  Test
{
    
static   void  Main()
    {
        
int  a = 5 ;
        
long  b = 700000000000 ;
        
try
        {
            
// a=checked((int)b); // checked方法
             checked // checked語句
            {
                a
= ( int )b;
            }
        }
        
catch (System.OverflowException e)
        {
            MessageBox.Show(e.Message);
            
return ;
        }
        Console.WriteLine(a);
    }

}


/*
 * Created by SharpDevelop.
 * User: Administrator
 * Date: 2008/8/27
 * Time: 下午 05:12
 * 在數值型在行運算時,程序會隱式的先把兩個數轉換成較大的類型,最後再進行運算.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 
*/

using  System;
using  System.Windows.Forms;
class  Con
{
    
static   void  Main()
    {
        Byte b
= 100 ;
        
// b=(Byte)(b+100); // 進行顯式轉換後才能運行
        b += 100 ; // 此與不會發生錯誤,有點怪
        Console.WriteLine(b);
    }
}
/*
 * Created by SharpDevelop.
 * User: Administrator
 * Date: 2008/8/27
 * Time: 下午 05:17
 * 引用類型的轉換
 * 開發人員經常需要將一個對像從一种類型轉換成其他類型.
 * CLR允許將一個對像強制轉換成其它類型或者它的任何基類型.
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 
*/
using  System;
using  System.Windows.Forms;
class  Fruit
{
    
}
class  Apple:Fruit
{
    
public   int  i = 1 ;
}
class  Con
{
    
static   void  Main()
    {
        Fruit f
= new  Apple(); // CLR允許將一個對像強制轉換成其它類型或者它的任何基類型
        
// Apple a=new Fruit(); // 發生錯誤無法將fruit隱式轉換成Apple
        Type t = f.GetType();
        Apple a
= (Apple)f;
        Console.WriteLine(a.i);
        Console.WriteLine(t.FullName);
// 取類的名稱
    }
}

/*
 * Created by SharpDevelop.
 * User: Administrator
 * Date: 2008/8/27
 * Time: 下午 05:52
 * C#中進行強制類型轉換的另一种方法是用
 * IS 操作符
 * is操作符只會返回真或假,不會發生異常.
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 
*/
 
using  System;
 
using  System.Windows.Forms;
 
class  Fruit
 {
     
 }
 
class  Apple:Fruit
 {
     
public   int  i = 1 ;
 }
 
class  Con
 {
     
static   void  Main()
     {
         Fruit f
= new  Fruit();
         Apple a
= new  Apple();
         Console.WriteLine(f 
is  Fruit);
         Console.WriteLine(f 
is  Apple);
         Console.WriteLine(a 
is  Fruit);
         Console.WriteLine(a 
is  Apple);
     }
 }

/*
 * Created by SharpDevelop.
 * User: Administrator
 * Date: 2008/8/27
 * Time: 下午 06:00
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 
*/
using  System;
using  System.Windows.Forms;
class  Fruit
{
}
class  Apple:Fruit
{
    
public   int  i = 1 ;
}
class  Con
{
    
static   void  Main()
    {
        
// 這里CLR對類型進行了兩次操作符的檢查,這樣無形之中就影響了性能.
        Fruit f = new  Apple();
        
if (f  is  Apple) // 用IS驗證,假如對像為NULL,那麼其結果總是為false
        {
            Apple a
= (Apple)f;
            Console.WriteLine(a.i);
        }
    }
}
/*
 * Created by SharpDevelop.
 * User: Administrator
 * Date: 2008/8/27
 * Time: 下午 06:00
 * as操作符
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 
*/
using  System;
using  System.Windows.Forms;
class  Fruit
{
}
class  Apple:Fruit
{
    
public   int  i = 1 ;
}
class  Con
{
    
static   void  Main()
    {
        Fruit f
= new  Apple();
        Apple a
= as  Apple;
        
// clr會驗證是否符合apple如果沒有問題則返回一個對像的引用否則會返回一個空值null
         if (a != null )
        {
            Console.WriteLine(a.i);
        }
    }
}
///////////
下面是WINFORM中的一個事件程序

         void  Button5Click( object  sender, EventArgs e)
        {
            
foreach (Control c  in   this .Controls)
            {
                
this .listBox1.Items.Add(c.Name);
                Control c1
= as  Button;
                
if (c1 != null )
                {
                    c1.Text
= " kkkkkkkkkk " ;
                }
            }
            
        }

你可能感兴趣的:(C#)