Why Do Initialize Variables?
Nov 1, 2011Take a look at this code
[CODE]:....................
Take a look at this code
[CODE]:....................
I have classes similar the following:
[Code]...
I want the Name property of the Dings class to be initialised at first, I know, I could also create the foo-object (as member of dings) later in the constructor. But I want to have it this way, because in the end there are very much singleton objects instantiated in the Dings-class that I want to be created in only one line.
[Code]...
After debugging a particularly tricky issue in VB.NET involving the order in which instance variables are initialized, I discovered that there is a breaking discrepancy between the behavior that I expected from C# and the actual behavior in VB.NET.Nota bene: This question concerns a slight discrepancy in the behaviors of VB.NET and C#. If you're a language bigot that is unable to provide an answer other than "that's why you should use C#, noob", there is nothing for you to see here; kindly move along.Specifically, I expected the behavior outlined by the C# Language Specification (emphasis added):
When an instance constructor has no constructor initializer, or it has a constructor initializer of the form base(...), that constructor implicitly performs the initializations specified by the variable-initializers of the instance fields declared in its class. This corresponds to a sequence of assignments that are executed immediately upon entry to the constructor and before the implicit invocation of the direct base class constructor. The variable initializers are executed in the textual order in which they appear in the class declaration.
Contrast that with the portion of the VB.NET Language Specification concerning Instance Constructors, which says (emphasis added): When a constructor's first statement is of the form MyBase.New(...), the constructor implicitly performs the initializations specified by the variable initializers of the instance variables declared in the type. This corresponds to a sequence of assignments that are executed immediately after invoking the direct base type constructor. Such ordering ensures that all base instance variables are initialized by their variable initializers before any statements that have access to the instance are executed.
The discrepancy here is immediately obvious. C# initializes class-level variables before calling the base constructor. VB.NET does exactly the reverse, apparently preferring to call the base constructor before setting the values of instance fields.If you want to see some code, this related question provides a more concrete example of the divergent behavior. Unfortunately, it does not provide any hints as to how one might coerce VB.NET into following the model established by C#.
I'm less interested in why the designers of the two languages chose such divergent approaches than I am in possible workarounds for the problem. Ultimately, my question is as follows: Is there any way that I can write or structure my code in VB.NET to force instance variables to be initialized before the base type's constructor is called, as is the standard behavior in C#?
Last year (2010) I came across a FANTASTIC command that allowed me to take a string of variables with a common delimiter and break it all back out into separate variables (possibly an array) with one statement.
[Code]...
As long as the delimiter was a unique specifiable character, this one-statement command could break it out into elements. my memory and point me in the right direction.
I have code, shown below, that works all except for 1 thing: The variables being passed byRef get passed, but once modified in the else section of the "if me.invokerequired" code of RecordData, the variables are never updated in the calling function. To reiterate, the calling function does not receive the updated data that is in the variables custid and amt.When debugging, I see the data change in the else section of "if me.invokerequired", but once it returns from the callback the data is missing.[code]
View 15 RepliesI define some global variables of a class as follows:
Private Class MyClass
Private var1 as Decimal
Private list1 as List(Of string)[code].....
But I found that after this form is closed, all above variables, var1, list1, list2 still exist in memory. I thought they should be collected by gc since the form is already disposed as I confirmed.
Add: I have monitored half an hour after the form is closed. But these variables are not collected by gc. I have an automatic update procedure on the form which uses above variables.Since the above variables still hold values, the automatic update procedure is always called which causes exception. (One quick fix is to check if form.isDisposed in update procedure. But I do not think this is elegeant. Besides, these variables occupy memory.)
Does the memory used in declaring variables are reclaimed by the OS when these variables go out of scope?Does the memory used be released by setting thier value to nothing? if not, then how can I force the garbage collector to run or excecute at a certain/desired time..How about in Windows Forms..How can we make sure that the memory used in initializing and showing forms be released if those forms were closed?
View 13 RepliesQuestion 1: What is the difference between "Background Worker" and "Worker Pool" as indicated within the MSDN samples provided.
Question 2: I noticed while using, AddressOf _Function_, variables cannot be passed; what would be an efficient solution to this?
Question 3: While using multithreading is it required to invoke before setting variables, or only form properties?
Question 4: While using System.Net.Sockets is it safe/efficient to use Application.DoEvents while waiting for new data; or would be using a Do While loop be fine without DoEvents since the action would be multithreaded? Note: there can be up to 2000-3000 sockets in use at a time.
I'm new in .NET programming.I have a class Form1 that includes Button1_Click event.Button1_Click creates a multiple Text Boxies at run time)Here is the class:
Public Class Form1
Dim shiftDown As Integer
Dim counter As Integer
[code].....
Sometimes there is a need to initialize the singleton class with some helper values. But we can't "publish" a constructor for it. What is the workaround for this?overloading the GetInstance or setting a color is not my idea. The color should be set only once. I would like to be sure that MyPainter paints ONLY with the initialized color. Any default color should ever be used.
For more clarity I provide a sample:
''' <summary>
''' Singleton class MyPainter
''' </summary>
Public Class MyPainter
[code]....
How can i initialize a CBoolProperty? [code]but when i debug. m_bHeight.Value is always true until i set bHeight with false. I want to initialize it to false.
View 5 RepliesI can create an ArrayList, but, is it possible to create it WITH some elements already?Normally, your arrays are empty, but what if I want to create an array with a few elements already?
View 2 Replies.Net application failed to initialize
View 7 RepliesI'm Trying to populate an ASPXComboBox using the InitNewRow event for inserting a new row, but I'm having problems binding the data to the ASPXComboBox.
I have used the CellEditorInitialize event for editing the row and it works fine, but the same principal on the InitNewRow event comes up with an 'object not set to an instance of an object' exception. However, the business logic function which is called returns a fully populated DataTable.
The following code:
CodeVariableDeclarationStatement variableDeclaration = new CodeVariableDeclarationStatement(
// Type of the variable to declare.
typeof(string),
// Name of the variable to declare.
"TestString");
Produces the following VB.Net Statement:
Dim TestString As String
What change would I need to make for it to look like this:
Dim TestString As New StringBuilder()
I'm interested in how to get that NEW keyword to appear.
working on some partial classes but I ct figure out how to do it.This is my classes:
Partial Public Class Form
Private InfoField() As Info
Private FormgroupField() As FormGroup
[code].....
I have created a web application in ASP.NET using VB.NET as code behind file. I am using a COM object of ProvideX.Script class to connect to Sage MAS90 ERP. Everything was working fine in visual studio 2010. Now when I moved to the deployment phase, the problem gets started. I deployed my application in Windows Server 2008 in IIS7. When I run the application I get the following exception.[code]...
View 2 RepliesI define a arrary.
Dim myStr(100) as string.
Then the length of this array is still 0. Then is risky to cross the bound. So how to intialize this array without using a loop?
Dim pix() As new List(Of String) = {"*.jpg", "*.avi", "*.mov"}
Dim pix As new List(Of String)() = {"*.jpg", "*.avi", "*.mov"}
Dim pix() As List(Of String) = {"*.jpg", "*.avi", "*.mov"}
Dim pix As List(Of String)() = {"*.jpg", "*.avi", "*.mov"}
Does it matter where the () are?
What difference does New make?
I have a form with multiple comboboxs. Those combo box are not in array. I need to made them start with the first value. Because i do not like to initialize one by one i try to do with the following code but it is seem not working.
For Each Control In Me.Controls
If TypeOf (Control) Is ComboBox Then
Control.SelectedIndex = 0
End If
i am using visual basic 2010.
is there a shorter way to create an array of 215 boolean 'true's than the following?
Dim ArrayOfBits As Boolean() = {True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True,
[code]....
I have a program that must initialize a table that is usually about 10-15 thousand records. I have attempted several means to empty the records from it, but it always takes several minutes to accomplish the task or in some cases like a 'bindingsource.clear' command, doesn't work at all. I currently have it working using a simple loop to go through each record at a time and 'removecurrent'. but this seems extremely inefficient and it is quite slow.The real time consumer seems to come in with the tableadapter.update and tableadapter.fill that happens after the loop.[code]
View 6 RepliesI was wondering with Sendkeys, when I try to do sendkeys with a normal letter key on the keyboard with:
Sendkeys.Send("{A}")
Does it send in a char value of the A or the actual keypress?
I have this in a timer:
[Code]...
But when I try to use it, it doesn't seem to be sending "A" and "S" as keypresses. With F9, I go into notepad and it does in fact alternate between the two as I can see "A" and "S" in the text area, but when I can't see whats going on, and I need a keypress of those two keys, it doesn't seem to work.
Sorry if this is an inadequate method for doing it, if you have a better method then sure i'd like to know, but this is just a really quick test.
After i upgraded my project, i get this :'UPGRADE_WARNING: Event Text1.TextChanged may fire when form is initialized.And when i run project, it fires and do bad stuff, what can i do?
View 1 RepliesAssuming the array has 216 elements:
Dim Data As Integer() = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
[code].....
Have a look at this code:
Public Class PropertiesTest
Dim num1 As Integer
Dim num2 As Integer
Public Property Assign() As Integer
[Code] .....
Here Assign property is initializing and returning more than one values, but without any use? Since, when I create object of this class , it is returning only one value. So what is the use of allowing such type of initialization and return statement?
I am making a simple home inventoy windows form that uses writing to a text file, reading to a text file, and arrays of structures. The first two I have a good idea how to handle but, the third one is where i have a little trouble. I dont know how to initaializing the data in my structure, how do i initialize the initial position since it has no length? I have initialized them in my module [code]now i need to assign the first value to it, but im not really sure how without anything in it to use my length method
View 6 RepliesI am trying to install my vb.net application on the other system.I have installed the whole vs on this system too but still getting the error "Application failed to initialize properly".I have .net2.0.This appl can be installed on the system where it is developed.
View 3 RepliesIn java I use the Desktop application as under;Create JFrame Add JdesktopPane and in the Jframe constructor intilize the all the child forms and then in the events i use child form.visible method.But in the VB where is best technoque to use child forms to initilize?i also need a piece of code for the application to learn how effectively i use the VB to develop MDI application.
View 1 RepliesI was looking on the interweb to see if there were any good examples on how to initialize shared members within a class while still initializing instance variables.[code]How do I initialize both instance and shared members without re-initializing the shared members every time an object is created from a class?
View 1 Replies