函數的參數不同叫多態,函數的參數類型可以不確定嗎?
函數的返回值只能是一個嗎?函數的返回值可以不確定嗎?
泛型是一種特殊的類型,它把指定類型的工作推遲到客戶端代碼聲明并實例化類或方法的時候進行。
下面是兩個經典示例:
?
1.輸入一個字符串,轉化為想要的類型。
利用泛型的特性,返回值可以是指定的類型。
2.比較兩個對象,返回值較大的一個。
using System;
using System.Collections.Generic;
using System.Text;
?
namespace FamilyManage
{
??? class CGeneric
??? {
??????? //數據轉換
??????? static public T Convert<T>(string s) where T : IConvertible
??????? {
??????????? return (T)System.Convert.ChangeType(s, typeof(T));
??????? }
??????? //取兩個數較大的一個
??????? static public T Max<T>(T first, T second) where T : IComparable<T>
??????? {
??????????? if (first.CompareTo(second) > 0)
??????????????? return first;
??????????? return second;
??????? }
??????? //使用
??????? static public void test()
??????? {?????????
??????????? int iMax = Max(123, 456);
??????????? double dMax = Max<double>(1.23, 4.56);//可以指定返回類型
??????
??????????? int iConvert = Convert<int>("123456");
??????????? float fConvert = Convert<float>("123.456");
?????????
??????????? System.Windows.Forms.MessageBox.Show(iMax + "|" + dMax + "|" + iConvert + "|" + fConvert);
??????? }
??? }
}
?
System.Convert.ChangeType(s, typeof(T));這個函數,在以往的項目中用的比較少,用的最多的還是Convert.ToInt()和Convert.ToDouble()。一般多是把一個字符串轉化需要的整型數據或者浮點型數據。例如:
string intString="123";int result=System.Convert.ToInt32(intString);Console.WriteLine(result); //輸出123
?
也有用Int類或者Double類的Parse或者TryParse函數進行轉化的,在此不在舉例。把注意力拉回到System.Convert.ChangeType(s, typeof(T));這個函數。
ChangeType:返回一個指定類型的對象,該對象的值等效于指定的對象。此方法有四種函數重載。如下面的表格所示:
?
double d = -2.345;int i = (int)Convert.ChangeType(d, typeof(int));Console.WriteLine("The double value {0} when converted to an int becomes {1}", d, i);string s = "12/12/98";DateTime dt = (DateTime)Convert.ChangeType(s, typeof(DateTime));Console.WriteLine("The string value {0} when converted to a Date becomes {1}", s, dt);
想要了解更多請參看MSDN的Convert類。
?