程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#基礎知識整理:C#類和結構(1)

C#基礎知識整理:C#類和結構(1)

編輯:C#入門知識

1、結構功能特性? 實現代碼?
結構用struct關鍵字定義的,與類類似,但有本質區別。結構實質是一個值類型,它不需要對分配的。
結構的特性:
(1)、結構作為參數傳遞時,是值傳遞。
(2)、結構的構造函數必須帶參數的。
(3)、結構實例化可以不用new的。
(4)、結構不能繼承,但是可以實現接口。
(5)、結構中不能初始化實例字段。
例:
 
 
using System; 
using System.Collections.Generic; 
using System.Text; 
 
namespace TestStruct 

    class Program 
    { 
        public struct Circle     //定義一個圓  
        { 
            private const double pi = 3.1415926; 
 
            public double radius;  //半徑  
 
            /// <summary>  
            /// 構造函數  
            /// </summary>  
            public Circle(double r) 
            { 
                radius = r; 
            } 
            /// <summary>  
            /// 面積  
            /// </summary>  
            public double CArea() 
            { 
                return 3.14 * radius * radius; 
            } 
 
        } 
 
        static void Main(string[] args) 
        { 
            Circle circle1;    //不用new實例化  
 
            circle1.radius = 5; 
 
            Console.WriteLine("圓面積為:" + circle1.CArea()); 
 
            Circle circle2 = new Circle(1);  //用new實例化  
 
            Console.WriteLine("圓面積為:" + circle2.CArea()); 
 
            Console.ReadLine(); 
        } 
    } 

using System;
using System.Collections.Generic;
using System.Text;
 
namespace TestStruct
{
    class Program
    {
        public struct Circle     //定義一個圓
        {
            private const double pi = 3.1415926;
 
            public double radius;  //半徑
 
            /// <summary>
            /// 構造函數
            /// </summary>
            public Circle(double r)
            {
                radius = r;
            }
            /// <summary>
            /// 面積
            /// </summary>
            public double CArea()
            {
                return 3.14 * radius * radius;
            }
 
        }
 
        static void Main(string[] args)
        {
            Circle circle1;    //不用new實例化
 
            circle1.radius = 5;
 
            Console.WriteLine("圓面積為:" + circle1.CArea());
 
            Circle circle2 = new Circle(1);  //用new實例化
 
            Console.WriteLine("圓面積為:" + circle2.CArea());
 
            Console.ReadLine();
        }
    }
}
 
2、什麼是委托? 特點? 何時使用委托而不使用接口? 如何聲明、實例化和使用委托?
 
(1)、委托是一個類,它定義了方法的類型,可以講方法當做另一個方法的參數。避免在程序中使用分支,
 
程序擴展性更好。
例子:
 
 
class Program 
  { 
      public delegate void PrinteDelegate(string name); 
 
      private static void PrinteEnglish(string name) 
      { 
          Console.WriteLine("Your Name: " + name); 
      } 
 
      private static void PrinteChinese(string name) 
      { 
          Console.WriteLine("你的大名:" + name); 
      } 
 
      private static void Printe(string name, PrinteDelegate MakeGreeting) 
      { 
          MakeGreeting(name); 
      } 
 
      static void Main(string[] args) 
      { 
          Printe("Sam Young", PrinteEnglish); 
 
          Printe("白楊樹", PrinteChinese); 
 
          Console.ReadLine(); 
      } 
  } 
  class Program
    {
        public delegate void PrinteDelegate(string name);
 
        private static void PrinteEnglish(string name)
        {
            Console.WriteLine("Your Name: " + name);
        }
 
        private static void PrinteChinese(string name)
        {
            Console.WriteLine("你的大名:" + name);
        }
 
        private static void Printe(string name, PrinteDelegate MakeGreeting)
        {
            MakeGreeting(name);
        }
 
        static void Main(string[] args)
        {
            Printe("Sam Young", PrinteEnglish);
 
            Printe("白楊樹", PrinteChinese);
 
            Console.ReadLine();
        }
    } www.2cto.com
(2)、委托類似於C++ 函數指針,但它是類型安全的。
 
委托允許將方法作為參數進行傳遞。
 
委托可用於定義回調方法。
 
委托可以鏈接在一起;例如,可以對一個事件調用多個方法。
 
方法不需要與委托簽名精確匹配。有關更多信息,請參見協變和逆變。
 
C# 2.0 版引入了匿名方法的概念,此類方法允許將代碼塊作為參數傳遞,以代替單獨定義的方法。
 
使用委托,我覺得應該在需要分支調用不同方法時使用。但是例如工廠模式中,根據分支實例化不同的類
 
,這時就用接口。
 
 
委托是一個類,它定義了方法的類型,使得可以將方法當作另一個方法的參數來進行傳遞,這種將方法動
 
態地賦給參數的做法,可以避免在程序中大量使用If-Else(Switch)語句,同時使得程序具有更好的可擴
 
展性。
 
3、什麼是部分類/分部類? 哪些功能特性? 實現代碼? 適用場合? 需遵循幾個規則?
分部類就是將一個類用partial關鍵字,分成好幾個獨立文件,但實質還是一個類。一般當一個類行數太多或者某些功能比較獨立可以用分部類,最常見就是窗體Form.cs和Form.designer.cs。
一般需遵循如下規則:
(1)、必須使用partial 關鍵字
 
(2)、雖然有不同的部分,但是各個部分必須具有相同的可訪問性,如public、private 等
 
(3)、如果將任意部分聲明為抽象的、密封的,則整個類型都被視為抽象的、密封的
 
(4)、如果任意部分聲明繼承基類時,則整個類型都將繼承該類
 
(5)、 各個部分可以指定不同的基接口,最終類型將實現所有分部聲明所列出的全部接口
 
(6)、在某一分部定義中聲明的任何類、結構或接口成員可供所有其他部分使用
 
(7)、嵌套類型可以是分部的,即使它們所嵌套於的類型本身並不是分部的也如此。
 
 作者 白楊樹

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved