Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
.netÖеķºÐÍÈ«Ãæ½âÎö
 
À´Ô´:À´×ÔÍøÂç ·¢²¼ÓÚ£º 2017-7-7
  1717  次浏览      27
 

´Ó2.0ÆðÎÒÃÇÒ»Ö±¾ÍÔÚ̸ÂÛ·ºÐÍ£¬ÄÇôʲôÊÇ·ºÐÍ£¬·ºÐÍÓÐʲôºÃ´¦£¬Óë·ºÐÍÏà¹ØµÄ¸ÅÄîÓÖ¸ÃÔõôʹÓ㬱ÈÈç·ºÐÍ·½·¨£¬·ºÐÍίÍС£ÕâһƪÎÒ»áÈ«ÃæµÄ½éÉÜ·ºÐÍ¡£

ÄÇôÊ×ÏÈÎÒÃDZØÐë¸ãÇå³þʲôÊÇ·ºÐÍ£¬·ºÐÍÆäʵҲÊÇÒ»ÖÖÀàÐÍ£¬¸úÎÒÃÇʹÓõÄint,stringÒ»Ñù¶¼ÊÇ.netµÄÀàÐÍ¡£·ºÐÍÆäʵ¾ÍÊÇÒ»¸öÄ£°åÀàÐÍ£¬ÍòÄÜÀàÐÍ¡£ËüÔÊÐíÎÒÃÇÔÚÉè¼ÆÀàµÄʱºòʹÓÃÒ»¸öÀàÐͿհס£Ô¤ÁôÒ»¸öÀàÐÍ¡£µÈµ½ÎÒÃÇʹÓÃÕâ¸öÀàµÄʱºò£¬ÎÒÃÇ¿ÉÒÔʹÓÃÌØ¶¨µÄÀàÐÍÀ´Ìæ»»µôÎÒÃÇÔ¤ÁôµÄÕâ¸öÀàÐÍ¡£Õâ¾ÍÊÇ·ºÐÍ¡£

ÄÇôÕâÑùʹÓõĺô¦ÓÐÊ²Ã´ÄØ£¿

1£¬ÀàÐͰ²È«ÐÔ

2£¬ÐÔÄÜÌá¸ß

3£¬´úÂëÖØÓÃ

4£¬À©Õ¹ÐÔ

Ϊʲô»áÓÐÕ⼸¸öºÃ´¦£¬ÎÒÃÇÀ´½âÎöһϡ£

ÔÚÎÒÃÇÌÖÂÛ·ºÐ͵ÄÓŵãµÄʱºò£¬ÏÈÀ´¿´¿´ÔõôʹÓ÷ºÐÍ£¬·ºÐÍÒ»°ãÓ뼯ºÏÒ»ÆðʹÓᣵ«ÊÇÎÒÃÇÒ²¿ÉÒÔ´´Ôì×Ô¼ºµÄ·ºÐÍÀà¡£ÕâÀïÎÒÃǶ¨ÒåÒ»¸öÀàPerson¡£Õâ¸öÀàÓÐ3¸ö±äÁ¿£¬ID,FirstName,LastName.FirstNameºÍLastNameµÄÀàÐͺÜÈ·¶¨¾ÍÊÇstring¡£¶øIDµÄÀàÐÍÎÒÃÇÈ´²»È·¶¨£¬ÕâÀïµÄ²»È·¶¨ÊÇΪÁ˸üºÃµÄÀ©Õ¹ÐÔ£¬¶ø²»ÊÇ˵²»ÄÜÈ·¶¨£¬±ÈÈçID¿ÉÒÔÊÇ´¿intµÄ¸ñʽ£¬±ÈÈç1,2.ͬʱҲ¿ÉÒÔÊÇstringµÄET001£¬ET002.µ±È»ÎÒÃÇ¿ÉÒÔͨ¹ýÆ´½Ó×Ö·û´®À´Íê³ÉÕâ¸öµÄ²Ù×÷£¬µ«ÊÇÈç¹ûÎÒÃÇʹÓ÷ºÐÍ£¬¾ÍÄÜʵÏֺܺõÄÀ©Õ¹ÐÔ£¬ÐÔÄÜ£¬°²È«ÐÔ¡£ÀàÈçÏÂÈçÏ¡£


public class Person<T>
{
private T _t;

public T T1
{
get { return _t; }
set { _t = value; }
}

private string _firstName;

public string FirstName
{
get { return _firstName; }
set { _firstName = value; }
}

private string _lastName;

public string LastName
{
get { return _lastName; }
set { _lastName = value; }
}

public Person() { }

public Person(T t1, string firstName, string lastName)
{
this._t = t1;
this._firstName = firstName;
this._lastName = lastName;
}
}

·ºÐÍÀàµÄ¶¨ÒåÊǺܼòµ¥µÄ<T>£¬ÕâÑù¾Í¿ÉÒÔ¶¨Òå·ºÐÍÀ࣬ÕâÀïÎÒÃÇʹÓÃÁË·ºÐÍT£¬Ô¤ÁôÁËÒ»¸öÀàÐÍ¡£·ºÐÍËùÄÜÀí½âµÄ²Ù×÷ÊÇ£º1ÕâÀïÊÇÒ»¸öÀàÐÍ£¬2Õâ¸öÉè¼ÆÊ±Î´Öª£¬3ÎÒÃÇ¿ÉÒÔÔÚÒÔºóÖ¸¶¨Êµ¼ÊÀàÐÍÀ´Ìæ»»Õâ¸öÀàÐÍ¡£ÆäʵÓеãÏñίÍС£Ö»²»¹ýίÍÐÔ¤ÁôµÄÊÇÒ»¸ö¾ßÓÐÌØ¶¨Ç©ÃûµÄ·½·¨³éÏó¡£¶ø·ºÐÍÔ¤ÁôµÄÊÇÒ»¸öÀàÐÍ¡£Õâ¾Í×ãÒÔ˵Ã÷ÃæÏò¶ÔÏóÆäʵ´ÓijÖֽǶÈÀ´Ëµ¾ÍÊÇÃæÏò³éÏó¶ø²»ÊÇÃæÏò¾ßÌåµÄʵÏÖ¡£

ÕâÀïÎÒÃǶ¨ÒåµÄ·ºÐÍÀàÐÍT£¬¾Í¿ÉÒÔÔÚºóÐøÊ¹ÓÃʱʹÓò»Í¬µÄÀàÐÍÀ´Ìæ»»¡£ÕâÀï¾Í¿ÉÒÔ×öµ½ÎÒÃÇÇ°ÃæÌáµ½µÄʹÓÃint£¬»òÕßstring£¬»òÕ߯äËûµÄÈκÎÎÒÃÇÏëÒªµÄÀàÐÍ£¬ÉõÖÁÊÇÎÒÃÇ×Ô¼º¶¨ÒåµÄÀàÐÍ¡£ÎÒÃÇÀ´¿´¿´µ÷ÓôúÂë¡£


Person<int> person = new Person<int>(1,

"Edrick", "Liu");
Person<string> personString = new Person

<string>("ET001", "Edrick", "Liu");

Console.WriteLine("INT:ID:{0},FirstName:{1},

LastName:{2}",person.T1,person.FirstName,

person.LastName);
Console.WriteLine("STRING:ID:{0},FirstName:

{1},LastName:{2}",personString.T1,personString.

FirstName,personString.LastName);

ÕâÀïÎÒÃDz»ÐèҪƴ½Ó×Ö·û´®£¬²»ÐèÒª×öÈκζîÍâµÄ²Ù×÷¾Í¿ÉÒÔʵÏÖ¡£

ÕâÀïÎÒÃÇ˵Ã÷ÁË´úÂëÖØÓÃÐÔ¡£

ÎÒÃÇ¿ÉÒÔÀ©Õ¹ÀàÐÍT£¬ÔÚÈκÎʱºò£¬Èç¹ûÐèÇó·¢ÉúÁ˱仯£¬ÓÖÒªÒÔ²»Í¬µÄ¸ñʽÀ´Êä³öID¡£ÎÒÃÇÉõÖÁ¿ÉÒÔÀ©Õ¹Ò»¸öIDÀࡣȻºóÓÃIDÀàÀ´Ìæ»»T¡£


public class MyID
{
private string _city;

public string City
{
get { return _city; }
set { _city = value; }
}

private string _school;

public string School
{
get { return _school; }
set { _school = value; }
}

private string _className;

public string ClassName
{
get { return _className; }
set { _className = value; }
}

private string _number;

public string Number
{
get { return _number; }
set { _number = value; }
}

public MyID() { }

public MyID(string city, string school,

string className, string number)
{
this._city = city;
this._school = school;
this._className = className;
this._number = number;
}
}

ÎÒÃÇÀ©Õ¹ÁËÒ»¸öIDÀ࣬ÓÃÕâ¸ö¸´ÔÓÀàÐÍÀ´ÓÃ×÷ÎÒÃǵÄID¡£ÕâÀïÎÒÃDz»ÐèÒª¸ü¸ÄPersonÀà¾Í¿ÉÒÔÖ±½ÓÀ©Õ¹IDÁË¡£ÒòΪTÊÇ¿ÉÒÔʹÓÃÈκÎÀàÐÍÀ´Ìæ»»µÄ¡£


MyID myId =new MyID("WuHan", "SanZhong", "YiBan", "0001");

Person<MyID> personID = new Person<MyID>(myId, "Edrick", "Liu");

Console.WriteLine("ID:{0},FirstName:{1},LastName:{2}",myId.City+

"-"+myId.School+"-"+myId.ClassName+"-"+myId.Number,personID.

FirstName,personID.LastName);

ÕâÑù¾ÍÀ©Õ¹ÁËPersonÀà¡£µ±È»ÎÒÃǵÄMyIDÀïÃæÒ²¿ÉÒÔʹÓ÷ºÐÍ£¬ÕâÀïΪÁËÀý×ӵļòµ¥ÐÔ£¬ÎÒÃǾÍʹÓÃÒ»´ÎÐÔÀ©Õ¹¡£

ÕâÀï˵Ã÷ÁËÀ©Õ¹ÐÔ

µ±È»ÓÐÈË»á˵£¬ÄãÕâÀï·ºÐÍ¿ÉÒÔ×öµ½µÄ£¬ÎÒÃÇÓÃobjectҲͬÑù¿ÉÒÔ×öµ½£¬Êǵģ¬ÕâÀï·ºÐÍ¿ÉÒÔ×öµ½µÄ£¬objectҲͬÑù¿ÉÒÔ×öµ½¡£µ«ÊÇÎÒÃÇÀ´¿´ÏÂÒ»¸öʵÀý¡£ÕâÀïÎÒÃÇʹÓÃArrayListÀ´×öÕâ¸öʾÀý¡£


ArrayList list = new ArrayList();
list.Add(1);
list.Add(2);
list.Add(3);

IEnumerator ie = list.GetEnumerator();

while (ie.MoveNext())
{
int i = (int)ie.Current;
Console.WriteLine(i);
}

ºÜ¼òµ¥µÄÒ»¸öʾÀý¡£Ê¾Àý»°Ò»¸öArrayList£¬È»ºóÌí¼Ó3¸öÊý×Ö¡£È»ºóö¾Ù¡£ÕâÀïÎÒΪʲôҪʹÓÃö¾Ù¶ø²»Ö±½ÓforeachÄØ£¬ÕâÑùÎÒÃǸüÄÜÖ±½Ó¿´Çå³þʹÓÃobjectµÄʱºòÀàÐÍÖ®¼äµÄת»»¡£Èç¹û²»Çå³þforeachΪʲô¿ÉÒÔÒÔÕâÑùµÄ´úÂëÌæ»»µÄ£¬¿ÉÒԲο¼Îҵĵü´úÆ÷Ò»ÎÄ¡£

ÎÒÃÇÀ´¿´Ò»·ùͼ¡£

Õâ¾ÍÊÇÎÒÃÇÍù¼¯ºÏÀïÃæÌí¼ÓÔªËØÊ±ºòµÄÌáʾ£¬ÎÒÃÇ¿ÉÒÔ¿´µ½ÀàÐÍÊÇobject¡£Èç¹ûÎÒÃÇÍùÀïÃæ¼ÓÈëintÐÍÔªËØ£¬ÄÇÃ´ÔªËØ×ÔÈ»»á±»×°Ïä¡£ÄÇôÔÚÎÒÃǵü´úµÄʱºòÄØ£¿ÉÏÃæµÄ´úÂëÏÔʾÁËÓÐÒ»¸öÇ¿ÖÆ×ª»»£¬¾ÍÊDzðÏäÁË¡£ËùÒÔÕâÀï½øÐÐÁËÒ»´Î×°ÏäºÍ²ðÏä¡£×°ÏäºÍ²ðÏäÊÇ»áÓÐÐÔÄÜËðʧµÄ£¬Ô°×ÓÀïÒ²ÓÐÅóÓÑ×ö¹ý²âÊÔ¡£http://archive.cnblogs.com/a/2213803/¾Í×öÁËÒ»¸ö²âÊÔ£¬´ó¼Ò¿ÉÒÔ¿´¿´¡£ÕâÀïÎÒÃÇÐèÒªÖªµÀµÄ¾ÍÊÇʹÓü¯ºÏʵ¼ÊÉÏÊÇ·¢ÉúÁË×°ÏäºÍ²ðÏä¡£ÄÇô»¹ÓÐÒ»¸öÎÊÌâÒ²¾Í³öÀ´ÁË£¬¼ÈÈ»ÕâÀïÎÒÃÇ¿ÉÒÔʹÓÃint£¬µ±È»Ò²¿ÉÒÔ¼ÓÈëstringÀàÐ͵ÄÔªËØ¡£ÒòΪËûÃǶ¼¿ÉÒԳɹ¦µÄת»»Îªobject£¬ÒòΪobjectÊÇ×îÖÕ¸¸Àà¡£ËùÒÔÒÔÏ´úÂëÒ²ÊÇ¿ÉÒÔͨ¹ý±àÒëµÄ¡£


ArrayList list = new ArrayList();
list.Add(1);
list.Add(2);
list.Add(3);
list.Add("e");

Õâ¶Î´úÂëºÁÎÞÒÉÎʵĿÉÒÔͨ¹ýÔËÐе쬵«ÊÇÎÒÃÇÔÚµü´úµÄʱºò¾Í»á³öÎÊÌâÁË¡£ºÜÃ÷ÏÔ(int)e.Õâ¸öÇ¿ÖÆ×ª»»ÊDz»Äܳɹ¦µÄ¡£±àÒëÆ÷ÆÚ¼äÎÞ´íÎó¶ø´íÎó·¢ÉúÔÚÔËÐÐÆÚ¡£Õâ¶ÔÎÒÃÇÀ´ËµÊDz»Ï£Íû¿´µ½µÄ£¬ÄÇô·ºÐ͵Ĵ¦Àí·½Ê½ÄØ£¿

ÕâÀïÎÒÃÇ¿ÉÒÔ¿´µ½£¬ÎÒÃÇʹÓõÄÊÇintÀàÐÍÌæ»»µÄÀàÐÍT£¬ËùÒÔÎÒÃÇÔÚaddµÄʱºò¾ÍÖ»ÄÜaddÌæ»»TµÄintÀàÐÍ£¬¶ø²»ÊÇÏë·Ç·ºÐ͵ÄÈκÎÀàÐͶ¼¿ÉÒÔadd¡£

ËùÒÔÕâÀï¼È˵Ã÷ÁËÐÔÄܺͰ²È«ÐÔ

ÕâÀïÓÐÒ»¸öÎÊÌâÐèҪעÒâÒÔÏ£¬ÎÒÃÇÔÚÉùÃ÷·ºÐÍTµÄʱºò£¬²¢²»ÊÇÒ»¶¨ÀàÐÍÃûÊÇT£¬TÊÇÔÚÒ»¸öÀàÐ͵Äʱºò£¬Èç¹ûÎÒÃÇÐèҪʹÓöà¸ö·ºÐÍÀ´ÊµÀý»¯Ò»¸öÀàÐÍ£¬ÄÇôÎÒÃǾÍÐèҪʹÓÃ˵Ã÷ÐÔµÄÃû³Æ£¬±ÈÈçTId£¬TFirstNameÖ®ÀàµÄ¡£


public class PerosnMoreTypeOfT<TId,TFirstName,TLastName>
{
private TId _id;

public TId Id
{
get { return _id; }
set { _id = value; }
}

private TFirstName _firstName;

public TFirstName FirstName
{
get { return _firstName; }
set { _firstName = value; }
}

private TLastName _lastName;

public TLastName LastName
{
get { return _lastName; }
set { _lastName = value; }
}

public PerosnMoreTypeOfT() { }

public PerosnMoreTypeOfT(TId tId, TFirstName

tFirstName, TLastName tLastName)
{
this._id = tId;
this._firstName = tFirstName;
this._lastName = tLastName;
}
}
¡¡¡¡µ÷ÓôúÂë

PerosnMoreTypeOfT<int, string, string> person

= new PerosnMoreTypeOfT<int, string, string>

(1, "Edrick", "Liu");
Console.WriteLine("ID:{0},FirstName:{1},LastName:

{2}",person.Id,person.FirstName,person.LastName);

 

ÕâÊÇÐèҪעÒâһϵġ£

·ºÐÍÀàÐ͵ÄÔ¼Êø

ËùνµÄ·ºÐÍÀàÐÍÔ¼Êø£¬Êµ¼ÊÉϾÍÊÇÔ¼ÊøµÄÀàÐÍT¡£Ê¹T±ØÐë×ñÑ­Ò»¶¨µÄ¹æÔò¡£±ÈÈçT±ØÐë¼Ì³Ð×Ôij¸öÀ࣬»òÕßT±ØÐëʵÏÖij¸ö½Ó¿ÚµÈµÈ¡£ÄÇôÔõô¸ø·ºÐÍÖ¸¶¨Ô¼Êø£¿ÆäʵҲºÜ¼òµ¥£¬Ö»ÐèÒªwhere¹Ø¼ü×Ö¡£¼ÓÉÏÔ¼ÊøµÄÌõ¼þ¡£

Ô¼ÊøÌõ¼þÓÐÒÔÏÂ

where T : struct -ÀàÐÍT±ØÐëÊÇÖµÀàÐÍ

where T : class -ÀàÐÍT±ØÐëÊÇÒýÓÃÀàÐÍ

where T : Ifoo -ÀàÐÍT±ØÐëÖ´ÐнӿÚIfoo

where T : foo -ÀàÐÍT±ØÐë¼Ì³Ð×Ô foo

where T : new() -ÀàÐÍT±ØÐëÓÐÒ»¸öĬÈϹ¹Ô캯Êý

where T : U -Ö¸¶¨·ºÐÍÀàÐÍT1ÅÉÉúÓÚT2¡£

ÏÂÃæÎÒ»á½âÊÍÿ¸öÔ¼Êø¸ÃÔõôÓã¬Ê¹ÓÃÔ¼Êø²»µ¥µ¥¿ÉÒÔÏÞÖÆT£¬¶øÇÒ»¹¿ÉÒÔʹT¾ßÓÐÀàÐÍ¿ÉÓÃÐÔ£¬ÉÏÃæÎÒÃǽéÉÜÁË£¬ÎÒÃÇÖ»ÓÐÔÚʵÀý»¯µÄʱºò²ÅÌæ»»·ºÐÍÀàÐÍ£¬ËùÒÔÎÒÃdzýÁËÄܰѷºÐÍת»»ÎªobjectÍ⣬»ù±¾ÉÏÔÚ¶¨ÒåµÄʱºò²»ÄÜÓëÆäËûÀàÐÍ×öÈκν»»¥£¬Èç¹ûÕâÀïÎÒÔ¼Êø·ºÐÍTʵÏÖÁ˽ӿÚIFoo£¬ÄÇôÎÒÃǾͿÉÒÔ°Ñ·ºÐÍת»»ÎªIFoo£¬´Ó¶øÊ¹ÓÃIfooÀﶨÒåµÄ·½·¨¡£ÕâÑù¾ÍʹÀàÐÍÔÚ¶¨ÒåµÄʱºò¾Í¿ÉÒÔʹÓ㬶ø²»ÐèÒªµÈµ½ÊµÀý»¯¡£

¶øÖ¸¶¨TµÄÀàÐÍÊǷdz£¼òµ¥µÄ¡£

¡¡ public class Person<T>where T:struct

Õâʱ£¬Èç¹ûÎÒÃÇʹÓÃÒýÓÃÀàÐÍÌæ»»T¾Í»á

±àÒë³ö´í¡£ÎÒÃÇÒ²¿ÉÒÔÔ¼ÊøTΪÒýÓÃÀàÐÍ£¬ÕâÀïдһ¸öÀý×Ó£¬ÔõÃ´Ê¹Ô¼ÊøÎª½Ó¿ÚºÍ»ùÀàÐÍ£¬È»ºóʹÓÃÕâЩÀàÐÍ¡£


public interface IPerson
{
void DisplayPerosnWithOutId();

void DisplayPerosnWithId();
}
¡¡¡¡¶¨Òå½Ó¿Ú¡£

public class Person<T>:IPerson where T:MyID
{
private T _t;

public T T1
{
get { return _t; }
set { _t = value; }
}

private string _firstName;

public string FirstName
{
get { return _firstName; }
set { _firstName = value; }
}

private string _lastName;

public string LastName
{
get { return _lastName; }
set { _lastName = value; }
}

public Person() { }

public Person(T t1, string firstName,

string lastName)
{
this._t = t1;
this._firstName = firstName;
this._lastName = lastName;
}

public void DisplayPerosnWithOutId()
{
Console.WriteLine("FirstName:{0},LastName

:{1}",FirstName,LastName);
}

public void DisplayPerosnWithId()
{
MyID myId = T1;
Console.WriteLine("ID:{0},FirstName:{1}

,LastName:{2}", myId.City + "-" + myId.

School + "-" + myId.ClassName + "-" +

myId.Number, FirstName, LastName);
}
}

ÕâÀïÈÃÎÒÃǵÄPerosnʵÏÖÕâ¸ö½Ó¿Ú£¬È»ºóÎÒÃǵÄPerosnÀïÃæµÄ·ºÐÍT±ØÐëÊǼ̳Ð×ÔMyIdµÄ¡£×¢Ò⣬ÕâÀïÔ¼ÊøµÄÊÇÎÒÃǵÄPersonµÄT


public class DisPerson<T>where T:IPerson
{
private T t { get; set; }

public DisPerson() { }

public DisPerson(T t1)
{
this.t = t1;
}

public void dis()
{
IPerson p = (IPerson)t;
p.DisplayPerosnWithId();
p.DisplayPerosnWithOutId();
}
}

ÕâÀï¾ÍÊÇÎÒÃǵķºÐÍÀ࣬Õâ¸öÀàµÄÔ¼ÊøÊÇT±ØÐëʵÏÖIPerson¡£ËùÒÔT¾Í¿ÉÒÔ¸úIPersonʵÏÖת»»£¬´Ó¶øµ÷ÓÃIPerosnÀïµ÷Óõķ½·¨¡£


MyID myId = new MyID("WuHan", "SanZhong",

"YiBan", "0001");

Person<MyID> perosn = new Person<MyID>

(myId,"Edrick","Liu");

DisPerson<Person<MyID>> dis = new DisPerson<Person<MyID>>(perosn);

dis.dis();

ÕâÀïʹÓõ½ÁË2ÖÖÔ¼Êø£¬¶øÖµÀàÐÍÔ¼Êø¸úÒýÓÃÀàÐÍÔ¼ÊøÊǺܼòµ¥µÄ£¬ÎÒÃÇÖ»ÐèÒªwhereһϡ£ÏÂÃæÀ´¿´¿´UÔ¼Êø¡£´úÂëºÜ¼òµ¥


public class ClassA
{
}


public class ClassB:ClassA
{
}


public class ClassC<TClassA,TClassB>

where TClassB:TClassA
{
}

ÕâÀïClassB±ØÐëÊǼ̳ÐÊÇClassA¡£


ClassA a = new ClassA();
ClassB b = new ClassB();
ClassC<ClassA, ClassB> c = new Class

C<ClassA, ClassB>();

Èç¹ûÕâÀïÎÒÃǵÄClassB²»¼Ì³Ð×ÔClassA£¬ÄÇô±àÒ뽫²»ÄÜͨ¹ý¡£

Default¹Ø¼ü×Ö

default¹Ø¼ü×ÖÆäʵ²»ÐèÒª½âÊÍÌ«¶à£¬ÕâÀïÖ»½âÊÍÒ»ÏÂÔ­Àí¾ÍÐÐÁË¡£ÎÒÃÇÇ°ÃæÌáµ½£¬·ºÐÍÖ»ÊÇÒ»¸öÄ£°åÀàÐÍ£¬¾ÍÊÇÎÒÃÇÔÚ¶¨ÒåµÄʱºò¸ù±¾¾Í²»¿ÉÄÜÖªµÀÓû§ÔÚʵÀý»¯µÄʱºò»áÒÔºÎÖÖÀàÐÍÀ´Ìæ»»¡£ÓпÉÒÔÊÇÖµÀàÐÍ£¬Ò²ÓпÉÄÜÊÇÒýÓÃÀàÐÍ¡£ÖµÀàÐÍÊDz»Äܸ³ÖµÎªnullµÄ¡£ËùÒÔ·ºÐÍÀàÐͲ»Äܸ³ÖµÎªnull£¬µ«ÊÇÕâÀïÈÔÈ»ÓÐ50%µÄ¼¸ÂÊÊÇÒýÓÃÀàÐÍ£¬ÎÒÃÇ»¹ÊÇÐèÒª50%µÄ»ú»áÐèÒª·ºÐÍTΪnull¡£Õâʱ¾ÍÐèÒªdefault¹Ø¼ü×Ö¡£

¡¡private T t =default(T);

ÕâÀï¾Í¿ÉÒÔ±ÜÃâÎÒÃÇÉÏÃæËù˵µÄÎÊÌ⣬ÕâÀï»áÓÐÁ½ÖÖÇé¿ö¡£Ò»ÖÖÊÇÈç¹ûTΪֵÀàÐÍ£¬Ôò¸³Öµ0£¬Èç¹ûTΪÒýÓÃÀàÐÍÔò¸³ÖµÎªnull¡£


StaticGeneric<int>.x = 5;
StaticGeneric<int>.x = 7;
StaticGeneric<string>.x = 6;

Console.WriteLine(StaticGeneric<int>.x);
Console.WriteLine(StaticGeneric<string>.x);

·ºÐÍÀàµÄ¾²Ì¬³ÉÔ±

·ºÐÍÀàµÄ¾²Ì¬³ÉÔ±¸úÎÒÃÇÆ½Ê±´¦Àí¾²Ì¬³ÉÔ±ÓÐЩÐí²»Í¬¡£Ò»¶Î´úÂë¾Í¿ÉÒÔ½âÊÍÇå³þ¡£



StaticGeneric<int>.x = 5;
StaticGeneric<int>.x = 7;
StaticGeneric<string>.x = 6;


Console.WriteLine(StaticGeneric<int>.x);
Console.WriteLine(StaticGeneric<string>.x);

Êä³öµÄÊÇ7ºÍ6.ʹÓò»Í¬µÄÀàÐÍÌæ»»·ºÐ͵õ½µÄÊDz»Í¬µÄÀàʵÀý¡£

·ºÐͼ̳кͷºÐͽӿÚ

ÏÖÔÚÎÒÃÇÀ´¿´¿´·ºÐ͵ļ̳кͷºÐͽӿڡ£ÎÒÃÇÏÈÀ´¿´¿´·ºÐͼ̳С£

Àà¿ÉÒԼ̳Ð×Ô·ºÐÍ»ùÀ࣬·ºÐÍÀàÒ²¿ÉÒԼ̳Ð×Ô·ºÐÍ»ùÀà¡£ÓÐÒ»¸öÏÞÖÆ£¬Ôڼ̳еÄʱºò£¬±ØÐëÏÔʾָ¶¨»ùÀàµÄ·ºÐÍÀàÐÍ¡£ÎÒÃÇÀ´¿´¿´Ê¾Àý


public abstract class Base<T>where T:struct
{
private int _id;

public int Id
{
get { return _id; }
set { _id = value; }
}

public abstract T Add(T x, T y);

}

Ò»¸ö³éÏóÀ࣬¶¨ÒåÁËÒ»¸öIDÊôÐÔ£¬¶¨ÒåÁËÒ»¸ö³éÏó·½·¨¡£ÏÂÃæÊǼ̳ÐÀà


public class SonClass<T>:Base<int>
{
private T _t;

public T T1
{
get { return _t; }
set { _t=value;}
}

public SonClass() { }

public SonClass(T t,int id)
{
this._t = t;
base.Id = id;
}

public override int Add(int x, int y)
{
return x + y;
}

public void Prit()
{
Console.WriteLine(T1);
}
}

ʵÏÖÁË»ùÀàÀïÃæµÄ³éÏó·½·¨£¬±¾ÉíʵÏÖÁËÒ»¸ö·½·¨£¬ÕâÀïµÄT¸úÎÒÃǵĻùÀàµÄ·ºÐÍÀàÐÍûÓÐÈκιØÏµ¡£µ÷ÓôúÂë


SonClass<string> son = new SonClass

<string>("EdrickLiu",10);
Console.WriteLine(son.Id);
Console.WriteLine(son.Add(3,5));
son.Prit();

Æäʵ¸úÎÒÃǵķǷºÐͼ̳ÐûÓжàÉÙÌ«´óµÄÇø±ð¡£ÄÇô£¬·ºÐͽӿÚÄØ£¿ÆäʵҲºÜ¼òµ¥¡£ÎÒÃǶ¨ÒåÒ»¸ö½Ó¿ÚICompare<T>½Ó¿Ú£¬Õâ¸ö½Ó¿ÚºÜ¼òµ¥£¬°´Öµ±È½Ï¶ÔÏ󡣯äʵ¸ú¼Ì³Ð´óͬСÒì


public interface ICompare<T> where T:class
{
bool CompareTo(T one,T other);
}

Õâ¸ö½Ó¿ÚºÜ¼òµ¥£¬¶¨ÒåÁËÒ»¸ö·½·¨£¬±È½ÏÁ½¸ö¶ÔÏó£¬È»ºóÎÒÃÇʵÏÖÕâ¸ö½Ó¿Ú


public class CompareClass:ICompare<MyID>
{
public bool CompareTo(MyID one, MyID other)
{
if (one != null && other != null)
{
if (one.City == other.City && one.

School == other.School & one.ClassName

== other.ClassName && one.Number == other.Number)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
}

ÕâÀï¸ú¼Ì³ÐÒ»Ñù£¬ÊµÏÖ½Ó¿ÚµÄʱºòÐèÒªÖÆ¶¨·ºÐÍÀàÐÍ¡£È»ºóÎÒÃǾͿÉÒÔµ÷ÓÃÁË


MyID id = new MyID("Wuhan", "Shanzhong",

"YiBan", "ET001");
MyID myid = new MyID("Wuhan", "Shanzhong",

"YiBan", "ET002");

ICompare<MyID> compare = new CompareClass();
Console.WriteLine(compare.CompareTo(id, myid));

ÆäʵÓÐÁËÕâ¸ö·½·¨£¬ÎÒÃǾͿÉÒÔ²»ÐèÒªÖØÔØÔËËã·û»òÕßÖØÔØEqualsÁË¡£ÏÂÃæÎÒÃÇÀ´¿´¿´·ºÐÍ·ºÐÍ·½·¨ºÍ·ºÐÍίÍУ¬µ±³õÔÚдίÍеÄʱºòÎÒÔÚ¿¼ÂÇ·ºÐÍίÍÐÒª·ÅÔÚʲôµØ·½Ð´£¬×îºó»¹ÊÇ·ÅÔÚÕâÀïÁË¡£

·ºÐÍ·½·¨&·ºÐÍίÍÐ

·ºÐÍ·½·¨Æäʵ¸ú·ºÐÍÀà²î²»¶à£¬·½·¨ÔÚ¶¨ÒåµÄʱºòʹÓ÷ºÐÍÀàÐͶ¨Òå²ÎÊý¡£µ÷ÓõÄʱºòʹÓÃʵ¼ÊÀàÐÍÌæ»»¡£ÕâÑù¾Í¿ÉÒÔʹÓò»Í¬µÄÀàÐÍÀ´µ÷Ó÷½·¨£¬ÎÒÃÇÏÈÀ´¿´Ò»¸ö¼òµ¥µÄ£¬½»»»Á½¸öÊý¡£¿ÉÒÔÊÇintÒ²¿ÉÒÔÊÇdouble£¬»òÕß±ðµÄÀàÐÍ¡£


public static void Swap<T>(ref T x,ref T y)
{
T temp;
temp = x;
x = y;
y = temp;
}

ÕâÀïʹÓÃintÊÇÒòΪÎÒÃÇÒª¸Ä±äx£¬yµÄÖµ£¬x£¬y¶¼ÊÇÖµÀàÐÍ£¬ËùÒÔÒªµ÷ÓÃref¡£µ÷ÓôúÂë¾ÍºÜ¼òµ¥ÁË


int x = 8;
int y = 9;

GenericMethod.Swap<int>(ref x,ref y);

Console.WriteLine("X:{0},Y:{1}",x,y);

ÎÒÃÇÕâÀïÒ²¿ÉÒÔÊ¡ÂÔ<int>£¬Ð´³ÉGenericMethod.Swap(ref x,ref y);±àÒëÆ÷»á×Ô¼ºÅжϡ£ÕâÖ»ÊÇÒ»¸öºÜ¼òµ¥µÄ·½·¨£¬Ç°ÃæÎÒÃÇ˵¹ý·ºÐÍÓ뼯ºÏÒ»ÆðʹÓûáºÜÇ¿´ó£¬ÎÒÃÇÀ´¿´Ò»¸ö·ºÐÍ·½·¨Ó뼯ºÏÒ»ÆðʹÓõÄÀý×Ó¡£ÎÒÃÇÓÐÒ»¸öʵÌåÀàPerson£¬ËüÓÐ3¸ö×ֶΣ¬ID£¬Name£¬Salary.ÎÒÃÇҪʵÏֵŦÄܾÍÊÇ×Ô¶¯¼ÆËã×ܵÄнˮ¡£Ê×Ïȶ¨ÒåʵÌå¡£


public class SalaryPerson
{
private int _id;

public int Id
{
get { return _id; }
set { _id = value; }
}

private string _name;

public string Name
{
get { return _name; }
set { _name = value; }
}

private decimal _salary;

public decimal Salary
{
get { return _salary; }
set { _salary = value; }
}

public SalaryPerson() { }

public SalaryPerson(int id, string name,

decimal salry)
{
this._id = id;
this._name = name;
this._salary = salry;
}
}

È»ºóÔÙÎÒÃǸոյķºÐÍ·½·¨ÀàÀï¼ÓÈë·½·¨


public static decimal AddSalary

(IEnumerable e)
{
decimal total = 0;

foreach (SalaryPerson p in e)
{
total += p.Salary;
}
return total;
}

ÕâÀï¾ÍÓÐÒ»¸öÎÊÌâÁË£¬ÎÒÃÇÖ»ÄÜSalaryPersonÀàÐÍÁË£¬ÄÇôÕâÀïÎÒÃǾͿÉÒÔÒýÈë·ºÐÍÁË£¬·ºÐ͵Ä×÷ÓþÍÊÇÔÚÎÒÃDz»È·¶¨ÀàÐ͵Äʱºò×öÒ»¸öÌæ»»ÀàÐÍ£¬ËùÒÔÎÒÃÇÕâÀï¾Í¿ÉÒÔʹÓ÷ºÐÍÁË¡£¸ü¸Ä¹ýºóµÄ·½·¨ÊÇ


public static decimal AddSalary<T>

(IEnumerable<T> e) where T:SalaryPerson
{
decimal total = 0;

foreach (T t in e)
{
total += t.Salary;
}
return total;
}

ÎÒÃÇÔÚÇ°ÃæËµµ½ÁË£¬Èç¹ûÒªÔÚ¶¨ÒåTµÄʱºòʹÓÃT£¬¾ÍÓ¦¸ÃʹËü¼Ì³ÐÓÚ»òÕßÊÇijÀ࣬»òÕßʵÏÖij¸ö½Ó¿Ú¡£µ«ÊÇÎÒÃÇÕâÀﻹÊÇÖ»ÄܼÆËãSalaryPerson»òÕßÅÉÉúÓÚSalaryPersonµÄÀ࣬ÎÒÃÇÄܲ»ÄܼÆËã±ðµÄÀ࣬¼ÆËãµÄÂß¼­ÓÉÎÒÃǶ¨ÒåÄØ£¿µ±È»¿ÉÒÔ£¬¾ÍÊÇ·ºÐÍίÍС£

·ºÐÍίÍÐ

ÎÒÏëÏêϸµÄ½²½²·ºÐÍίÍУ¬ÒòΪÎÒ¾õµÃ×Ô´Ó3.0Ö®ºó·ºÐÍίÍÐÊÇÓõÃÔ½À´Ô½¶à£¬·ºÐÍίÍÐÓëlamdaÒ²ÊÇÔ½ÓÃÔ½¶à£¬lamda±í´ïʽÎÒÔÚίÍÐÒ»ÎÄÖн²µ½ÁË¡£Î¯ÍеĸÅÄîÎÒÒ²½²ÁË£¬ËùÒÔÕâÀïÎÒ²»¹ý¶àµÄ½²ÊöʲôÊÇίÍС£Î¯ÍÐÊÇ¿ÉÒÔÒýÓ÷½·¨µÄ£¬Ö»Òª·½·¨Ç©Ãû·ûºÏ£¬±ÈÈçÒ»¸öºÜ¼òµ¥µÄ·½·¨Ç©Ãûpublic int Add(int x,int y).ÕâÀïÎÒÃÇÐèҪעÒâÁ½µã¡£Ò»µãÊÇ·µ»ØÀàÐÍ£¬Ò»µãÊDzÎÊý¡£Èç¹ûÎÒÃÇÐèÒª¶¨ÒåµÄÖ»ÊÇÒ»¸ö¹¦ÄÜ£¬µ«Êǹ¦ÄܵÄʵÏÖÒªµ½¾ßÌåµÄµØ·½²ÅÄÜÈ·¶¨£¬ÎÒÃǾͿÉÒÔʹÓÃίÍУ¬µ«ÊÇʹÓÃίÍÐÎÒÃǵķ½·¨·µ»ØÖµºÍ²ÎÊýÀàÐ;ÍÈ·¶¨ÁË£¬ÎÒÃÇ¿ÉÒÔÈÃίÍоßÓиü¸ßµÈ¼¶µÄ³éÏ󣬷µ»ØÖµ£¬²ÎÊýÀàÐͶ¼µ½¾ßÌåµÄµØ·½Öƶ¨¡£ÕâÀïµÄ¾ßÌ嵨·½¾ÍÊÇÎÒÃÇҪʵÏֵķ½·¨¡£ÕâÑù£¬ÎÒÃǵÄίÍо;ßÓиü¸ß¼¶±ðµÄ³éÏó¡£ÎÒÃÇÉè¼ÆµÄÀà¾Í¾ßÓиü¸ß¼¶±ðµÄ¿ÉÒÔÓÃÐÔ£¬ÎÒÃÇÖ»ÐèҪʵÏÖ·½·¨µÄϸ½Ú¾Í¿ÉÒÔÁË¡£·½·¨µÄϸ½ÚÔõôʵÏÖ£¬¿ÉÒÔʹÓÃÄäÃû·½·¨£¬»òÕßlamda±í´ïʽ¡£ÏÂÃæÎÒÃÇÀ´¿´¿´ÔÚ¾ßÌåµÄ´úÂëÖÐÎÒÃǸÃÔõôʵÏÖ¡£¼ÌÐøÎÒÃÇÉÏÃæµÄÄǸöÀý×Ó¡£Ê×Ïȶ¨ÒåÒ»¸öÀà GenericInFramerwork


public delegate TResult Action<TInput,

TResult>(TInput input,TResult result);

public static TResult GetSalary<TInput, TResult>(IEnumerable<TInput> e, Action

<TInput, TResult> action)
{
TResult result =default(TResult);

foreach (TInput t in e)
{
result = action(t,result);
}
return result;
}
}

Õâ¸öÀàÀïÃæ¶¨ÒåÁËÒ»¸ö·ºÐÍίÍУ¬Î¯Íж¨ÁËÁ½¸ö²ÎÊý£¬Ò»¸öÊÇ·µ»ØÀàÐÍ£¬Ò»¸ö²Ù×÷ÀàÐÍ¡£ÕâÀï½âÊÍһϲÎÊýΪʲôҪ¼ÓÉÏ·µ»ØÀàÐÍ£¬ÒòΪÎÒÃDz»ÄÜÓÃÒ»°ãµÄËãÊõÔËËã·ûÀ´²Ù×÷·ºÐÍÀàÐÍ£¬+=ÊDz»ÔÊÐíµÄ£¬ËùÒÔÕâÀïÖ»ÄÜʹÓÃresult=action(t,result)ÄÇôÎÒÃǾÍÐèÒªÒ»¸ö·µ»ØÖµÀ´±£³Ö´«µÝÎÒÃÇµÄ result.µ÷ÓôúÂë


List<SalaryPerson> list = new List

<SalaryPerson>();
list.Add(new SalaryPerson(1,"Edrick",5000));
list.Add(new SalaryPerson(1,"Meci",3000));
list.Add(new SalaryPerson(1,"Jun",1000));

GenericAndDelegate.Action<SalaryPerson,

Decimal> a = new GenericAndDelegate.Action

<SalaryPerson,

Decimal>(GetS);
decimal d = GenericAndDelegate.GetSalary

<SalaryPerson, Decimal>(list, a);
Console.WriteLine(d);
Console.Read();
}
public static decimal GetS(SalaryPerson

p,decimal d)
{
d += p.Salary;
return d;
}

Ê×ÏÈʵÀý»¯Î¯ÍУ¬È»ºóµ÷ÓÃÎÒÃǵķºÐÍ·½·¨¡£ÕâÀï¾ÍÊÇΪʲô²ÎÊýÒª¶¨Òå·µ»ØÀàÐÍ£¬ÕâÀïÈç¹ûÎÒÃÇÈ¥µô²ÎÊý£¬¶øÔÚGetS·½·¨ÀﶨÒåÒ»¸ö¾Ö²¿±äÁ¿£¬ÄÇô½á¹ûÊÇÎÒÃÇÖ»Äܵõ½×îºóÒâÏîµÄ½á¹û¡£Ïà±ÈÉÏÃæµÄÒ»¸öÀý×Ó£¬ÕâÀïµÄнˮµÄ¼ÆËãÂß¼­ÍêÈ«¾ÍÊǿɱäµÄ£¬ÎÒÃÇ¿ÉÒÔÔÚµ÷ÓÃίÍеÄʱºò±ä»¯ÎÒÃǵÄÂß¼­£¬±ÈÈçËùÓеļÓÉÏ200È»ºó´æ½øÊý¾Ý¿â£¬±ÈÈç¼ÓÉÏËùÓÐ*10.ÎҼǵÃ֮ǰÓÐÈË̸¹ýÒ»¸öÎÊÌ⣬¾ÍÊÇίÍеı仯¹ý³Ì£¬ÎÒÃÇÕâÀïʹÓõÄÊÇ×îԭʼµÄίÍеÄʵÀý»¯£¬ÏÂÃæÎÒ¾ÍÀ´¸ÅÀ¨Ò»ÏÂίÍеÄʵÀý»¯µÄ·¢Õ¹¡£ÉÏÃæ×îԭʼÎÒµÄÎҾͲ»½éÉÜÁË¡£»¹ÓÐ


GenericAndDelegate.Action<SalaryPerson,Decimal> a = GetS;

ÕâÀï¾ÍÊÇÖ±½Ó°Ñ·½·¨Ãû³Æ¸³¸øÎ¯ÍУ¬ÕâÊǵڶþ½×¶Î¡£ÎÒÃÇ¿ÉÒÔ¿ÉÒÔ²»ÊµÀý»¯Î¯ÍУ¬Ö±½Ó°Ñ·½·¨Ãûµ±×ö²ÎÊý´«µÝ¸ø·½·¨¡£


decimal d = GenericAndDelegate.GetSalary<SalaryPerson, Decimal>(list, GetS);

ÔÙÍùºóÄØ£¬ÎÒÃÇ¿ÉÒÔʹÓÃÄäÃû·½·¨


GenericAndDelegate.Action<SalaryPerson,

Decimal> a = delegate(SalaryPerson p,

decimal d1) { d1 += p.Salary; return d1; };
decimal d = GenericAndDelegate.GetSalary

<SalaryPerson, Decimal>(list, a);

ÏÖÔÚÄØ£¿ÎÒÃǾͿÉÒÔʹÓÃlamda±í´ïʽÁË¡£


decimal d = GenericAndDelegate.GetSalary

<SalaryPerson, Decimal>(list, (p,dl)=>dl+

=p.Salary);

ÕâÀïµÄp£¬dlÎÒÃÇÊ¡ÂÔÁËÀàÐÍ£¬µ«ÊDZàÒëÆ÷»á°ïÎÒÃÇÍÆ¶Ï£¬µ±È»£¬Äã¼ÓÉÏÒ²ÊÇûÓÐÎÊÌâµÄ


decimal d = GenericAndDelegate.GetSalary

<SalaryPerson, Decimal>(list, (SalaryPerson

p,decimal dl)=>dl+=p.Salary);

ÎÒÃÇÕâÀïÒ²¿ÉÒÔ¼ÓÉÏÎÒÃDz»Í¬µÄÂß¼­¡£ÕâÀïÎÒÃǾͲ»µ¥µ¥ÊÇÖ»ÄܶÔSalaryPerson×ö²Ù×÷ÁË£¬»¹ÄܶԱðµÄ¶ÔÏó×ö²Ù×÷¡£


decimal d = GenericAndDelegate.GetSalary

SalaryPerson, Decimal>(list, (SalaryPerson

p,decimal dl)=>dl+=p.Salary/10);

ÕâÀïµÄ·ºÐÍίÍÐÊÇÎÒÃÇ×Ô¼ºµÄÀý×Ó£¬ÉÏÃæÒ²ËµÁË£¬·ºÐÍίÍÐÔÚÎÒÃǵÄ.netframerworkÖеÄÓ¦ÓÃÒ²ºÜ¹ã·º£¬ÎÒÃǾÙÁ½¸öÀý×Ó£¬Ò»¸öÊÇÔÚÊý×éÖУ¬Ò»¸öÊÇÔÚlinqÖУ¬ÕâÀï²»½éÉÜ Linq£¬ÎÒÖ»ÊǾÙÀý˵Ã÷¡£


int[] ints = { 2,4,6,5,8,9,10};
Array.Sort<int>(ints, (i, j) => i.CompareTo(j));

Array.ForEach(ints, i => Console.WriteLine(i*2));

var query = ints.Where(i => i > 2);

foreach (int i in query)
{
Console.WriteLine(i);
}

Console.Read();

ÎÒÃÇÖ»ÐèÒªÕÒµ½¶ÔÓ¦µÄίÍУ¬È»ºó±àдlamda¾Í¿ÉÒÔÁË¡£

·ºÐÍÀàÐ͵ÄʵÀý»¯¹æÂÉ

ÕâÒ»½ÚÖ÷ÒªÊÇÒªÎÒÃÇÁ˽âһϷºÐÍÔÚʵÀý»¯Ê±ºòµÄ¹æÂÉ¡£ÎÒÃÇ¿ÉÒÔÓÃÖµÀàÐÍ»òÕßÒýÓÃÀàÐÍʵÀý»¯·¶Î§£¬ÓÃÖµÀàÐͺÍÒýÓÃÀàÐÍÓÐÊ²Ã´Çø±ðÄØ£¿ÎÒÃÇʹÓÃÖµÀàÐÍʵÀý»¯·ºÐÍ£¬Ã¿´ÎʵÀý»¯¶¼»á´´Ô첻ͬµÄʵÀý£¬µ«ÊÇÈç¹ûʵÀý»¯µÄÀàÐͲ»Í¬£¨¶¼ÊÇÖµÀàÐÍ£©£¬ÄÇô¾Í»á´´Ô첻ͬµÄ°æ±¾£¬²»Í¬µÄʵÀý£¬ÒýÓÃÀàÐÍÔò²»Í¬£¬ÒýÓÃÀàÐÍ»áһֱʹÓõÚÒ»´ÎʵÀý»¯·ºÐÍʱºòµÄ°æ±¾¡£ÒòΪֵÀàÐÍÐèÒª¸´ÖÆÊý¾Ý£¬Êý¾ÝµÄ´óСÊDz»Í¬µÄ£¬ËùÒÔÓв»Í¬µÄ°æ±¾£¬¶øÒýÓÃÀàÐÍÖ»ÐèÒª´«µÝÒýÓã¬ËùÒÔ¿ÉÒÔʹÓÃͬһ¸ö°æ±¾¡£

List<int>ºÍList<int>»áÊÇͬ¸ö°æ±¾²»Í¬ÊµÀý£¬µ«ÊÇËûÃǹ²Ïílist<int>µÄµ¥¸öʵÀý¡£

List<int>ºÍList<long>»á´´Ô첻ͬµÄ°æ±¾£¬²»Í¬µÄʵÀý¡£Õâ¾ÍÊÇÎÒÃÇÉÏÃæËµµÄ¾²Ì¬Öµ²»Í¬µÄÔ­Òò¡£

List<string>ºÍList<object>»ò´´Ôìͬһ°æ±¾µ«ÊÇʵÀý²»Í¬¡£

ÕâЩÎÒÃÇÀí½â¾ÍÐÐÁË¡£

»¹ÓÐÒ»µãÐèҪעÒ⣬·ºÐÍÀàÐÍÔÚÌí¼ÓÕû¸ö¼¯ºÏµÄʱºò²»Ö§³ÖÒþʽת»»£¬±ÈÈç


List<object> o = new List<object>();
List<int> iss = new List<int>();
iss.Add(1);
o.AddRange(iss);

ÕâÀïÎÒÃÇÐèÒªÏÔʾת»»Ò»Ï£¬ÎÒÃÇ¿ÉÒÔдһ¸ö·½·¨¡£


public void Convert<TInput,TOut>(IList<TInput> input,IList<TOut> outo) where TInput:TOut
{
foreach (TInput t in input)
{
outo.Add(t);
}
}

·ºÐÍÕâÀïÒ²½éÉܵò¶àÁË£¬.netframerworkÖÐÓÐЩ·ºÐÍ£¬±ÈÈçNullable<T>ÎÒÔÚ¿É¿ÕÀàÐͽéÉÜÁË£¬Ê¼þ·ºÐÍ£¬ÎÒ»áÔÚʼþÖнéÉÜ¡£·ºÐ͸ú·´ÉäÎÒ»áÔÚ·´ÉäÖнéÉÜ£¬·ºÐ͸úÊôÐÔ£¬ÎÒ»áÔÚÊôÐÔÖнéÉÜ¡£×îºó¾ÍÊÇÒ»¸öÀàÐÍÁË£¬½éÉÜһϡ£ArraySegment<T>.±íʾÊý×é¶Î¡£Ö±½Ó¿´´úÂë°É


int[] ints = { 2,3,4,5,6,7,8,9};
ArraySegment<int> arr = new ArraySegment

<int>(ints, 2, 3);

for (int i = arr.Offset; i < arr.Count+

arr.Offset; i++)
{
Console.WriteLine(arr.Array[i]);
}

OffsetÊÇÏà¶ÔÔ­Êý×éµÄË÷Òý£¬¶øcountÊÇÏÖÔÚµÄÈÝÁ¿

·ºÐ;ͽéÉÜÍêÁË£¬¸öÈËÈÏΪ»¹ÊǽéÉܵñȽÏÏêϸµÄ¡£

   
1717 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
 
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
 
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì