Действительно ли возможно осуществить использование оператора использования в C#

Вы можете использовать API-интерфейсы spark-xml из Databricks для сохранения фрейма данных spark в xml-файл. Нечто подобное ниже ..

val selectedData = df.select("author", "_id")
selectedData.write
    .format("com.databricks.spark.xml")
    .option("rootTag", "books")
    .option("rowTag", "book")
    .save("newbooks.xml")

"com.databricks" %% "spark-xml" % "0.4.1"

6
задан SilentGhost 15 April 2009 в 10:09
поделиться

3 ответа

Well, there's one way you could sort of do it - only allow access to your object via a static method which takes a delegate. As a very much simplified example (as obviously there are many different ways of opening a file - read/write etc):

public static void WorkWithFile(string filename, Action<FileStream> action)
{
    using (FileStream stream = File.OpenRead(filename))
    {
        action(stream);
    }
}

If the only things capable of creating an instance of your disposable object are methods within your own class, you can make sure they get used appropriately. Admittedly there's nothing to stop the delegate from taking a copy of the reference and trying to use it later, but that's not quite the same problem.

This technique severely limits what you can do with your object, of course - but in some cases it may be useful.

13
ответ дан 8 December 2019 в 14:47
поделиться

Вы можете использовать FxCop для применения этого правила. См. Википедию для краткого обзора .

3
ответ дан 8 December 2019 в 14:47
поделиться

Если вы хотите, чтобы ваш объект всегда был расположен, используйте финализатор в сочетании с IDisposable.

Но прежде вы читаете об IDisposable и финализаторах и помните о том, что они обычно вам не нужны, если ваш класс не делает что-то вроде управления временем жизни неуправляемого ресурса.

С помощью финализатора ваш объект будет восстановлен «в конце концов», независимо от того, завернуты ли они в использование или нет. Оператор using, который удобен для IDisposable, позволяет выполнять детерминированную очистку. Единственное предостережение в том, что объект с финализаторами более дорогостоящий для очистки и, как правило, дольше остается в памяти, ожидая завершения.

ref Когда мне нужно реализовать финализатор или IDisposable? или technorabble: Использование утилизации, финализаторов и IDisposable

0
ответ дан 8 December 2019 в 14:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: