0
在下面顯示的示例中,前一種方法爲每個迭代實例化SearchResult
類型的對象,而後者僅實例化該對象一次,並將其用於所有迭代。在循環中什麼更好,在每次迭代中使用同一個對象或實例化一個新對象?
using (DbDataReader reader = (DbDataReader)dbObject.ExecuteReader(command))
{
if (reader.HasRows)
{
List<SearchResult> searchResults = new List<SearchResult>();
while (reader.Read())
{
SearchResult searchResult = new SearchResult();
searchResult.AppName = Convert.ToString(reader["AppName"]);
searchResults.Add(searchResult);
}
}
}
OR
using (DbDataReader reader = (DbDataReader)dbObject.ExecuteReader(command))
{
if (reader.HasRows)
{
List<SearchResult> searchResults = new List<SearchResult>();
SearchResult searchResult = new SearchResult();
while (reader.Read())
{
searchResult.AppName = Convert.ToString(reader["AppName"]);
searchResults.Add(searchResult);
}
}
}
哪個是更好的方法來處理呢?
謝謝你,並善待我的天真。 :)
^^好吧,但我正在更改屬性的值並將該實例添加到列表中的一個公共範圍內,爲什麼它會導致每個列表的值相同項目? – Dienekes 2010-08-12 10:38:12
因爲您每次都使用SearchResult的相同實例,並且將相同的引用添加到列表中,所以更改該實例上的屬性會將其更改爲列表中的所有內容,因爲它們引用同一個實例 – w69rdy 2010-08-12 10:41:03
@Dienekes:因爲對象是引用類型,即使你只有一個對象(因爲你只聲明一個對象),即使你多次插入一個List,或者Array或者其他的東西,但是你真正做的所有事情都是以幾個不同的引用結束在內存中的位置:也就是說,對同一個對象的多個引用。 – AllenG 2010-08-12 10:48:02