最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#學習基礎概念二十五問續(xù)2第1/2頁

 更新時間:2007年04月09日 00:00:00   作者:  
6.sealed 修飾符是干什么的?
答:
sealed 修飾符表示密封
用于類時,表示該類不能再被繼承,不能和 abstract 同時使用,因為這兩個修飾符在含義上互相排斥
用于方法和屬性時,表示該方法或屬性不能再被繼承,必須和 override 關鍵字一起使用,因為使用 sealed 修飾符的方法或屬性肯定是基類中相應的虛成員
通常用于實現(xiàn)第三方類庫時不想被客戶端繼承,或用于沒有必要再繼承的類以防止濫用繼承造成層次結構體系混亂
恰當?shù)睦?nbsp;sealed 修飾符也可以提高一定的運行效率,因為不用考慮繼承類會重寫該成員
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example06
{
    class Program
    {
        class A
        {
            public virtual void F()
            {
                Console.WriteLine("A.F");
            }
            public virtual void G()
            {
                Console.WriteLine("A.G");
            }
        }
        class B : A
        {
            public sealed override void F()
            {
                Console.WriteLine("B.F");
            }
            public override void G()
            {
                Console.WriteLine("B.G");
            }
        }
        class C : B
        {
            public override void G()
            {
                Console.WriteLine("C.G");
            }
        }
        static void Main(string[] args)
        {
            new A().F();
            new A().G();
            new B().F();
            new B().G();
            new C().F();
            new C().G();
            Console.ReadLine();
        }
    }
}
結果:
類 B 在繼承類 A 時可以重寫兩個虛函數(shù),如圖所示:

由于類 B 中對 F 方法進行了密封, 類 C 在繼承類 B 時只能重寫一個函數(shù),如圖所示:

 
控制臺輸出結果,類 C 的方法 F 只能是輸出 類B 中對該方法的實現(xiàn):
A.F
A.G
B.F
B.G
B.F
C.G 

7.override 和 overload 的區(qū)別?
答:
override 表示重寫,用于繼承類對基類中虛成員的實現(xiàn)
overload 表示重載,用于同一個類中同名方法不同參數(shù)(包括類型不同或個數(shù)不同)的實現(xiàn)
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example07
{
    class Program
    {
        class BaseClass
        {
            public virtual void F()
            {
                Console.WriteLine("BaseClass.F");
            }
        }
        class DeriveClass : BaseClass
        {
            public override void F()
            {
                base.F();
                Console.WriteLine("DeriveClass.F");
            }
            public void Add(int Left, int Right)
            {
                Console.WriteLine("Add for Int: {0}", Left + Right);
            }
            public void Add(double Left, double Right)
            {
                Console.WriteLine("Add for int: {0}", Left + Right);
            }
        }
        static void Main(string[] args)
        {
            DeriveClass tmpObj = new DeriveClass();
            tmpObj.F();
            tmpObj.Add(1, 2);
            tmpObj.Add(1.1, 2.2);
            Console.ReadLine();
        }
    }
}
結果:
BaseClass.F
DeriveClass.F
Add for Int: 3
Add for int: 3.3 

8.什么是索引指示器?
答:
實現(xiàn)索引指示器(indexer)的類可以象數(shù)組那樣使用其實例后的對象,但與數(shù)組不同的是索引指示器的參數(shù)類型不僅限于int
簡單來說,其本質(zhì)就是一個含參數(shù)屬性
示例: 

using System;
using System.Collections.Generic;
using System.Text;
namespace Example08
{
    public class Point
    {
        private double x, y;
        public Point(double X, double Y)
        {
            x = X;
            y = Y;
        }
        //重寫ToString方法方便輸出
        public override string ToString()
        {
            return String.Format("X: {0} , Y: {1}", x, y);
        }
    }
    public class Points
    {
        Point[] points;
        public Points(Point[] Points)
        {
            points = Points;
        }
        public int PointNumber
        {
            get 
            { 
                return points.Length; 
            }
        }    
        //實現(xiàn)索引訪問器
        public Point this[int Index]
        {
            get
            {
                return points[Index];
            }
        }
    }
    //感謝watson hua(http://huazhihao.cnblogs.com/)的指點
    //索引指示器的實質(zhì)是含參屬性,參數(shù)并不只限于int
    class WeatherOfWeek
    {
        public string this[int Index]
        {
            get
            {
                //注意case段使用return直接返回所以不需要break
                switch (Index)
                {
                    case 0:
                        {
                            return "Today is cloudy!";
                        }
                    case 5:
                        {
                            return "Today is thundershower!";
                        }
                    default:
                        {
                            return "Today is fine!";
                        }
                }
            }
        }
        public string this[string Day]
        {
            get
            {
                string TodayWeather = null;
                //switch的標準寫法
                switch (Day)
                {
                    case "Sunday":
                        {
                            TodayWeather = "Today is cloudy!";
                            break;
                        }
                    case "Friday":
                        {
                            TodayWeather = "Today is thundershower!";
                            break;
                        }
                    default:
                        {
                            TodayWeather = "Today is fine!";
                            break;
                        }
                }
                return TodayWeather;
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Point[] tmpPoints = new Point[10];
            for (int i = 0; i < tmpPoints.Length; i++)
            {
                tmpPoints[i] = new Point(i, Math.Sin(i));
            }
            Points tmpObj = new Points(tmpPoints);
            for (int i = 0; i < tmpObj.PointNumber; i++)
            {
                Console.WriteLine(tmpObj[i]);
            }

            string[] Week = new string[] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Staurday"};
            WeatherOfWeek tmpWeatherOfWeek = new WeatherOfWeek();
            for (int i = 0; i < 6; i++)
            {
                Console.WriteLine(tmpWeatherOfWeek[i]);
            }
            foreach (string tmpDay in Week)
            {
                Console.WriteLine(tmpWeatherOfWeek[tmpDay]);
            }
            Console.ReadLine();
        }
    }
}
結果:
X: 0 , Y: 0
X: 1 , Y: 0.841470984807897
X: 2 , Y: 0.909297426825682
X: 3 , Y: 0.141120008059867
X: 4 , Y: -0.756802495307928
X: 5 , Y: -0.958924274663138
X: 6 , Y: -0.279415498198926
X: 7 , Y: 0.656986598718789
X: 8 , Y: 0.989358246623382
X: 9 , Y: 0.412118485241757
Today is cloudy!
Today is fine!
Today is fine!
Today is fine!
Today is fine!
Today is thundershower!
Today is cloudy!
Today is fine!
Today is fine!
Today is fine!
Today is fine!
Today is thundershower!
Today is fine!

相關文章

  • 解析c#操作excel后關閉excel.exe的方法

    解析c#操作excel后關閉excel.exe的方法

    C#和Asp.net下excel進程一被打開,有時就無法關閉,尤其是website.對關閉該進程有過GC、release等方法,但這些方法并不是在所有情況下均適用
    2013-07-07
  • C#配置文件操作類分享

    C#配置文件操作類分享

    這篇文章主要分享了C#配置文件操作類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 區(qū)分C# 中的 Struct 和 Class

    區(qū)分C# 中的 Struct 和 Class

    這篇文章主要介紹了如何區(qū)分C# 中的 Struct 和 Class,幫助大家更好的理解和學習c#編程,感興趣的朋友可以了解下
    2020-09-09
  • C#中Thread(線程)和Task(任務)實例詳解

    C#中Thread(線程)和Task(任務)實例詳解

    .NET Framework在System.Threading命名空間中具有與線程相關的類,線程是一小組可執(zhí)行指令,這篇文章主要給大家介紹了關于C#中Thread(線程)和Task(任務)的相關資料,需要的朋友可以參考下
    2022-03-03
  • VS2019下安裝和破解?DevExpress?19.2?插件的詳細教程

    VS2019下安裝和破解?DevExpress?19.2?插件的詳細教程

    這篇文章主要介紹了VS2019?安裝并破解?DevExpress?19.2?插件的詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • C#獲取USB事件API實例分析

    C#獲取USB事件API實例分析

    這篇文章主要介紹了C#獲取USB事件API,實例分析了C#操作USB事件的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • 如何用C#在PC上查找連接藍牙設備并實現(xiàn)數(shù)據(jù)傳輸

    如何用C#在PC上查找連接藍牙設備并實現(xiàn)數(shù)據(jù)傳輸

    這篇文章主要介紹了如何用C#在PC上查找連接藍牙設備并實現(xiàn)數(shù)據(jù)傳輸,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-03-03
  • c#如何實現(xiàn)接口事件

    c#如何實現(xiàn)接口事件

    這篇文章主要介紹了c#如何實現(xiàn)接口事件,幫助大家更好的理解和學習c#,感興趣的朋友可以了解下
    2020-10-10
  • C#線程處理系列之線程池中的I/O線程

    C#線程處理系列之線程池中的I/O線程

    這篇文章主要介紹了C#線程處理系列之線程池中的I/O線程,在這篇文章中將介紹如何用線程池中的I/O線程來執(zhí)行I/O操作,感興趣的小伙伴們可以參考一下
    2016-04-04
  • C#中使用DataContractSerializer類實現(xiàn)深拷貝操作示例

    C#中使用DataContractSerializer類實現(xiàn)深拷貝操作示例

    這篇文章主要介紹了C#中使用DataContractSerializer類實現(xiàn)深拷貝操作示例,本文給出了實現(xiàn)深拷貝方法、測試深拷貝方法例子、DataContractSerializer類實現(xiàn)深拷貝的原理等內(nèi)容,需要的朋友可以參考下
    2015-06-06

最新評論

壤塘县| 思茅市| 花莲市| 东城区| 涟水县| 文登市| 林芝县| 张家界市| 南投市| 马边| 新宾| 武定县| 天柱县| 登封市| 阳曲县| 鄂伦春自治旗| 新密市| 柏乡县| 甘洛县| 淄博市| 新余市| 周至县| 连江县| 麻江县| 宽城| 新津县| 策勒县| 盐源县| 五原县| 桃江县| 溧水县| 石首市| 若尔盖县| 隆尧县| 太仆寺旗| 鹤壁市| 德保县| 绥阳县| 城口县| 凌云县| 双牌县|