1

在 AWS Kinesis Client Library (KCL)中有一个示例生成器,其中包含以下代码:

for (int j = 0; j < 10; ++j)
            {
                PutRecordRequest requestRecord = new PutRecordRequest();
                requestRecord.StreamName = myStreamName;
                requestRecord.Data = new MemoryStream(Encoding.UTF8.GetBytes("testData-" + j));
                requestRecord.PartitionKey = "partitionKey-" + j;
                PutRecordResult putResult = kinesisClient.PutRecord(requestRecord);
                Console.Error.WriteLine(
                    String.Format("Successfully putrecord {0}:\n\t partition key = {1,15}, shard ID = {2}",
                        j, requestRecord.PartitionKey, putResult.ShardId));
            }

为什么 MemoryStream 会这样?他们不应该处理流吗?谢谢

4

1 回答 1

1

MemoryStream不需要处置,因为它不保留非托管资源。仍然将其丢弃是一个好习惯,以便按照惯例处理任何可丢弃的资源。如果这会使代码变得笨拙,则可以不这样做。这是安全的,而不是代码气味。

于 2015-07-12T13:50:31.980 回答