在New语句之后调用实例方法内联

And*_*der 4 vb.net

我怎样才能将此代码转换为VB.net

public void SetBooks(IEnumerable<Book> books)
    {
        if (books == null)
            throw new ArgumentNullException("books");

        new System.Xml.Linq.XDocument(books).Save(_filename);
    }
Run Code Online (Sandbox Code Playgroud)

http://converter.telerik.com/中它说:

Public Sub SetBooks(books As IEnumerable(Of Book))
        If books Is Nothing Then
            Throw New ArgumentNullException("books")
        End If
        New System.Xml.Linq.XDocument(books).Save(_filename)
End Sub
Run Code Online (Sandbox Code Playgroud)

但是visual studio说"语法错误".因为"新"

这种情况的关键字是什么,我在Google搜索但没有结果.

小智 8

实际上,您可以使用Call关键字在一行中完成

Call (New System.Xml.Linq.XDocument(books)).Save(_filename)
Run Code Online (Sandbox Code Playgroud)


Tim*_*ter 3

您无法初始化一个对象并在 VB.NET 中的一个语句中使用它(与 C# 不同)。你需要两个:

Dim doc = New System.Xml.Linq.XDocument(books)
doc.Save(_filename)
Run Code Online (Sandbox Code Playgroud)

在 C# 中,构造函数返回所创建对象的实例,而在 VB.NET 中则不然。