c# stream best practices