2016年2月6日 星期六

C#如何建立物件與類別、命名空間、事件

1.如何建立類別(class):

    • 定義在哪都可以
    • 不可定義在namespace外(類別定義一定是全域性宣告)
    • 不能放在函式中
    • ex.
----------------------------------------------------
namespace ch6_2
{
    class c1
    {

    }
    class c2
    {
        static void Main(string[] args)
        {

        }
    }
}
------------------------------------------------------

2.命名空間(namespace):
    • 有效的將眾多物件根據他的功用可有效的分類
    • ex.
----------------------------------------------------
namespace ch6_3
{
    class c1
    {

    }
}
namespace ch6_4
{
    class c2
    {

    }
}
namespace ch6_5
{
   
    class c3
    {
        static void Main(string[] args)
        {

        }
    }
}
----------------------------------------------------------
3.如何建立屬性:
    • 直接使用public變數:
      • ex.
--------------------------------------------------------
class Car
{
    public int Speed;
}
class Program
{
      static void Main(string[] args)
    {
       Car Benz=new Car;
       Benz.Speed=500;
     }
}
---------------------------------------------------------
缺點:Speed值會被改變,例如允許負數
    • 使用get 及 set存取子:
    • 可建立唯讀唯寫屬性
      • ex.
--------------------------------------------------------
class Car
{
    private int Speed;

public int GetSpeed()
{
    return Speed;
}
public void SetSpeed(int vSpeed)
{
    if(vSpeed<0)vSpeed=0;
    if(vSpeed>200)vSpeed=200;
    Speed=vSpeed;
}
}
class Program
{
      static void Main(string[] args)
    {
       Car Benz=new Car;
       Benz.SetSpeed(500);//結果因為超過200所以會顯示結果為200
     }
}
--------------------------------------------------------
4.如何建立事件:
    • 建立 delegate 委派型別
      • 可以指向方法的參考指標,delegate 型別可以呼叫物件的方法,已傳回特定資訊
      • ex.
        ---------------------------------------------------
        delegate void EventDanger(int vSpeed);
        ---------------------------------------------------
    • 建立 event敘述宣告事件
      • public event DangerEvent Danger;
      • 名稱為 Danger 屬於 DangerEvent delegate 型別
    • 如何觸動事件?
      • if(Danger!=null)Danger(value);
    • 如何定義事件?
      • 在button內
    • 指定物件發生事件所要處理的方法:
      • ex.
----------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleEvent1
{
    delegate void DangerEvent(int vSpeed); // 宣告delegate型別

    class Car
    {
        private int _speed;
        public event DangerEvent Danger; // 宣告事件
        public int Speed // 定義 Speed 屬性
        {
            get
            {
                return _speed;
            }
            set
            {
                if (value > 200)
                {
                    if (Danger != null) Danger(value); // 啟動事件
                }
                _speed = value;
            }
        }
    }
    class Program
    {
        static void TooFast(int vSpeed)
        {
            Console.WriteLine("你的目前的速度是 {0},超過 200,請減速 !!!", vSpeed);
        }

        static void Main(string[] args)
        {
            Car Benz = new Car();
            // 指定 Danger 事件由 TooFast 方法來處理
            Benz.Danger += new DangerEvent(TooFast);
            Benz.Speed = 300;
            Console.Read();
        }
    }
}
-------------------------------------------------------------------------------------------

5.堆疊
參閱:click

沒有留言:

張貼留言