Here's more detail on memory usage/location:
Sample Stack allocated struct:
public struct myReadResult {
public int BytesRead;
public bool Success;
}
...
public void ReadComplete(String theLine) {
ReadResult br; //Notice, no assignment or new keyword
br.BytesRead = theLine.Length;
br.Success = true;
return br;
}