我可以
std::ostream& out = condition ? std::cout : std::ofstream(filename);
Run Code Online (Sandbox Code Playgroud)
但如果出现这种情况我该如何关闭out = std::ofstream(filename)?
我有一个扩展方法,可以将数值类型 A 的数组转换为数值类型 B 的数组
\npublic static T2[] ConvertTo<T1, T2>(this T1[] buffer)\n{\n var bufferNumBytes = buffer.Length * Marshal.SizeOf(default(T1));\n var targetElementNumBytes = Marshal.SizeOf(default(T2));\n if (bufferNumBytes % targetElementNumBytes != 0)\n {\n throw new ArgumentException($"Array must have multiple of {targetElementNumBytes} bytes, has {bufferNumBytes} bytes instead", nameof(buffer));\n }\n var res = new T2[bufferNumBytes / targetElementNumBytes];\n Buffer.BlockCopy(buffer, 0, res, 0, bufferNumBytes);\n return res;\n}\nRun Code Online (Sandbox Code Playgroud)\n我可以这样称呼它
\n var b = new ushort[] { 1, 256 };\n var us = b.ConvertTo<ushort, byte>();\n\n Assert.That(us[0], Is.EqualTo(1));\n Assert.That(us[1], Is.EqualTo(0));\n …Run Code Online (Sandbox Code Playgroud)