在靜態類中定義一個泛型方法查詢陣列元素

kewlgrl發表於2016-04-21

問題及程式碼:

/* 
* Copyright (c) 2016, 煙臺大學計算機與控制工程學院 
* All rights reserved. 
* 檔名稱:search.cpp 
* 作    者:單昕昕 
* 完成日期:2016年4月21日 
* 版 本 號:v1.0 
* 問題描述:建立靜態類,在其中定義一個泛型方法,實現查詢陣列元素的功能。
* 程式輸入:陣列元素,要查詢的元素。 
* 程式輸出:元素位置。 
*/

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

namespace ConsoleApplication1
{
    static class MyClass //靜態類
    {
        public static void Search<T>(T x,T[] a) where T : System.IComparable//泛型方法及泛型約束,注意陣列引數寫在引數列表的最後
        {
            int i, flag = -1;
            for (i = 0; i < 10; ++i)
            {
                if (a[i].CompareTo(x) == 0)
                {
                    flag = i;
                    break;
                }
            }
            Console.WriteLine(flag);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("請輸入10個元素值:");
            int[] a = new int[10];
            for (int i = 0; i < 10; ++i)
            {
                int m = int.Parse(Console.ReadLine());
                a[i] = m;
            }
            Console.Write("待查詢的元素 x=");
            int x = int.Parse(Console.ReadLine());
            Console.Write("元素x的位置是:");
            MyClass.Search<int>(x, a);
            Console.ReadKey();
        }
    }
}
/*測試資料
1
2
3
4
5
6
7
8
9
10
*/



執行結果:


╮(╯﹏╰)╭C#老師講的真是略過阿,好多東西自己寫的時候自己再去學。。

( ‵o′)凸  泛型中不能直接比較,要用where T : System.IComparable

而且靜態類中不能傳遞出來結果。。只能在靜態類的內部輸出結果。。QWQ


相關文章