首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Byref新对象。是否可以将New Object作为"byref“传递

Byref新对象。是否可以将New Object作为"byref“传递
EN

Stack Overflow用户
提问于 2009-09-07 16:02:10
回答 2查看 1.4K关注 0票数 0

下面我试着做一个例子:

代码语言:javascript
运行
复制
Public Function UserData(ByVal UserDN As String) As DataTable
    Dim myTable As DataTable = UserData_Table()
    Dim dr As DataRow

    dr = myTable.NewRow()
    SplitOU2(UserDN, dr("OUDN"), dr("Organisation"), New Object)
    dr("UserDN") = UserDN

    myTable.Rows.Add(dr)

    Return myTable
End Function

下面是被调用的方法:

代码语言:javascript
运行
复制
Friend Sub SplitOU2(ByVal inDN As String, ByRef OUDN As Object, ByRef Organisation As Object, ByRef VerksamhetTyp As Object)

通过这样做,我可以跳过在这个例子中声明“无用的”变量Dim VerksamhetTyp as Object = ""

也许它看起来有点丑陋,但必须声明未使用的变量也可能会让人感到困惑。

EN

回答 2

Stack Overflow用户

发布于 2009-09-07 16:08:14

摘要:检查方法是否真的需要这些参数为ByRef。还要检查你是否真的不关心它对参数做的任何事情。经过严格的检查后,这样做是可以的-在CLR方面不会发生任何“坏”的事情,因为这只是一个隐藏在引擎盖下的编译器技巧。

嗯,VB (不像C#)可以让你做到这一点。在幕后,它有效地创建了一个新变量并通过引用传递它-毕竟,它必须这样做才能正确调用方法。然而,我想说这通常是一个坏主意。ByRef的要点是在方法中设置好值之后再使用它。

首先,您真的需要所有这些参数都是ByRef吗?如果你发现自己为一个特定的方法做了很多这样的事情,你总是可以编写一个包装器方法来调用原来的方法,但是没有ByRef参数本身。

(我通常发现,带有大量ByRef参数的方法要么表示不了解.NET中的引用类型,要么表示参数应该封装在它们自己的类型中。)

话虽如此,在调用方法之后忽略ByRef参数的值并不总是不正确的。例如,如果您只想知道是否可以将某些文本解析为整数,那么使用Int32.TryParse是合理的-但只有返回值对您有用。

票数 0
EN

Stack Overflow用户

发布于 2009-09-07 16:45:20

我之所以考虑使用这个方法,是因为该方法有更多的参数,并且不同的操作重载获得相同的签名…。它工作的事实是相当有趣的,我偶然成为了awaraeóff…

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1390001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档