首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

不能用"New"宣言数组

2012-12-21 
不能用New声明数组Public Class DBoperationDim conn As New OleDb.OleDbConnectionDim cmd As New OleD

不能用"New"声明数组
Public Class DBoperation
    Dim conn As New OleDb.OleDbConnection
    Dim cmd As New OleDb.OleDbCommand
    Dim da As New OleDb.OleDbDataAdapter
    Dim dt As New DataTable
    Public Sub New(ByVal connstr As String)
        conn.ConnectionString = connstr
        cmd.Connection = conn
        da.SelectCommand = cmd
    End Sub
    Public Function executesql(ByVal sql As String) As DataTable
        If InStr(LCase(sql), "select") Then
            cmd.CommandText = sql
            conn.Open()
            dt = New DataTable
            da.Fill(dt)
            conn.Close()
            Return dt
        Else
            If InStr(LCase(sql), "delete") Or InStr(LCase(sql), "update") Or InStr(LCase(sql), "insert") Then
                cmd.CommandText = sql
                conn.Open()
                If InStr(LCase(sql), "delete") Then
                    MsgBox("删除记录 " & cmd.ExecuteNonQuery())
                End If
                If InStr(LCase(sql), "update") Then
                    MsgBox("更新记录 " & cmd.ExecuteNonQuery())
                End If
                If InStr(LCase(sql), "insert") Then
                    MsgBox("新增记录 " & cmd.ExecuteNonQuery())
                End If
                conn.Close()
            End If
            Return Nothing
        End If
    End Function
End Class

这是我定义的一个类

然后
Public Class LendInfo
    Dim dboperation1(connstr) As New DBoperation()


    Private Sub LendInfo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim sql As String = "select * from StudentInfo where ID = '" & stuno & "'"
        Dim dt As New DataTable
        dt = dboperation1.executesql(sql)
    End Sub
End Class 其中connstr在公共变量模块中定义了。

为什么会提示:不能用"New"声明数组?
请各位大虾帮帮忙!!
[最优解释]
晕倒,如果不是定义数组,那下面这样就可以了

Dim dboperation1 As New DBoperation(connstr)

或者

Dim dboperation1 As DBoperation=New DBoperation(connstr)

你那方式不对
dboperation1 是变量的名称,你只能对它进行赋值,它又不是方法,可以接受你传的参数
[其他解释]
楼上的讲解很正确,对于一个数组,我们在定义的时候仅仅是定义了一个什么类型的,以及他的长度,并没有对数组中的每一个个体进行实例化,所以必须要对每一个个体进行实例化,才可以调用!

[其他解释]
Dim dboperation1(connstr) As DBoperation
去掉New就可以了
或者像下面这样声明

Dim dboperation1() As DBoperation=New DBoperation(connstr+1){}


[其他解释]

引用:
Public Class DBoperation
Dim conn As New OleDb.OleDbConnection
Dim cmd As New OleDb.OleDbCommand
Dim da As New OleDb.OleDbDataAdapter
Dim dt As New DataTable
Public Sub New(ByVal connstr As Strin……


如果去掉"new",那这个实例dboperation1在后面的代码中将无法使用,vb.net的实例化必须是:
dim 实例名 as new 类名
[其他解释]
引用:
引用:
Public Class DBoperation
Dim conn As New OleDb.OleDbConnection
Dim cmd As New OleDb.OleDbCommand
Dim da As New OleDb.OleDbDataAdapter
Dim dt As New DataTable
Public Sub ……


如果你要实例化那就要用循环进行赋值,实例化的,不能直接对数组那样进行的
Dim dboperation1(connstr) As DBoperation
For i as Integer=0 to dboperation1.Length-1
     dboperation1(i)=New DBoperation
Next

对数组是没有简便方法的


[其他解释]
引用:
楼上的讲解很正确,对于一个数组,我们在定义的时候仅仅是定义了一个什么类型的,以及他的长度,并没有对数组中的每一个个体进行实例化,所以必须要对每一个个体进行实例化,才可以调用!


我想再重新说一下,看来大家没有仔细看代码,DBoperation 是我定义的一个类,Public Class DBoperation
Public Sub New(ByVal connstr As String)
conn.ConnectionString = connstr
cmd.Connection = conn
da.SelectCommand = cmd
End Sub
End Class

构造函数中有一个参数,connstr,这里构造函数的作用只是连接数据库。


DBoperation 既然是一个类,那么我用的时候就得实例化,所以dboperation1是一个对象,
dim dboperation(connstr) as new dboperation
但是这里出了错误,就像帖子的标题:不能用“new ”声明数组,
我认为这里不该错,
我的代码整个过程与数组无关。


[其他解释]
http://blog.csdn.net/WizardWu/archive/2008/06/25/4680923.aspx


[其他解释]

引用:
http://blog.csdn.net/WizardWu/archive/2008/06/25/4680923.aspx


非常感谢!
[其他解释]
感谢 xingyuebuyu  和  shaozengwei    解决了我的问题
[其他解释]
非常感谢 xingyuebuyu,这个问题一直折腾了我一天,看到你的帖子,我终于解决了我的问题了,太感谢了!
[其他解释]
谢谢,我也明白了。原来括号要放到后面去。

热点排行