重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
public
成都创新互联公司长期为上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为新和企业提供专业的网站设计、成都做网站,新和网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
structure
struc
public
name
as
string
public
shengao
as
integer
……
end
structure
public
items
as
struc()
readonly
property
people(argname
as
string)
as
struc
get
for
each
i
as
struc
in
items
if
i.name=argname
then
reture
i
next
end
get
end
property
struc可以用class,property可以用function,people通过参数返回一个对象,对象可以来源于某个数组的某个元素,也可以是其他来源。
people也可以是类的
构造方法
,而shengao等是类的成员,但你的写法是错误的,构造方法必须用new
实例化
形参是编写函数(子程序)时定义的参数,实参实调用这个函数(子程序)是传递给函数(子程序)的参数。
Public Sub P_Proc_SheetClear(ByRef oSpr As vaSpread, Optional ByVal StartRow As Long = -1, Optional ByVal EndRow As Long = -1, Optional ByVal StartCol As Long = -1, Optional ByVal EndCol As Long)中的oSpr ,StartRow ,EndRow ,StartCol ,EndCol 就是形参,当你调用这个过程函数的时候,P_Proc_SheetClear()括号里面需要填写的值就是实参
形参就是传递到函数里的参数
实参是函数调用时传递的参数
在要注释的函数上方添加 ‘’‘ (三个)
会自动弹出!
'''summary
''' 这个是函数说明
'''/summary
'''returns返回说明/returns
'''remarks/remarks
详情参考:
这里觉得没有区别,是因为在SubAddRow 里,我们并没有试图改变形参 t 本身,我们所做的改变都是 t.Rows,我们为 t 添加了行。
对于形参和实参而言,在ByVal 模式下 temTable 和 t 指向了同一块内存,但是这两个变量本身并不在同一个地址上。在改变 t.Rows时,由于二者都指向同一块内存,所以更改了t.Rows里的行数据;
在ByRef模式下,temTable 和 t 就是同一块内存,二者在一个地址上,肯定也就指向同一块内存,在改变 t.Rows时,就是对 temTable 的改变。
在此举个例子:假设我们需要将 temTable 清空,那么我们还是以 t 作为形参,我们可以这样写:
' ByVal 方式传参
Private Sub ClearRow(ByVal t As DataTable)
t = Nothing
End Sub
' ByRef 方式传参
Private Sub ClearRow(ByRef t As DataTable)
t = Nothing
End Sub
' 并且这样调用
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
ClearRow(temTable)
DataGridView1.DataSource = temTable
End Sub
这样,就是有区别的了。ByVal方式时,虽然 t 被置为 Nothing ,但是由于 t 和 temTable 并不是一个变量,并不在同一个地址上,所以 temTable 没有变。
而 ByRef 时,t 和 temTable 就是同一个变量,在同一个地址上,t = Nothing的同时,temTable 也就是Nothing了。
如果这个解释还不清楚,可以追问。