類對象可以在類級別的C#中聲明這樣的StreamWriter嗎?我有多個不需要訪問同一個StreamWriter的函數,但是因爲必須使用流的構造函數來啓動它,所以我不知道如何在函數之外聲明它。將對象聲明爲類成員
回答
如果沒有多線程問題,您可以在類之外聲明它,並使用適當的流在函數內初始化它。
但是,根據需要在每個函數內部聲明和初始化流是一種很好的做法。
我該怎麼做?當我在函數之外聲明它時,出現錯誤「非靜態字段,方法或屬性需要對象引用...」 – 2011-03-12 17:39:52
如果我在單個函數中聲明瞭streamwriter,我將會擁有在函數之外聲明我的過程,以便我可以執行myStrmWriter = process.StandardInput;在每個功能中。我能看到的唯一選擇是全局存儲我的進程ID,然後對所有進程進行排序,找到實例等等。這看起來效率很低。 – 2011-03-12 17:42:13
你的意思是做這樣的事情?將它聲明爲你的類的成員,然後在你的構造函數中初始化它。
public class Foo
{
private StreamWriter writer;
public Foo()
{
writer = new StreamWriter(...);
}
}
我這樣做,因爲你列出,並有作家=新的StreamWriter(minecraftProcess.StandardInput.BaseStream);在我的函數中,但仍然得到了編寫器所需的對象引用的錯誤。 – 2011-03-12 17:50:54
然後,您需要發佈一個簡短但完整的示例來演示您的代碼問題。您在構造函數中指定它之前引用'writer'。我們所有人都只能正確回答足夠的信息。如果你像我在這裏那樣在構造函數中實例化'writer',那麼你不應該遇到問題。實際上,這回答了「我如何在課堂級別聲明StreamWriter」,這基本上就是你所要求的。 – Amy 2011-03-13 07:21:20
- 1. 將指針聲明爲類成員C++
- 2. C++:將模板聲明爲類成員
- 3. C++如何聲明對象的向量作爲類的成員
- 4. 何時應該將子對象聲明爲qt中父類的成員變量?
- 5. 成員指向成員對象和聲明順序的指針
- 6. 聲明和定義類成員函數內的函數對象
- 7. 聲明前向聲明的類的成員函數爲朋友
- 8. 未聲明類的類成員
- 9. 將比較器傳遞給聲明爲類成員的priority_queue
- 10. 錯誤TS1112:不能將一個類成員聲明爲可選
- 11. 何時應該將類成員聲明爲虛擬(C#)/ Overridable(VB.NET)?
- 12. 將接口聲明爲類成員有什麼用處?
- 13. 類對象的聲明confucion
- 14. 將屬性聲明爲對象?
- 15. 在python中聲明空類成員
- 16. 在運行時聲明類成員D
- 17. 成員函數在類中聲明
- 18. 靜態類成員聲明錯誤
- 19. 類的聲明沒有私有成員
- 20. 前向聲明的類成員的前向聲明
- 21. 聲明類的成員函數作爲模板類
- 22. 被聲明爲靜態類成員的C++類
- 23. 對象成員的Cython緩衝區聲明
- 24. 如何在聲明時間初始化成員對象?
- 25. 準備聲明:調用非對象上的成員函數
- 26. 在類聲明中聲明一個類對象的指針
- 27. 將公共類中聲明的類成員定義的getters/setters聲明爲private是否有意義?
- 28. 如何將封閉類的朋友聲明爲成員模板類?
- 29. 將一個類的數組聲明爲該類的私有成員?
- 30. 如何將迭代器聲明爲派生類對象?
StreamWriter只是一個幫助程序類,它知道如何將文本(而不是原始二進制文件)寫入流中。您可以在同一個流上創建多個作家。請記住,在StreamWriter上調用Dispose將關閉基礎流(StreamWriter.BaseStream),因此請確保流的生命週期管理在外部,並且不要處置作者。 – Tergiver 2011-03-12 17:44:56
發佈一些示例代碼,顯示您正在嘗試執行的操作。那麼我們可以幫助你。 – 2011-03-12 22:00:56