Is it ok to instance a MemoryStream at the top of my method, do a bunch of stuff to it, and then use it?

For instance:

```
public static byte[] TestCode()
{
  MemoryStream m = new MemoryStream();
  ...
  ...
  whole bunch of stuff in between
  ...
  ...

  //finally

  using(m)
  {
     return m.ToArray();
  }
}

```

**Updated code**

```
public static byte[] GetSamplePDF()
{
    using (MemoryStream m = new MemoryStream())
    {
        Document document = new Document();

        PdfWriter.GetInstance(document, m);

        document.Open();

        PopulateTheDocument(document);

        document.Close();

        return m.ToArray();
    }
}

private static void PopulateTheDocument(Document document)
{
    Table aTable = new Table(2, 2);
    aTable.AddCell("0.0");
    aTable.AddCell("0.1");
    aTable.AddCell("1.0");
    aTable.AddCell("1.1");

    document.Add(aTable);

    for (int i = 0; i < 20; i++)
    {
        document.Add(new Phrase("Hello World, Hello Sun, Hello Moon, Hello Stars, Hello Sea, Hello Land, Hello People. "));
    }

}

```

My point was to try to reuse building the byte code. In other words, build up any kind of document and then send it to TestCode() method.