2011-08-21 43 views
-1

的我收到一個錯誤:使用未分配的局部變量錯誤

"Use of unassigned local variable 'PostData'"

編譯下面的方法中下面的語句時。我的意圖是獲取包含XML SOAP標頭的「字符串」值,並將其轉換爲XMLDictionaryWriter對象。見下面我的代碼:

Stream PostData; 
byte[] buffer = Encoding.ASCII.GetBytes(x509.CreateX509SoapEnvelope()); 
PostData.Write(buffer, 0, buffer.Length); // error here 
XmlDictionaryWriter xmlwriter = XmlDictionaryWriter.CreateTextWriter(PostData, Encoding.ASCII); 
request.Headers.WriteHeaderContents(0,xmlwriter); 

僅供參考,的x509.CreateX509SoapEnvelope()輸出是一個字符串,我測試的一部分,它的工作原理。我標記了上面的代碼以顯示錯誤發生的位置。需要幫助解決錯誤以及如何解決它?

+1

是整個代碼塊嗎?你聲明'Stream PostData',但沒有將它構造成任何東西,所以它只是坐在'null'中。當你對它做'.Write'時,你會得到一個空引用異常。 – debracey

+0

XmlDictionaryWriter.CreateTextWriter接受流類型,因此我需要將我的字符串值轉換爲流,然後在XMLDictionaryWriter實例化時將其作爲參數傳遞。有沒有更好的方法來修改我的代碼? – wcfvemi

回答

5

您從未將值分配給PostData。因此,它的默認值是null,編譯器足夠聰明,可以告訴你這是一件壞事(如果它允許你的代碼原樣,你將得到一個運行時間NullReferenceException)。您需要實例化一個類爲StreamStream是抽象的,因此您需要一個具體實例)的實例並將其分配給PostData

+0

我的計劃是採取字符串輸出,並將其作爲參數傳遞給WriteHeaderContents方法,該方法可以接受XMLDictionaryWrite或XMLWriter類型..有沒有更好的方法來做到這一點? – wcfvemi

3

您已聲明PostData,但未初始化它。

你需要有:

Stream PostData = new StreamWriter(filename); 

在最低限度。有關各種初始程序的更多信息,請參閱MSDN documentation

+1

-1錯誤拼寫「已初始化」。 –

+0

我沒有指定..的文件名,但我需要將「string」輸出的內容寫入Stream。我如何實例化以適應這種情況? – wcfvemi

0

我想我是在跟你一樣的事情。我使用了一個不需要文件來實例化的MemoryStream。請參閱下面的參考:

MemoryStream

相關問題