使用未分配的局部变量错误

时间:2011-08-21 21:58:02

标签: c# unassigned-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()的输出是一个字符串,我测试了那部分并且它有效。我在上面标记了代码以显示错误发生的位置。需要帮助解决错误以及如何修复它?

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

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

你需要:

Stream PostData = new StreamWriter(filename);

至少。有关各种初始化程序的详细信息,请参阅MSDN documentation

答案 2 :(得分:0)

我想我是在跟你做同样的事情。我使用了一个不需要文件的MemoryStream来实例化。见下面的参考文献:

MemoryStream