[{"data":1,"prerenderedAt":1420},["ShallowReactive",2],{"blog:2006:observing_change_events_on_a_listt":3,"blogMore-Development":1406,"comments-observing_change_events_on_a_listt":1419},{"id":4,"title":5,"body":6,"category":1390,"commentCount":174,"date":1391,"description":12,"excerpt":1392,"extension":1393,"filenames":1394,"hidden":1395,"image":1394,"meta":1396,"minutes":93,"navigation":114,"path":1397,"seo":1398,"showCategory":1394,"stem":1399,"tags":1400,"updated":1394,"url":1403,"wordCount":1404,"__hash__":1405},"content\u002Fblog\u002F2006\u002Fobserving_change_events_on_a_listt.md","Observing changes to a List\u003CT> by adding events",{"type":7,"value":8,"toc":1388},"minimark",[9,13,30,50,1378,1384],[10,11,12],"p",{},"In an attempt to get more C# and .NET content up I’m putting up some snippets I’ve put together in response to questions on some C# user support groups. Many of them are not particularly advanced but they are useful.",[14,15,16],"blockquote",{},[10,17,18,19],{},"GitHub has the ",[20,21,25,26],"a",{"href":22,"rel":23},"https:\u002F\u002Fgithub.com\u002Fdamieng\u002FDamienGKit\u002Fblob\u002Fmaster\u002FCSharp\u002FDamienG.Library\u002FCollections\u002FGeneric\u002FObservableList.cs%22",[24],"nofollow","latest version of ",[27,28,29],"code",{},"ObservableList\u003CT>",[10,31,32,33,36,37,39,40,42,43,45,46,49],{},"This sample shows how to observe events on an generic ",[27,34,35],{},"IList\u003CT>",". It does this by way of implementing the ",[27,38,35],{}," interface over the top of something that already supports ",[27,41,35],{}," to do the actual work and highlights how useful publishing the interface, ",[27,44,35],{},", separate from the actual concrete class ",[27,47,48],{},"List\u003CT>"," can be for reuse.",[51,52,57],"pre",{"className":53,"code":54,"language":55,"meta":56,"style":56},"language-csharp shiki shiki-themes everforest-light dracula","using System;\nusing System.Collections;\nusing System.Collections.Generic;\n\npublic class ObservableList\u003CT> : IList\u003CT> {\n  private IList\u003CT> internalList;\n\n  public class ListChangedEventArgs : EventArgs {\n    public int index;\n    public T item;\n    public ListChangedEventArgs(int index, T item) {\n      this.index = index;\n      this.item = item;\n    }\n  }\n\n  public delegate void ListChangedEventHandler(object source, ListChangedEventArgs e);\n  public delegate void ListClearedEventHandler(object source, EventArgs e);\n  public event ListChangedEventHandler ListChanged;\n  public event ListClearedEventHandler ListCleared;\n\n  public ObservableList() {\n    internalList = new List\u003CT>();\n  }\n\n  public ObservableList(IList\u003CT> list) {\n    internalList = list;\n  }\n\n  public ObservableList(IEnumerable\u003CT> collection) {\n    internalList = new List\u003CT>(collection);\n  }\n\n  protected virtual void OnListChanged(ListChangedEventArgs e) {\n    if (ListChanged != null)\n      ListChanged(this, e);\n  }\n\n  protected virtual void OnListCleared(EventArgs e) {\n    if (ListCleared != null)\n      ListCleared(this, e);\n  }\n\n  public int IndexOf(T item) {\n    return internalList.IndexOf(item);\n  }\n\n  public void Insert(int index, T item) {\n    internalList.Insert(index, item);\n    OnListChanged(new ListChangedEventArgs(index, item));\n  }\n\n  public void RemoveAt(int index) {\n    T item = internalList[index];\n    internalList.Remove(item);\n    OnListChanged(new ListChangedEventArgs(index, item));\n  }\n\n  public T this[int index] {\n    get { return internalList[index]; }\n    set {\n          internalList[index] = value;\n          OnListChanged(new ListChangedEventArgs(index, value));\n    }\n  }\n\n  public void Add(T item) {\n    internalList.Add(item);\n    OnListChanged(new ListChangedEventArgs(internalList.IndexOf(item), item));\n  }\n\n  public void Clear() {\n    internalList.Clear();\n    OnListCleared(new EventArgs());\n  }\n\n  public bool Contains(T item) {\n    return internalList.Contains(item);\n  }\n\n  public void CopyTo(T[] array, int arrayIndex) {\n    internalList.CopyTo(array, arrayIndex);\n  }\n\n  public int Count {\n    get { return internalList.Count; }\n  }\n\n  public bool IsReadOnly {\n    get { return internalList.IsReadOnly; }\n  }\n\n  public bool Remove(T item) {\n    lock(this) {\n      int index = internalList.IndexOf(item);\n      if (internalList.Remove(item)) {\n        OnListChanged(new ListChangedEventArgs(index, item));\n        return true;\n      }\n      else\n        return false;\n    }\n  }\n\n  public IEnumerator\u003CT> GetEnumerator() {\n    return internalList.GetEnumerator();\n  }\n\n  IEnumerator IEnumerable.GetEnumerator() {\n    return ((IEnumerable) internalList).GetEnumerator();\n  }\n}\n","csharp","",[27,58,59,76,91,109,116,151,167,172,192,205,216,245,263,277,283,289,294,327,353,366,378,383,393,415,420,425,448,458,463,468,491,509,514,519,541,560,574,579,584,604,618,630,635,640,658,673,678,683,707,719,735,740,745,763,780,790,803,808,813,833,850,858,872,887,892,897,902,920,930,949,954,959,971,982,998,1003,1008,1027,1039,1044,1049,1078,1089,1094,1099,1109,1126,1131,1136,1146,1162,1167,1172,1190,1202,1219,1233,1247,1258,1264,1270,1280,1285,1290,1295,1314,1325,1330,1335,1350,1367,1372],{"__ignoreMap":56},[60,61,64,68,72],"span",{"class":62,"line":63},"line",1,[60,65,67],{"class":66},"smiwp","using",[60,69,71],{"class":70},"sjYfO"," System",[60,73,75],{"class":74},"s6Vpi",";\n",[60,77,79,81,83,86,89],{"class":62,"line":78},2,[60,80,67],{"class":66},[60,82,71],{"class":70},[60,84,85],{"class":74},".",[60,87,88],{"class":70},"Collections",[60,90,75],{"class":74},[60,92,94,96,98,100,102,104,107],{"class":62,"line":93},3,[60,95,67],{"class":66},[60,97,71],{"class":70},[60,99,85],{"class":74},[60,101,88],{"class":70},[60,103,85],{"class":74},[60,105,106],{"class":70},"Generic",[60,108,75],{"class":74},[60,110,112],{"class":62,"line":111},4,[60,113,115],{"emptyLinePlaceholder":114},true,"\n",[60,117,119,123,126,130,133,137,140,144,146,148],{"class":62,"line":118},5,[60,120,122],{"class":121},"s9HRq","public",[60,124,125],{"class":66}," class",[60,127,129],{"class":128},"sPLAf"," ObservableList",[60,131,132],{"class":74},"\u003C",[60,134,136],{"class":135},"sAO9U","T",[60,138,139],{"class":74},"> : ",[60,141,143],{"class":142},"snuxY","IList",[60,145,132],{"class":74},[60,147,136],{"class":142},[60,149,150],{"class":74},"> {\n",[60,152,154,157,160,162,164],{"class":62,"line":153},6,[60,155,156],{"class":121},"  private",[60,158,159],{"class":142}," IList",[60,161,132],{"class":74},[60,163,136],{"class":142},[60,165,166],{"class":74},"> internalList;\n",[60,168,170],{"class":62,"line":169},7,[60,171,115],{"emptyLinePlaceholder":114},[60,173,175,178,180,183,186,189],{"class":62,"line":174},8,[60,176,177],{"class":121},"  public",[60,179,125],{"class":66},[60,181,182],{"class":128}," ListChangedEventArgs",[60,184,185],{"class":74}," : ",[60,187,188],{"class":142},"EventArgs",[60,190,191],{"class":74}," {\n",[60,193,195,198,202],{"class":62,"line":194},9,[60,196,197],{"class":121},"    public",[60,199,201],{"class":200},"sXAHl"," int",[60,203,204],{"class":74}," index;\n",[60,206,208,210,213],{"class":62,"line":207},10,[60,209,197],{"class":121},[60,211,212],{"class":142}," T",[60,214,215],{"class":74}," item;\n",[60,217,219,221,224,227,230,234,237,239,242],{"class":62,"line":218},11,[60,220,197],{"class":121},[60,222,182],{"class":223},"sS4Kt",[60,225,226],{"class":74},"(",[60,228,229],{"class":200},"int",[60,231,233],{"class":232},"s7cAX"," index",[60,235,236],{"class":74},", ",[60,238,136],{"class":142},[60,240,241],{"class":232}," item",[60,243,244],{"class":74},") {\n",[60,246,248,252,254,258,261],{"class":62,"line":247},12,[60,249,251],{"class":250},"sKO3f","      this",[60,253,85],{"class":74},[60,255,257],{"class":256},"sSKRk","index",[60,259,260],{"class":121}," =",[60,262,204],{"class":74},[60,264,266,268,270,273,275],{"class":62,"line":265},13,[60,267,251],{"class":250},[60,269,85],{"class":74},[60,271,272],{"class":256},"item",[60,274,260],{"class":121},[60,276,215],{"class":74},[60,278,280],{"class":62,"line":279},14,[60,281,282],{"class":74},"    }\n",[60,284,286],{"class":62,"line":285},15,[60,287,288],{"class":74},"  }\n",[60,290,292],{"class":62,"line":291},16,[60,293,115],{"emptyLinePlaceholder":114},[60,295,297,299,302,305,308,310,313,316,318,321,324],{"class":62,"line":296},17,[60,298,177],{"class":121},[60,300,301],{"class":200}," delegate",[60,303,304],{"class":200}," void",[60,306,307],{"class":142}," ListChangedEventHandler",[60,309,226],{"class":74},[60,311,312],{"class":200},"object",[60,314,315],{"class":232}," source",[60,317,236],{"class":74},[60,319,320],{"class":142},"ListChangedEventArgs",[60,322,323],{"class":232}," e",[60,325,326],{"class":74},");\n",[60,328,330,332,334,336,339,341,343,345,347,349,351],{"class":62,"line":329},18,[60,331,177],{"class":121},[60,333,301],{"class":200},[60,335,304],{"class":200},[60,337,338],{"class":142}," ListClearedEventHandler",[60,340,226],{"class":74},[60,342,312],{"class":200},[60,344,315],{"class":232},[60,346,236],{"class":74},[60,348,188],{"class":142},[60,350,323],{"class":232},[60,352,326],{"class":74},[60,354,356,358,361,363],{"class":62,"line":355},19,[60,357,177],{"class":121},[60,359,360],{"class":200}," event",[60,362,307],{"class":142},[60,364,365],{"class":74}," ListChanged;\n",[60,367,369,371,373,375],{"class":62,"line":368},20,[60,370,177],{"class":121},[60,372,360],{"class":200},[60,374,338],{"class":142},[60,376,377],{"class":74}," ListCleared;\n",[60,379,381],{"class":62,"line":380},21,[60,382,115],{"emptyLinePlaceholder":114},[60,384,386,388,390],{"class":62,"line":385},22,[60,387,177],{"class":121},[60,389,129],{"class":223},[60,391,392],{"class":74},"() {\n",[60,394,396,399,402,405,408,410,412],{"class":62,"line":395},23,[60,397,398],{"class":74},"    internalList ",[60,400,401],{"class":121},"=",[60,403,404],{"class":66}," new",[60,406,407],{"class":142}," List",[60,409,132],{"class":74},[60,411,136],{"class":142},[60,413,414],{"class":74},">();\n",[60,416,418],{"class":62,"line":417},24,[60,419,288],{"class":74},[60,421,423],{"class":62,"line":422},25,[60,424,115],{"emptyLinePlaceholder":114},[60,426,428,430,432,434,436,438,440,443,446],{"class":62,"line":427},26,[60,429,177],{"class":121},[60,431,129],{"class":223},[60,433,226],{"class":74},[60,435,143],{"class":142},[60,437,132],{"class":74},[60,439,136],{"class":142},[60,441,442],{"class":74},"> ",[60,444,445],{"class":232},"list",[60,447,244],{"class":74},[60,449,451,453,455],{"class":62,"line":450},27,[60,452,398],{"class":74},[60,454,401],{"class":121},[60,456,457],{"class":74}," list;\n",[60,459,461],{"class":62,"line":460},28,[60,462,288],{"class":74},[60,464,466],{"class":62,"line":465},29,[60,467,115],{"emptyLinePlaceholder":114},[60,469,471,473,475,477,480,482,484,486,489],{"class":62,"line":470},30,[60,472,177],{"class":121},[60,474,129],{"class":223},[60,476,226],{"class":74},[60,478,479],{"class":142},"IEnumerable",[60,481,132],{"class":74},[60,483,136],{"class":142},[60,485,442],{"class":74},[60,487,488],{"class":232},"collection",[60,490,244],{"class":74},[60,492,494,496,498,500,502,504,506],{"class":62,"line":493},31,[60,495,398],{"class":74},[60,497,401],{"class":121},[60,499,404],{"class":66},[60,501,407],{"class":142},[60,503,132],{"class":74},[60,505,136],{"class":142},[60,507,508],{"class":74},">(collection);\n",[60,510,512],{"class":62,"line":511},32,[60,513,288],{"class":74},[60,515,517],{"class":62,"line":516},33,[60,518,115],{"emptyLinePlaceholder":114},[60,520,522,525,528,530,533,535,537,539],{"class":62,"line":521},34,[60,523,524],{"class":121},"  protected",[60,526,527],{"class":121}," virtual",[60,529,304],{"class":200},[60,531,532],{"class":223}," OnListChanged",[60,534,226],{"class":74},[60,536,320],{"class":142},[60,538,323],{"class":232},[60,540,244],{"class":74},[60,542,544,547,550,553,557],{"class":62,"line":543},35,[60,545,546],{"class":66},"    if",[60,548,549],{"class":74}," (ListChanged ",[60,551,552],{"class":121},"!=",[60,554,556],{"class":555},"s3Ipq"," null",[60,558,559],{"class":74},")\n",[60,561,563,566,568,571],{"class":62,"line":562},36,[60,564,565],{"class":223},"      ListChanged",[60,567,226],{"class":74},[60,569,570],{"class":250},"this",[60,572,573],{"class":74},", e);\n",[60,575,577],{"class":62,"line":576},37,[60,578,288],{"class":74},[60,580,582],{"class":62,"line":581},38,[60,583,115],{"emptyLinePlaceholder":114},[60,585,587,589,591,593,596,598,600,602],{"class":62,"line":586},39,[60,588,524],{"class":121},[60,590,527],{"class":121},[60,592,304],{"class":200},[60,594,595],{"class":223}," OnListCleared",[60,597,226],{"class":74},[60,599,188],{"class":142},[60,601,323],{"class":232},[60,603,244],{"class":74},[60,605,607,609,612,614,616],{"class":62,"line":606},40,[60,608,546],{"class":66},[60,610,611],{"class":74}," (ListCleared ",[60,613,552],{"class":121},[60,615,556],{"class":555},[60,617,559],{"class":74},[60,619,621,624,626,628],{"class":62,"line":620},41,[60,622,623],{"class":223},"      ListCleared",[60,625,226],{"class":74},[60,627,570],{"class":250},[60,629,573],{"class":74},[60,631,633],{"class":62,"line":632},42,[60,634,288],{"class":74},[60,636,638],{"class":62,"line":637},43,[60,639,115],{"emptyLinePlaceholder":114},[60,641,643,645,647,650,652,654,656],{"class":62,"line":642},44,[60,644,177],{"class":121},[60,646,201],{"class":200},[60,648,649],{"class":223}," IndexOf",[60,651,226],{"class":74},[60,653,136],{"class":142},[60,655,241],{"class":232},[60,657,244],{"class":74},[60,659,661,664,667,670],{"class":62,"line":660},45,[60,662,663],{"class":66},"    return",[60,665,666],{"class":74}," internalList.",[60,668,669],{"class":223},"IndexOf",[60,671,672],{"class":74},"(item);\n",[60,674,676],{"class":62,"line":675},46,[60,677,288],{"class":74},[60,679,681],{"class":62,"line":680},47,[60,682,115],{"emptyLinePlaceholder":114},[60,684,686,688,690,693,695,697,699,701,703,705],{"class":62,"line":685},48,[60,687,177],{"class":121},[60,689,304],{"class":200},[60,691,692],{"class":223}," Insert",[60,694,226],{"class":74},[60,696,229],{"class":200},[60,698,233],{"class":232},[60,700,236],{"class":74},[60,702,136],{"class":142},[60,704,241],{"class":232},[60,706,244],{"class":74},[60,708,710,713,716],{"class":62,"line":709},49,[60,711,712],{"class":74},"    internalList.",[60,714,715],{"class":223},"Insert",[60,717,718],{"class":74},"(index, item);\n",[60,720,722,725,727,730,732],{"class":62,"line":721},50,[60,723,724],{"class":223},"    OnListChanged",[60,726,226],{"class":74},[60,728,729],{"class":66},"new",[60,731,182],{"class":142},[60,733,734],{"class":74},"(index, item));\n",[60,736,738],{"class":62,"line":737},51,[60,739,288],{"class":74},[60,741,743],{"class":62,"line":742},52,[60,744,115],{"emptyLinePlaceholder":114},[60,746,748,750,752,755,757,759,761],{"class":62,"line":747},53,[60,749,177],{"class":121},[60,751,304],{"class":200},[60,753,754],{"class":223}," RemoveAt",[60,756,226],{"class":74},[60,758,229],{"class":200},[60,760,233],{"class":232},[60,762,244],{"class":74},[60,764,766,769,772,774,777],{"class":62,"line":765},54,[60,767,768],{"class":142},"    T",[60,770,771],{"class":74}," item ",[60,773,401],{"class":121},[60,775,776],{"class":256}," internalList",[60,778,779],{"class":74},"[index];\n",[60,781,783,785,788],{"class":62,"line":782},55,[60,784,712],{"class":74},[60,786,787],{"class":223},"Remove",[60,789,672],{"class":74},[60,791,793,795,797,799,801],{"class":62,"line":792},56,[60,794,724],{"class":223},[60,796,226],{"class":74},[60,798,729],{"class":66},[60,800,182],{"class":142},[60,802,734],{"class":74},[60,804,806],{"class":62,"line":805},57,[60,807,288],{"class":74},[60,809,811],{"class":62,"line":810},58,[60,812,115],{"emptyLinePlaceholder":114},[60,814,816,818,820,823,826,828,830],{"class":62,"line":815},59,[60,817,177],{"class":121},[60,819,212],{"class":142},[60,821,822],{"class":250}," this",[60,824,825],{"class":74},"[",[60,827,229],{"class":200},[60,829,233],{"class":232},[60,831,832],{"class":74},"] {\n",[60,834,836,839,842,845,847],{"class":62,"line":835},60,[60,837,838],{"class":200},"    get",[60,840,841],{"class":74}," { ",[60,843,844],{"class":66},"return",[60,846,776],{"class":256},[60,848,849],{"class":74},"[index]; }\n",[60,851,853,856],{"class":62,"line":852},61,[60,854,855],{"class":200},"    set",[60,857,191],{"class":74},[60,859,861,864,867,869],{"class":62,"line":860},62,[60,862,863],{"class":256},"          internalList",[60,865,866],{"class":74},"[index] ",[60,868,401],{"class":121},[60,870,871],{"class":74}," value;\n",[60,873,875,878,880,882,884],{"class":62,"line":874},63,[60,876,877],{"class":223},"          OnListChanged",[60,879,226],{"class":74},[60,881,729],{"class":66},[60,883,182],{"class":142},[60,885,886],{"class":74},"(index, value));\n",[60,888,890],{"class":62,"line":889},64,[60,891,282],{"class":74},[60,893,895],{"class":62,"line":894},65,[60,896,288],{"class":74},[60,898,900],{"class":62,"line":899},66,[60,901,115],{"emptyLinePlaceholder":114},[60,903,905,907,909,912,914,916,918],{"class":62,"line":904},67,[60,906,177],{"class":121},[60,908,304],{"class":200},[60,910,911],{"class":223}," Add",[60,913,226],{"class":74},[60,915,136],{"class":142},[60,917,241],{"class":232},[60,919,244],{"class":74},[60,921,923,925,928],{"class":62,"line":922},68,[60,924,712],{"class":74},[60,926,927],{"class":223},"Add",[60,929,672],{"class":74},[60,931,933,935,937,939,941,944,946],{"class":62,"line":932},69,[60,934,724],{"class":223},[60,936,226],{"class":74},[60,938,729],{"class":66},[60,940,182],{"class":142},[60,942,943],{"class":74},"(internalList.",[60,945,669],{"class":223},[60,947,948],{"class":74},"(item), item));\n",[60,950,952],{"class":62,"line":951},70,[60,953,288],{"class":74},[60,955,957],{"class":62,"line":956},71,[60,958,115],{"emptyLinePlaceholder":114},[60,960,962,964,966,969],{"class":62,"line":961},72,[60,963,177],{"class":121},[60,965,304],{"class":200},[60,967,968],{"class":223}," Clear",[60,970,392],{"class":74},[60,972,974,976,979],{"class":62,"line":973},73,[60,975,712],{"class":74},[60,977,978],{"class":223},"Clear",[60,980,981],{"class":74},"();\n",[60,983,985,988,990,992,995],{"class":62,"line":984},74,[60,986,987],{"class":223},"    OnListCleared",[60,989,226],{"class":74},[60,991,729],{"class":66},[60,993,994],{"class":142}," EventArgs",[60,996,997],{"class":74},"());\n",[60,999,1001],{"class":62,"line":1000},75,[60,1002,288],{"class":74},[60,1004,1006],{"class":62,"line":1005},76,[60,1007,115],{"emptyLinePlaceholder":114},[60,1009,1011,1013,1016,1019,1021,1023,1025],{"class":62,"line":1010},77,[60,1012,177],{"class":121},[60,1014,1015],{"class":200}," bool",[60,1017,1018],{"class":223}," Contains",[60,1020,226],{"class":74},[60,1022,136],{"class":142},[60,1024,241],{"class":232},[60,1026,244],{"class":74},[60,1028,1030,1032,1034,1037],{"class":62,"line":1029},78,[60,1031,663],{"class":66},[60,1033,666],{"class":74},[60,1035,1036],{"class":223},"Contains",[60,1038,672],{"class":74},[60,1040,1042],{"class":62,"line":1041},79,[60,1043,288],{"class":74},[60,1045,1047],{"class":62,"line":1046},80,[60,1048,115],{"emptyLinePlaceholder":114},[60,1050,1052,1054,1056,1059,1061,1063,1066,1069,1071,1073,1076],{"class":62,"line":1051},81,[60,1053,177],{"class":121},[60,1055,304],{"class":200},[60,1057,1058],{"class":223}," CopyTo",[60,1060,226],{"class":74},[60,1062,136],{"class":142},[60,1064,1065],{"class":74},"[] ",[60,1067,1068],{"class":232},"array",[60,1070,236],{"class":74},[60,1072,229],{"class":200},[60,1074,1075],{"class":232}," arrayIndex",[60,1077,244],{"class":74},[60,1079,1081,1083,1086],{"class":62,"line":1080},82,[60,1082,712],{"class":74},[60,1084,1085],{"class":223},"CopyTo",[60,1087,1088],{"class":74},"(array, arrayIndex);\n",[60,1090,1092],{"class":62,"line":1091},83,[60,1093,288],{"class":74},[60,1095,1097],{"class":62,"line":1096},84,[60,1098,115],{"emptyLinePlaceholder":114},[60,1100,1102,1104,1106],{"class":62,"line":1101},85,[60,1103,177],{"class":121},[60,1105,201],{"class":200},[60,1107,1108],{"class":74}," Count {\n",[60,1110,1112,1114,1116,1118,1120,1123],{"class":62,"line":1111},86,[60,1113,838],{"class":200},[60,1115,841],{"class":74},[60,1117,844],{"class":66},[60,1119,666],{"class":74},[60,1121,1122],{"class":256},"Count",[60,1124,1125],{"class":74},"; }\n",[60,1127,1129],{"class":62,"line":1128},87,[60,1130,288],{"class":74},[60,1132,1134],{"class":62,"line":1133},88,[60,1135,115],{"emptyLinePlaceholder":114},[60,1137,1139,1141,1143],{"class":62,"line":1138},89,[60,1140,177],{"class":121},[60,1142,1015],{"class":200},[60,1144,1145],{"class":74}," IsReadOnly {\n",[60,1147,1149,1151,1153,1155,1157,1160],{"class":62,"line":1148},90,[60,1150,838],{"class":200},[60,1152,841],{"class":74},[60,1154,844],{"class":66},[60,1156,666],{"class":74},[60,1158,1159],{"class":256},"IsReadOnly",[60,1161,1125],{"class":74},[60,1163,1165],{"class":62,"line":1164},91,[60,1166,288],{"class":74},[60,1168,1170],{"class":62,"line":1169},92,[60,1171,115],{"emptyLinePlaceholder":114},[60,1173,1175,1177,1179,1182,1184,1186,1188],{"class":62,"line":1174},93,[60,1176,177],{"class":121},[60,1178,1015],{"class":200},[60,1180,1181],{"class":223}," Remove",[60,1183,226],{"class":74},[60,1185,136],{"class":142},[60,1187,241],{"class":232},[60,1189,244],{"class":74},[60,1191,1193,1196,1198,1200],{"class":62,"line":1192},94,[60,1194,1195],{"class":66},"    lock",[60,1197,226],{"class":74},[60,1199,570],{"class":250},[60,1201,244],{"class":74},[60,1203,1205,1208,1211,1213,1215,1217],{"class":62,"line":1204},95,[60,1206,1207],{"class":200},"      int",[60,1209,1210],{"class":74}," index ",[60,1212,401],{"class":121},[60,1214,666],{"class":74},[60,1216,669],{"class":223},[60,1218,672],{"class":74},[60,1220,1222,1225,1228,1230],{"class":62,"line":1221},96,[60,1223,1224],{"class":66},"      if",[60,1226,1227],{"class":74}," (internalList.",[60,1229,787],{"class":223},[60,1231,1232],{"class":74},"(item)) {\n",[60,1234,1236,1239,1241,1243,1245],{"class":62,"line":1235},97,[60,1237,1238],{"class":223},"        OnListChanged",[60,1240,226],{"class":74},[60,1242,729],{"class":66},[60,1244,182],{"class":142},[60,1246,734],{"class":74},[60,1248,1250,1253,1256],{"class":62,"line":1249},98,[60,1251,1252],{"class":66},"        return",[60,1254,1255],{"class":555}," true",[60,1257,75],{"class":74},[60,1259,1261],{"class":62,"line":1260},99,[60,1262,1263],{"class":74},"      }\n",[60,1265,1267],{"class":62,"line":1266},100,[60,1268,1269],{"class":66},"      else\n",[60,1271,1273,1275,1278],{"class":62,"line":1272},101,[60,1274,1252],{"class":66},[60,1276,1277],{"class":555}," false",[60,1279,75],{"class":74},[60,1281,1283],{"class":62,"line":1282},102,[60,1284,282],{"class":74},[60,1286,1288],{"class":62,"line":1287},103,[60,1289,288],{"class":74},[60,1291,1293],{"class":62,"line":1292},104,[60,1294,115],{"emptyLinePlaceholder":114},[60,1296,1298,1300,1303,1305,1307,1309,1312],{"class":62,"line":1297},105,[60,1299,177],{"class":121},[60,1301,1302],{"class":142}," IEnumerator",[60,1304,132],{"class":74},[60,1306,136],{"class":142},[60,1308,442],{"class":74},[60,1310,1311],{"class":223},"GetEnumerator",[60,1313,392],{"class":74},[60,1315,1317,1319,1321,1323],{"class":62,"line":1316},106,[60,1318,663],{"class":66},[60,1320,666],{"class":74},[60,1322,1311],{"class":223},[60,1324,981],{"class":74},[60,1326,1328],{"class":62,"line":1327},107,[60,1329,288],{"class":74},[60,1331,1333],{"class":62,"line":1332},108,[60,1334,115],{"emptyLinePlaceholder":114},[60,1336,1338,1341,1344,1346,1348],{"class":62,"line":1337},109,[60,1339,1340],{"class":142},"  IEnumerator",[60,1342,1343],{"class":142}," IEnumerable",[60,1345,85],{"class":74},[60,1347,1311],{"class":223},[60,1349,392],{"class":74},[60,1351,1353,1355,1358,1360,1363,1365],{"class":62,"line":1352},110,[60,1354,663],{"class":66},[60,1356,1357],{"class":74}," ((",[60,1359,479],{"class":142},[60,1361,1362],{"class":74},") internalList).",[60,1364,1311],{"class":223},[60,1366,981],{"class":74},[60,1368,1370],{"class":62,"line":1369},111,[60,1371,288],{"class":74},[60,1373,1375],{"class":62,"line":1374},112,[60,1376,1377],{"class":74},"}\n",[10,1379,1380],{},[1381,1382,1383],"em",{},"[)amien",[1385,1386,1387],"style",{},"html pre.shiki code .smiwp, html code.shiki .smiwp{--shiki-default:#F85552;--shiki-dark:#FF79C6}html pre.shiki code .sjYfO, html code.shiki .sjYfO{--shiki-default:#DF69BA;--shiki-default-font-style:inherit;--shiki-dark:#8BE9FD;--shiki-dark-font-style:italic}html pre.shiki code .s6Vpi, html code.shiki .s6Vpi{--shiki-default:#5C6A72;--shiki-dark:#F8F8F2}html pre.shiki code .s9HRq, html code.shiki .s9HRq{--shiki-default:#F57D26;--shiki-dark:#FF79C6}html pre.shiki code .sPLAf, html code.shiki .sPLAf{--shiki-default:#3A94C5;--shiki-dark:#8BE9FD}html pre.shiki code .sAO9U, html code.shiki .sAO9U{--shiki-default:#3A94C5;--shiki-default-font-style:inherit;--shiki-dark:#FFB86C;--shiki-dark-font-style:italic}html pre.shiki code .snuxY, html code.shiki .snuxY{--shiki-default:#3A94C5;--shiki-default-font-style:inherit;--shiki-dark:#8BE9FD;--shiki-dark-font-style:italic}html pre.shiki code .sXAHl, html code.shiki .sXAHl{--shiki-default:#3A94C5;--shiki-dark:#FF79C6}html pre.shiki code .sS4Kt, html code.shiki .sS4Kt{--shiki-default:#8DA101;--shiki-dark:#50FA7B}html pre.shiki code .s7cAX, html code.shiki .s7cAX{--shiki-default:#5C6A72;--shiki-default-font-style:inherit;--shiki-dark:#FFB86C;--shiki-dark-font-style:italic}html pre.shiki code .sKO3f, html code.shiki .sKO3f{--shiki-default:#DF69BA;--shiki-default-font-style:inherit;--shiki-dark:#BD93F9;--shiki-dark-font-style:italic}html pre.shiki code .sSKRk, html code.shiki .sSKRk{--shiki-default:#35A77C;--shiki-dark:#F8F8F2}html pre.shiki code .s3Ipq, html code.shiki .s3Ipq{--shiki-default:#DF69BA;--shiki-dark:#BD93F9}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":56,"searchDepth":78,"depth":78,"links":1389},[],"Development","2006-06-14T16:46:59+00:00","[object Object]","md",null,false,{},"\u002Fblog\u002F2006\u002Fobserving_change_events_on_a_listt",{"title":5,"description":12},"blog\u002F2006\u002Fobserving_change_events_on_a_listt",[1401,1402],".NET","C#","\u002Fblog\u002F2006\u002Fobserving_change_events_on_a_listt\u002F",640,"SKAps5q9FlXhfsTyq9oP1uds3kSCdBbKcheV5mqRLbU",[1407,1411,1415],{"title":1408,"date":1409,"url":1410},"Transactions in the MongoDB EF Core Provider","2025-10-25","\u002Fblog\u002F2025\u002Fmongodb-explicit-transactions\u002F",{"title":1412,"date":1413,"url":1414},"Queryable Encryption with the MongoDB EF Core Provider","2025-09-22","\u002Fblog\u002F2025\u002Fmongodb-queryable-encryption\u002F",{"title":1416,"date":1417,"url":1418},"Lazy Loading with EF Core Proxies","2025-04-02","\u002Fblog\u002F2025\u002Fef-proxies\u002F",[],1780900533150]