-1

我收到一个错误:

“使用未分配的局部变量‘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()是一个字符串,我测试了该部分并且它有效。我标记了上面的代码以显示错误发生的位置。需要有关错误的帮助以及如何修复它?

4

3 回答 3

5

您从未为PostData. 因此,它的默认值是null并且编译器足够聪明地告诉你这是一件坏事(如果它允许你的代码原样,你将得到一个 runtime NullReferenceException)。您需要实例化一个类的实例Stream(Stream是抽象的,因此您需要一个具体实例) 并将其分配给PostData.

于 2011-08-21T22:00:47.617 回答
3

您已声明PostData,但未对其进行初始化。

你需要有:

Stream PostData = new StreamWriter(filename);

至少。有关各种初始化程序的更多信息,请参阅MSDN 文档

于 2011-08-21T22:03:18.103 回答
0

我想我和你一样。我使用了一个不需要文件来实例化的 MemoryStream。请参阅下面的参考:

记忆流

于 2013-12-01T22:26:18.123 回答