實驗---泛型
實驗目的:
1、 掌握泛型方法的定義和使用
2、 掌握常用泛型集合的使用實驗內容:
1、設計一個控制檯應用程式,定義一個泛型方法用來識別輸入的資料:
要求:
(1)如果輸入的是整數,顯示提示“資料x是整數。”
(2)如果輸入的是字串,顯示提示資訊。
(3)如果輸入的是雙精度浮點數,顯示提示資訊。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class GenClass<T>
{
T inputData;
public GenClass(T t)
{
inputData = t;
}
public void output()
{
Console.WriteLine(inputData.GetType());
}
}
class Program
{
static void Main(string[] args)
{
GenClass<int> class1 = new GenClass<int>(123);
class1.output();
GenClass<string> class2 = new GenClass<string>("123");
class2.output();
GenClass<double> class3 = new GenClass<double>(123);
class3.output();
Console.ReadLine();
}
}
}
2、設計一個控制檯應用程式,使用字典集合實現下列要求:
(1)從控制檯輸入一個字串,統計每個字元出現的個數。
(2)並在控制檯輸出出現的每個字元及該字元的個數。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace DictionarySetDemo
{
class Program
{
static void Main(string[] args)
{
Dictionary<char,int> dic = new Dictionary<char, int>();
for (char ch = 'a'; ch <= 'z'; ch++)
dic.Add(ch, 0);
string str = Console.ReadLine();
for (int i = 0; i < str.Length; i++)
{
if (str[i] >= 'a' && str[i] <= 'z')
dic[str[i]]++;
}
foreach(KeyValuePair<char,int> d in dic)
{
Console.WriteLine("{0},{1}",d.Key,d.Value);
}
Console.ReadLine();
}
}
}
3、使用泛型List<T>操作整數列表。建立一個空的List<int>,並使用Add方法新增0~8中的偶數。將元素5插入到List<int>中的指定索引2處。遍歷並輸出List<int>中的所有元素。使用泛型List<T>建立並顯示字串陣列列表arrayList2:”One”,”Two”,”Three”。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace listGeneral
{
class Program
{
static void Main(string[] args)
{
List<int> myList = new List<int>();
for (int i = 1; i <= 8; i++)
{
if (i % 2 == 0)
myList.Add(i);
}
myList.Insert(2, 5);
for (int i = 0; i < myList.Count; i++)
Console.Write(myList[i] + "\t");
Console.WriteLine();
string[] strList = new string[] { "One", "Two", "Three" };
List<string> stringList = new List<string>(strList);
for (int i = 0; i < stringList.Count; i++)
Console.WriteLine(stringList[i]);
Console.ReadLine();
}
}
}
思考:自定義一個泛型集合類MySet。該集合可以實現以下功能
(1)新增元素Add(e),新增的元素必須是不重複的
(2)刪除元素Remove(e)
(3)測試某個元素是否存在Contains(e)
(4)求該集合和另一個集合的並集,UnionWith(set2)返回該集合和set2集合的並集。
(5)求該集合和另一個集合的交集,IntersectWith(set2)返回該集合和set2集合的交集
(6)無引數的建構函式
(7) 實現IEnumerable<T>,則可以使用foreach遍歷器
可以藉助於List<T>來實現
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace generalClassExp
{
class MySet<T>
{
List<T> myList;
public MySet()
{
myList = new List<T>();
}
public MySet(T[] arr)
{
myList = new List<T>(arr);
}
public MySet(List<T> list)
{
this.myList = list;
}
public T this[int index]
{
get { return myList[index]; }
}
public int Count { get { return myList.Count; } }
public void add(T newObj)
{
if(myList.Contains(newObj))
Console.WriteLine("已存在");
else
myList.Add(newObj);
}
public bool Contains(T newObj)
{
return myList.Contains(newObj);
}
public void remove(T newObj)
{
myList.Remove(newObj);
}
public MySet<T> Union(MySet<T> anotherList)
{
MySet<T> newList = new MySet<T>();
for (int i = 0; i < myList.Count; i++)
newList.add(myList[i]);
for (int i = 0; i < anotherList.Count; i++)
{
T sing = anotherList[i];
if (!newList.Contains(sing))
newList.add(sing);
}
return newList;
}
public MySet<T> Intersection(MySet<T> anotherList)
{
MySet<T> newList = new MySet<T>();
for (int i = 0; i < anotherList.Count; i++)
{
T singg = anotherList[i];
if (myList.Contains(singg))
newList.add(singg);
}
return newList;
}
}
class Program
{
static void Main(string[] args)
{
int[] a = { 1, 2, 3, 4, 5 };
int[] b = { 4, 5, 6, 7, 8 };
MySet<int> aList = new MySet<int>(a);
MySet<int> bList = new MySet<int>(b);
aList.add(6);
MySet<int> cList = aList.Union(bList);
MySet<int> dList = aList.Intersection(bList);
for (int i = 0; i < cList.Count; i++)
Console.Write(cList[i]+"\t");
Console.WriteLine();
for (int i = 0; i < dList.Count; i++)
Console.Write(dList[i]+"\t");
Console.ReadLine();
}
}
}
相關文章
- 泛型最佳實踐:Go泛型設計者教你如何用泛型泛型Go
- go 1.18 泛型初體驗Go泛型
- 泛型類、泛型方法及泛型應用泛型
- 【java】【泛型】泛型geneticJava泛型
- Java泛型及實踐Java泛型
- 泛型類和泛型方法泛型
- 泛型--泛型萬用字元和泛型的上下限泛型字元
- Go 泛型之泛型約束Go泛型
- TypeScript 泛型介面和泛型類TypeScript泛型
- 其實泛型很簡單泛型
- 泛型泛型
- 型別 VS 泛型型別泛型
- TypeScript 泛型型別TypeScript泛型型別
- 泛型類、泛型方法、型別萬用字元的使用泛型型別字元
- 泛型viewmodle泛型View
- Java泛型Java泛型
- Go 泛型Go泛型
- 泛型(Generic)泛型
- 泛型(一)泛型
- 泛型(三)泛型
- 泛型(二)泛型
- 泛型(四)泛型
- 泛型(五)泛型
- 【譯】在非泛型類中建立泛型方法泛型
- 一. 重識Java之夯實泛型Java泛型
- 泛型型別(.NET 指南)泛型型別
- Java函式泛型List引數,操作泛型元素Java函式泛型
- Go 官方出品泛型教程:如何開始使用泛型Go泛型
- 【C#】-泛型C#泛型
- TypeScript 工具泛型TypeScript泛型
- C#泛型C#泛型
- C# 泛型C#泛型
- Java-泛型Java泛型
- spring泛型注入Spring泛型
- go泛型教程Go泛型
- python使用泛型Python泛型
- Java(7)泛型Java泛型
- 介面即泛型泛型
- TypeScript 泛型限定TypeScript泛型