在一個公共靜態類我有以下的本地方法:靜態方法之間的調用 - 是否會襯托線程安全?
private static int GetMaxFromList(IEnumerable<int> list)
{
var result = 0;
foreach (var i in list)
{
if (i > result) result = i;
}
return result;
}
此方法由一些公共方法的類(例如)中調用:
public static bool IsIntegrityOfDataSetGood(DataSet dataSet, KeyValuePair<string, List<int>> tableAndColumnIndexes)
{
return IsIntegrityOfDataSetGood(dataSet, tableAndColumnIndexes.Key) &&
dataSet.Tables[tableAndColumnIndexes.Key].Columns.Count > GetMaxFromList(tableAndColumnIndexes.Value);
}
注意,此公共方法也稱班內另一種公共方法。
類方法只能通過參數發送給他們的數據,但我擔心靜態方法之間的調用會擾亂線程安全。我有權擔心嗎?
忘了提及這段代碼駐留在.NET 2.0項目中。
僅當靜態方法訪問(靜態)對象/方法不是線程安全的,但正如您所提到的,您的方法僅使用提供給它的列表。如果在調用期間提供的'list'('tableAndColumnIndexes.Value')被改變,則可能會出現問題。 – 2012-04-13 07:26:37
btw,另請參閱:'tableAndColumnIndexes.Value.Max()' - 不需要GetMaxFromList方法 – 2012-04-13 07:27:31
線程安全是* entire *程序的* global *屬性。你不能看單獨的方法,並決定它們中的每一個都是線程安全的,並斷定整個程序是線程安全的。你不能看單個磚塊,發現它們都不是空洞的,並且認爲由磚塊製成的房子也不會是空洞的。 – 2012-04-13 17:09:35