我有一種情況,我必須通過一個List<>
跨2-3個獨立班上下課。現在我主要是使用參數傳遞列表,所以3個類都得到列表。我應該使用靜態列表而不是在整個類中傳遞List來簡化代碼,如Class23.ListObjects.Add()
,然後在操作完成後釋放靜態值,以便下一個操作以空列表開始。現在感覺參數變得非常多,如果列表中有正確的值,忘記將列表傳遞給下一個班級等等,我會感到困惑。您認爲什麼?靜態值vs傳遞參數
2
A
回答
4
我建議你創建一個新類,它表示由各個類(一個「上下文」類,如果你願意的話)執行的聯合操作。執行該操作所需的值可以作爲該上下文中的實例變量以及用於執行該工作的類的實例。
這樣,你就避免了傳遞東西(因爲代碼的發展,這可能會變得有些難看),同時避免了一個「全局」變量。數據完全處於它需要的範圍內,並在整個操作完成時處理。
1
在編碼實踐中,使用靜態變量或全局變量並傳遞參數很不好。
0
如果使用靜態參數,那麼如果在代碼中的多個位置使用這些函數(尤其是涉及線程時),則會冒着損壞數據的風險。
例如,假設A類需要使用對靜態列表起作用的函數。在這些函數完成之前,類B也嘗試使用它們,導致列表從兩個調用中獲取數據,因爲在這兩種情況下都使用相同的靜態列表。
相關問題
- 1. 靜態變量vs參數傳遞
- 2. 傳遞靜態值
- 3. 從C#中靜態Main傳遞參數#
- 4. 按值傳遞vs按多態傳遞參考
- 5. 鑄造vs參數傳遞
- 6. 在靜態方法中傳遞此參數作爲參數
- 7. 將價值傳遞給靜態頁Golang
- 8. 參數傳遞到靜態方法和非靜態方法的區別
- 9. 錯誤在傳遞一個非靜態函數的參數
- 10. 傳遞類的非靜態函數指針作爲參數
- 11. 將靜態變量作爲參數傳遞給函數
- 12. 傳遞靜態成員函數作爲模板參數
- 13. 傳遞一個靜態成員函數作爲參數
- 14. 將參數傳遞給Java中的靜態構造函數?
- 15. 如何引用靜態函數作爲參數傳遞?
- 16. 如何將參數傳遞給靜態類構造函數?
- 17. 使用Intent將參數傳遞給靜態構造函數
- 18. Struts 2:將字符串數組作爲靜態參數傳遞
- 19. 傳遞一個非靜態成員函數作爲參數
- 20. 在靜態void函數中傳遞參數C#
- 21. 傳遞動態參數
- 22. 動態傳遞AJAX參數
- 23. 動態傳遞參數
- 24. 將靜態值傳遞給動態Javascript函數
- 25. 使用我們的傳遞參數分享靜態函數之間的值
- 26. 在VS中傳遞Main(string [] args)參數
- 27. 參數傳遞vs本地存儲
- 28. 如何將參數傳遞給靜態初始化塊
- 29. 傳遞給靜態方法的參數中的線程安全
- 30. 傳遞HttpContext.Request參數或使用靜態實例?
上下文概念抽象在這裏聽起來很合理,雖然我不太清楚確切的問題是什麼,但我不認爲靜態成員是好的做法。 – zinking
@zinking:同意,「靜態」是最佳選擇的情況很少(但有些)。在這裏使用它並不合適。 –