C# 泛型 基類約束
基類約束,要求型別引數只能是基類或者由基類派生的類。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace classConstraint
{
class PhoneNumber
{
string name;
string number;
public String Name
{
get { return name; }
set { name = value; }
}
public String Number
{
get { return number; }
set { number = value; }
}
public PhoneNumber(string name, string phoneNumber)
{
this.name = name;
this.number = phoneNumber;
}
}
class FriendNumber : PhoneNumber
{
bool isWorkNumber;
public bool IsWorkNumber
{
get { return isWorkNumber; }
set { isWorkNumber = value; }
}
public FriendNumber(string name, string number, bool isWorkNumber)
: base(name, number)
{
this.isWorkNumber = isWorkNumber;
}
}
class Supplier : PhoneNumber
{
public Supplier(string name, string number)
: base(name, number)
{ }
}
class others
{ }
class PhoneList<T> where T: PhoneNumber
{
T[] phList;
int end;
public PhoneList()
{
this.phList = new T[10];
end = 0;
}
public bool Add(T newNumber)
{
if (end == 10)
return false;
phList[end] = newNumber;
end++;
return true;
}
public void findByName(string name)
{
for (int i = 0; i < end; i++)
{
if (phList[i].Name == name)
{
Console.WriteLine("找到了,{0}的聯絡電話是{1}",name,phList[i].Number);
return;
}
}
Console.WriteLine("沒有找到!");
}
}
class Program
{
static void Main(string[] args)
{
PhoneList<FriendNumber> plist = new PhoneList<FriendNumber>();
plist.Add(new FriendNumber("zhangsan", "23",true));
plist.Add(new FriendNumber("lisi", "6691182", true));
plist.Add(new FriendNumber("wangwu", "23423", false));
plist.findByName("lisi");
Console.WriteLine("================");
PhoneList<Supplier> plist2 = new PhoneList<Supplier>();
plist2.Add(new Supplier("iphone", "123"));
plist2.Add(new Supplier("android", "123"));
plist2.findByName("windowsPhone");
PhoneList<PhoneNumber> plist3 = new PhoneList<PhoneNumber>();
// PhoneList<others> plist4 = new PhoneList<others>();
Console.ReadLine();
}
}
}
相關文章
- C#泛型約束C#泛型
- C# 泛型 介面約束C#泛型
- C# 泛型 引用型別約束 值型別約束C#泛型型別
- Go 泛型之泛型約束Go泛型
- C#中泛型約束(where)是什麼?C#泛型
- C# 泛型 new()建構函式約束C#泛型函式
- 泛型的約束理解泛型
- C#泛型類之LISTC#泛型
- c#中判斷類是否繼承於泛型基類C#繼承泛型
- Java泛型(三):型別擦除帶來的約束與侷限性Java泛型型別
- C#類繼承自泛型集合C#繼承泛型
- 16.Kotlin星投影與泛型約束詳解Kotlin泛型
- C#基礎:泛型委託C#泛型
- [譯]Kotlin泛型中何時該用型別形參約束?Kotlin泛型型別
- 泛型類和泛型方法泛型
- 泛型類、泛型方法及泛型應用泛型
- C# 泛型C#泛型
- C#泛型C#泛型
- 【C#】-泛型C#泛型
- TypeScript 泛型介面和泛型類TypeScript泛型
- 【.NET】利用 IL 魔法實現隨心隨意的泛型約束泛型
- Java泛型知識點:泛型類、泛型介面和泛型方法Java泛型
- C#基礎:泛型的理解和使用C#泛型
- 泛型類及系統中常用的泛型類泛型
- C# 泛型方法C#泛型
- hashtable 泛型 C#泛型C#
- c#泛型集合C#泛型
- 學員優秀博文賞析:泛型萬用字元及約束泛型字元
- JAVA泛型類Java泛型
- 泛型類派生子類泛型
- 淺談C#泛型C#泛型
- C#泛型學習C#泛型
- C# 泛型集合SortedListC#泛型
- c#泛型的使用C#泛型
- c#泛型續(一)C#泛型
- 泛型,內部類泛型
- PHP7型別約束PHP型別
- 【譯】在非泛型類中建立泛型方法泛型