如果我在基本上使用流的系统类中使用静态方法,我如何在finally块中关闭它们?我还需要吗?
TextView txt1 = (TextView) findViewById(R.id.textview);
int[] color = {Color.DKGRAY,Color.CYAN};
float[] position = {0, 1};
TileMode tile_mode = TileMode.MIRROR; // or TileMode.REPEAT;
LinearGradient lin_grad = new LinearGradient(0, 0, 0, 50,color,position, tile_mode);
Shader shader_gradient = lin_grad;
txt1.getPaint().setShader(shader_gradient);
这只是我遇到的几个例子,可能还有更多。
答案 0 :(得分:0)
在标准库中,按设计,将IDisposable
对象作为参数的所有内容都不会处置该对象。但是,由于您已经提到static
方法没有将任何IDisposable
对象作为输入并返回任意“非一次性”对象,因此在该调用中也会使用和处理。 / p>
// https://referencesource.microsoft.com/#System.Xml.Linq/System/Xml/Linq/XLinq.cs,4ee76e346bed5a3a
public static XElement Load(string uri, LoadOptions options) {
XmlReaderSettings rs = GetXmlReaderSettings(options);
using (XmlReader r = XmlReader.Create(uri, rs)) {
return Load(r, options);
}
}
如您所见,它处理XmlReader
。
但如果你选择XElement.Load(XmlReader, LoadOptions)
:
public static XElement Load(XmlReader reader, LoadOptions options) {
if (reader == null) throw new ArgumentNullException("reader");
if (reader.MoveToContent() != XmlNodeType.Element) throw new InvalidOperationException(Res.GetString(Res.InvalidOperation_ExpectedNodeType, XmlNodeType.Element, reader.NodeType));
XElement e = new XElement(reader, options);
reader.MoveToContent();
if (!reader.EOF) throw new InvalidOperationException(Res.GetString(Res.InvalidOperation_ExpectedEndOfFile));
return e;
}
您可以看到它没有处理参数传递的流。