C#ÖеÄ==,!=µÈ·ûºÅÖØÔØ£¬ÒÔ¼°ÖØÔصȺŲÙ×÷
ͨ¹ýÒ»¸öʵ¼ÊµÄÀý×ÓÀ´½éÉÜ¡£ÆäÖÐÖØÔØ==£¬!=,Equal,GetHashCodeº¯Êý¡£
public class Record
{
public string[] arr = null;
public bool hasEqual = false;
//ÖØÔØÒ»¸öϱêÔËËã·ûºÅ
public string this[int index]
{
get
{
return arr[index];
}
set
{
arr[index] = value;
}
}
public override int GetHashCode()
{
// ÔÚÕâÀïʹÓÃ×Ö·û´®Êý×éµÄhashcode£¬±ÜÃâ×Ô¼ºÍê³ÉÒ»¸öËã·¨
return arr.GetHashCode();
}
public Record(int count)
{
if (count < 1)
{
throw new Exception("Êý×éµÄ³¤¶È²»ÄÜСÓÚ1");
}
arr = new string[count];
}
public static bool operator ==(Record rec1, Record rec2)
{
//×¢ÒâÎÒÃǵ÷ÓÃEqualsÀ´ÅжÏÊÇ·ñÏàµÈ¡£¶ø²»ÊÇÔÚ×Ô¼ºµÄº¯ÊýÖÐÅС¢¶Ï¡£ÕâÊÇÒòΪÈç¹ûÔÚ×Ô¼ºµÄº¯ÊýÖÐÅжϡ£±ÈÈçÓÐrec2=nullµÄÇé¿ö¡£Èç¹ûÊÇÕâÖÖÇé¿ö¡£ÎÒÃÇÒªÅжÏif(rec2==null) {…}¡£ÆäÖÐrec2==nullÒ²Êǵ÷ÓÃÒ»¸öµÈºÅÔËËã·û£¬ÕâÀïÃæÓÐÒ»¸öµÝ¹éµÄ¹ý³Ì£¬Ôì³ÉÁËËÀÑ»·¡£
return Object.Equals(rec1, rec2);
}
public static bool operator !=(Record rec1, Record rec2)
{
return !Object.Equals(rec1, rec2);
}
public override bool Equals(object obj)
{
//ÅжÏÓëÖ®±È½ÏµÄÀàÐÍÊÇ·ñΪnull¡£ÕâÑù²»»áÔì³ÉµÝ¹éµÄÇé¿ö
if (obj == null)
return false;
if (GetType() != obj.GetType())
return false;
Record rec = (Record)obj;
int count = rec.arr.Length;
for (int i = 0; i < count; i++)
{
if (this.arr[i] != rec.arr[i])
{
return false;
}
}
return true;
}
}
ÒÔÉϾÍÊǽéÉÜÖØÔØ==£¬!=,Equal,GetHashCodeµÄ·½·¨¡£µ«ÊÇÓеÄʱºòÎÒÃÇÐèÒªÖØÔØ = ²Ù×÷·û£¬À´·½±ãÎÒÃǽøÐд«µÝ£¬ÕâÔÚC++Àï¿ÉÒÔʹÓ÷ûºÅÖØÔØÀ´ÊµÏÖ£¬µ«ÊÇC#ÀïÃæ¾ÍÐв»Í¨ÁË£¬²»ÐÅÄã¿ÉÒÔÊÔÊÔ£¬±àÒëÆ÷»á±¨´íµÄ¡£C#ÀïʵÏÖÏàͬЧ¹ûʹÓõIJ¢²»ÊÇ¶Ô = ·ûºÅ²Ù×÷½øÐÐÖØÔØ£¬¶øÊÇͨ¹ýÒÔÏ·½·¨À´ÖØÔØ
ÔÀ´C++µÄ³ÌÐòÔ±Ò»¶¨»áдoperator=µÄ,µ«ÊÇÕâÔÚc#ÖÐÊÇ´íÎó
µÄ.
ÎÒÃÇ¿ÉÒÔͨ¹ýת»»À´ÊµÏÖÖØÔØµÈºÅµÄÄ¿µÄ.
c#ÖÐÓÐimplicitºÍexplicit¹Ø¼ü×Ö.¿ÉÒÔʵÏÖÒþʽºÍÏÔʾ
ת»»
ʾÀý:
class MyString
{
private string _str;
private MyString(string str)
{
this._str = str;
}
public static implicit operator MyString(string str)
{
Ïà¹ØÎĵµ£º
Ìí¼ÓÒýÓÃ
using System.Data.OracleClient;
Ö÷ÒªÓõ½ÁËÁ½¸öÀà
System.Data.OracleClient.OracleConnection ±íʾһ¸öµ½Êý¾Ý¿âµÄÁ¬½Ó¡£´ËÀàÎÞ·¨¼Ì³Ð¡£
System.Data.OracleClient.OracleCommand ±íʾÕë¶ÔÊý¾Ý¿âÖ´ÐÐµÄ SQL Óï¾ä»ò´æ ......
±¾ÊéÊÇ΢Èí¼¼ÊõÅàѵͳ±à½Ì²ÄÖ®Ò»£¬¶Ô±à³ÌÓïÑÔC#½øÐÐÁËÏêϸµÄ½éÉÜ¡£ C#ÊÇ»ùÓÚ΢ÈíÏÂÒ»´ú²Ù×÷ƽ̨£®NETµÄȫеÄÃæÏò¶ÔÏóµÄ³ÌÐòÉè¼ÆÓïÑÔ¡£ËüÔÚ±£³ÖÁËC+ÖÐÊìϤµÄÓï·¨µÄͬʱ£¬Ìí¼ÓÁË´óÁ¿µÄ¸ßЧ´úÂëºÍÍêÈ«ÃæÏò¶ÔÏóÌØÐÔ£¬ÒÔ¼°¸ü¸ßµÄ¿É¿¿ÐԺͰ²È«ÐÔ¡£C#ÓïÑÔ½«ÔÚ±£³ÖC£¯C++Áé»îÐԵĻù´¡ÉÏΪ³ÌÐòÔ±´øÀ´¸ü¸ßЧµÄ¿ª·¢·½Ê½¡£Ëü²»½öÄÜÓÃÓ ......
/// <summary>
/// ±È½ÏÁ½·ùͼƬÊÇ·ñÒ»Ö£¨Ê¹ÓÃMarshal.ReadByte·½Ê½£©
/// </summary>
/// <param name="bitmap1">ͼƬ1</param>
/// <param name="bitmap2">ͼƬ2</param>
/// <returns>Èç¹ûÁ½·ùͼƬÏàͬ£¬·µ»Ø0£»Èç¹ûͼƬ1СÓÚͼƬ2£¬·µ»ØÐ¡ÓÚ0µÄÖµ£»Èç¹ûͼƬ1´óÓÚÍ¼Æ ......
Õâ¸öÎÊÌâÒ²²»ÖªµÀÄѵ¹Á˶àÉÙC#ºÀ½Ü¡£±ÈÆðMFCµÄ½çÃæË¢Ð£¬ÔÚWINFORMÖÐÀ´ÊµÏÖ¶àÏß³ÌË¢ÐÂÕæÊǺÜÍ´¿à£¬¹Êд´ËÎÄ¡£
¶àÏß³ÌˢнçÃæÖ÷ÒªÓõ½¶àỊ̈߳¬Î¯ÍУ¬Ḭ̈߳²È«¡¢Ê¼þµÈһϵÁиßÄѶȵÄC#²Ù×÷¡£
¹ØÓÚίÍкÍʼþ£¬ÕâÓÐһƪºÜÒ×¶®µÄÎÄÕ£ºhi.baidu.com/anglecloudy/blog/item/a52253ee804d052f2df534ab.html
£½£½£½£½£½£½£½£½ ......
1.Á¬½ÓÊý¾Ý¿âÎļþ
<add name="LocalSqlServer" connectionString="Data Source=.\SQLExpress;Integrated Security=True;AttachDBFilename=|DataDirectory|TimeTracker.mdf;User Instance=true" />
SqlConnectionStringBuilderʵÀý»¯Ê±£¬ÒªÓõ½connectionString£¬È磺SqlConnectionStringBuild builder = new SqlCon ......