2018年6月29日 星期五

[C#]泛型

int Min(int a,int b)
{
  if(a<b)
   return a;
  else
   return b;
}



int x=10,y=6;
int t = Min(x,y);

------------------------------------------------------------------
object Min(object a,object b)
{
   if(a<b) return a;
   else return b;
}

(<)運算  對於泛用的 object型別是無效的,須使用一個共通(或泛用的)介面來做到這一點。
IComparable Min(IComparable a,IComparable b)
{
  if(a.CompareTo(b)<0) return a;
   else return b;
}

!轉型問題


int x=10,y=6;
int t = (int)Min(x,y);

---------------------------------------------------------------------------------

//泛型(generics)
T Min<T>(T a,T b) where T: ICompareable<T>{
  if (a.CompareTo(b)<0) return a;
  else return b;
}


int a=5,b=6;
int r = Min<int>(a,b);

可以這樣寫,編譯器可以從參數推測出Min函式T型別的真正型別

int a=5,b=6;
int r = Min(a,b);

沒有留言:

張貼留言

讓ASP.NET網站在開發除錯時期擁有WEB.CONFIG文件轉換功能

ref: https://blog.kkbruce.net/2016/09/enabling-xml-document-transforms-for-all-asp-net-web-by-develop-time.html#.XoP1KGMzbRY