ArrayList in VB.NET Class

I am creating my first ever custom class.

Code currently us...

Public Class AQL_SMS
    Public Username As String
    Public Password As String
    Public Destination As ArrayList
    Public Message As String
    Public Originator As String
    Public Max_Concat As String
    Public Sendtime As Date
    Public Unix_Sendtime As Integer
    Public ReplaceSMS As Boolean
    Public Flash As Boolean
    Public Dlr_URL As String

    Public Sub New(ByVal _username As String, ByVal _password As String)
        Username = _username
        Password = _password
    End Sub


    Public ReadOnly Property Destinations As String
        Get
            Dim tmpjoin As String = ""
            Dim str As String
            For Each str In Destination
                tmpjoin = String.Concat(tmpjoin, str.ToString & ",")
            Next
            tmpjoin = tmpjoin.Substring(0, tmpjoin.Length - 1)
            Return tmpjoin
        End Get
    End Property
End Class

Open in new window


This is a class based upon http://www.aql.com/sms/integrated/sms-api/

I have set Destination as an ArrayList as it should be able to contain multiple destination numbers.

I have declared in my progect code as follows...

Public Class frmClassView
    Public SMS As New AQL_SMS("my_username", "my_password")

    Private Sub btbSMS_Click(sender As System.Object, e As System.EventArgs) Handles btbSMS.Click
        SMS.Destination.Add("01234567891")
        SMS.Destination.Add("01234567891")

        tmrAutoSMSPropertyCheck.Start()
    End Sub

    Private Sub tmrAutoSMSPropertyCheck_Tick(sender As System.Object, e As System.EventArgs) Handles tmrAutoSMSPropertyCheck.Tick
        lblUsername.Text = SMS.Username
        lblPassword.Text = SMS.Password
        lblDestination.Text = SMS.Destinations
        lblMessage.Text = SMS.Message
        lblOriginator.Text = SMS.Originator
        lblMax_Concat.Text = SMS.Max_Concat
        lblSendtime.Text = SMS.Sendtime
        lblUnix_Sendtime.Text = SMS.Unix_Sendtime
        lblReplaceSMS.Text = SMS.ReplaceSMS
        lblFlash.Text = SMS.Flash
        lblDlr_URL.Text = SMS.Dlr_URL
    End Sub
End Class

Open in new window


However I get the error...

System.NullReferenceException was unhandled
  Message=Object reference not set to an instance of an object.
  Source=WindowsApplication1
  StackTrace:
       at WindowsApplication1.frmClassView.btbSMS_Click(Object sender, EventArgs e) in C:\Users\terry\AppData\Local\Temporary Projects\WindowsApplication1\frmClassView.vb:line 5
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
       at WindowsApplication1.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException:

at the

SMS.Destination.Add("01234567891")

Open in new window


line.

Why, and how do I fix this to work as I expect it to?
LVL 1
Terry RogersIT Senior EngineerAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Dirk HaestProject managerCommented:
The object is not yet declared.
You can easily solve it in your constructor

Public Sub New(ByVal _username As String, ByVal _password As String)
        Username = _username
        Password = _password
        Destination = new ArrayList()

    End Sub
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
nepaluzCommented:
A Couple of things.
1.This line
Public SMS As New AQL_SMS("my_username", "my_password")

Open in new window

should give you an error as it should be
Public SMS As New AQL_SMS With {.Username = "my_username", .Password = "my_password"}

Open in new window

2.  you have to create your ArrayList (or initialise it) then pass it to your initialised class,e.g
SMS.Destination = New ArrayList From {"01234567891", "01234567891"}

Open in new window

or
Dim Dest As New ArrayList
Dest.Add("01234567891")
Dest.Add("01234567891")
SMS.Destination = Dest

Open in new window

0
Terry RogersIT Senior EngineerAuthor Commented:
This worked perfectly. Thankyou! :)
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic.NET

From novice to tech pro — start learning today.