Difference Between Using .GetValueOrDefault(0) And If(variable, 0) With Nullable Types?
Mar 9, 2010
Is there any difference between the 2 methods below for calculating c ... specifically boxing/unboxing issues?
Dim a As Integer? = 10
Dim b As Integer? = Nothing
Dim c As Integer
' Method 1
[code]....
View 3 Replies
ADVERTISEMENT
Aug 27, 2010
I have: Dim nVar1 As Long?Dim nVar2 As Long?Dim nVarSum As Long?nVar1 = Nothing nVar2 = 5 nVarSum = nVar1 + nVar2 I would prefer the result to end with nVarSum being 5, instead of Nothing. I understand if you add something to an unknown value, you will end up with "somthing + unknown" or x+5 will always equal "x+5" not "5" because you are still carrying around that unknown "x". However, how can I effectively treat an unknown or Nothing as a zero for the purposes of addition in this case?(What is basically happening is that the end user is sending us a data file, this code parses that file and then sums together about 15 fields. If the user leaves those fields blank instead of assigning a zero to them, I need to treat it as if it was a zero for this one addition operation, but all the rest of the code needs to continue seeing it as a Nothing value since the user did not ACTUALLY submit zero... they submitted blank or nothing)
View 3 Replies
Jun 27, 2012
Can Nullable Types be used in VB.NET? If so, is it possible to have a Nullable Integer that I can use with a field that accepts NULL in SQL Server?
View 4 Replies
Aug 25, 2010
I'm converting an Access VBA app to VB.NET. It has dates defined as variants or objects to handle null values. I thought this would be a great chance to use the Nullable type. But I can't get it to work. Either it is inappropriate for what I am trying to use it for, or I am doing it wrong. Anyone know how to use it? Reader is a SqlDataReader.
[Code]...
I was hoping I didn't have to put a lot of If .. Null statements throughtout the code, but that is my only option unless someone has any other idea.
View 11 Replies
Feb 15, 2011
C#'s 'as' keyword will let you do this: int? input = value as int? Here's what I would assume the vb.net equivalent would be: Dim input As Integer? = TryCast(value, Integer?) There's an intellisense error in the TryCast stating the operand must be a reference type but Integer? is a value type.
Intellisense on Nullable(Of Integer) says 'Represents an object whose underlying type is a value type that can also be assigned null like a reference type.' It seems C#'s 'as' handles this like a reference type where TryCast doesn't have this built in. In VB10 I was able to take advantage of the new CTypeDynamic function to do the casting. Conversion.CTypeDynamic Method
Dim input As Integer? = CTypeDynamic(Of Integer?)(value)
Or:
Dim input As Integer? = CTypeDynamic(Value, GetType(Integer?))
There's a cost here as CTypeDynamic examines the type at runtime.
My question is what is the elegant way to handle this without CTypeDynamic?
View 6 Replies
Nov 15, 2011
Dim input As Integer? = TryCast(value, Integer?)There's an intellisense error in the TryCast stating the operand must be a reference type but Integer? is a value type.Intellisense on Nullable(Of Integer) says 'Represents an object whose underlying type is a value type that can also be assigned null like a reference type.'It seems C#'s 'as' handles this like a reference type where TryCast doesn't have this built in.
View 1 Replies
Aug 24, 2011
I have recently been working on a number of sections of code that deal with the insertion of Nullable types into a database. As I'm sure anyone who has dealt with similar code will be aware of the annoyance of constantly writing conditional logic to deal with the insertion of nulls into a database. I.e.:
MyValue.HasValue ? MyValue.Value : DBNull.Value;
If(MyValue.HasValue, MyValue.Value, DBNull.Value)
Basically I am just wondering why DBNull.Value exists and why Null simply couldn't be used?
View 1 Replies
Jan 17, 2010
It seems like overkill to set the value of a nullable type and implement iNotifyPropertyChanged. Is there a better way of doing this?
[Code]...
View 2 Replies
May 4, 2012
I am trying to query for records where that column IS NULL:
Dim UnassignedSubSvc =
From c In CurrentContext.SubService
Where c.Product.ProductSubServiceId **is null**
Select c).ToList()
View 1 Replies
Mar 1, 2012
I have the following NHibernate Linq query:
From eachLine In myNhSession(Of SamplePoco)()
Where eachLine.SampleIntField = 1234
The property SamplePoco.SampleIntField is type Nullable(Of Int32)
When I run the query, I get the following exception:
System.InvalidCastException: Unable to cast object of type 'NHibernate.Hql.Ast.HqlCoalesce' to type 'NHibernate.Hql.Ast.HqlBooleanExpression'
If I change the property type to Int32, it works. It seems that Nullable types are automatically converted into a coalesce expression by the Linq compiler.
Debugging the NHibernate, I just found out that this Where clause was converted into: {where ((eachLine.SampleIntField == 1234) ?? False)}. As I can understand, the whole condition comparison was translated to be coalesced instead of just the Nullable property.
If I put this way eachLine.SampleIntField.Equals(1234) it doesn't work as well ('Equals not implemented' exception)
If I change the query to the following code, it works:
From eachLine In myNhSession(Of SamplePoco)()
Where {1234}.Contains(eachLine.SampleIntField)
Another code that works as well (coalescing the field properly as I was expecting by the first query):
From eachLine In myNhSession(Of SamplePoco)()
Where If(eachLine.SampleIntField,0) = 1234
View 1 Replies
Jan 9, 2011
I have a class that implements a range of numbers....call it NumericRange(Of T). Internally, NumericRange stores T as a Nullable, T?. I have another class that wraps this class as NumericRange(Of UInt16). Call this class MyNumRange (I'm being simplistic here). So In MyNumRange, I have a few constructors defined:
[Code]....
View 2 Replies
Dec 8, 2011
I'm trying to do something similar to what's described here, but with nullable types.
[URL]
int availableUnits = unitsInStock ?? 0;
In VB, it would be this:
Dim availableUnits As Int32 = If(unitsInStock, 0)
However I'm working with db columns, which could be DbNull, and nullable types, which can be Nothing (which is different to DbNull). If a column is DbNull, I want to return Nothing, otherwise return the value. For eg:
Dim availableUnits As Int32? = If(myDataReader("UnitsInStock").Value, Nothing)
The error I'm getting is "Specified cast is not valid" but I'm not sure why. I've tried this as well:
Dim availableUnits As Int32? = If(isDbNull(myDataReader("UnitsInStock").Value), myDataReader("UnitsInStock").Value, Nothing)
Which is messy and just results in the same error. The only thing that works is this:
Dim availableUnits As Int32?
If isDbNull(myDataReader("UnitsInStock").Value) Then
availableUnits = myDataReader("UnitsInStock").Value
Else
availableUnits = Nothing
End If
Which is just silly. Is there a better way of getting nullable db values into nullable variables that I'm not aware of?
View 3 Replies
Jul 21, 2011
I'm using my data objects in a crystal report. The thing is, when I select my object, it gets added to the field explorer table. My properties are listed except for the Nullable Type properties. Why would this happen. I've had quite a few issues yesterday as this is my first attempt at a crystal report in .Net. I thought I worked around them but now I've hit this snag.
View 11 Replies
Jan 10, 2012
Is there a technical reason why there is no implicit conversion from DBNull to the various nullable and/or sql types? I understand why the conversions don't currently happen, but don't understand why an implicit conversion wasn't created at the time or added in subsequent versions of the framework.Just to be clear, I'm looking for technical reasons, not "because that's they way they did it" or "I like it that way".
View 2 Replies
Jul 6, 2011
I have written an application which manages some bookings, and want to use Crystal Reports to provide the reporting engine. I have used it before with datasets with no problems.
I am using EF4, and have a LINQ query and report datasource assignment as below:
Code:
Dim ActiveCustomers = From Customer In FMEntities.Customers
Where Customer.Status = 1
Select Customer
[Code].....
I have read up that I may need to convert the incoming data, but I am confused as to what it needs to be converted to. Should it be a datatable?
View 1 Replies
Dec 27, 2011
I have two dbf tables and must compare them by column (field) types. For example:
Table1: Id (Numeric) | Name (Character) | Salary (Numeric)
Table2: Id (Numeric) | Name (Character) | Salary (Float)
With these two tables program should display message like (types do not match in field SALARY [F <> N]) where F is float and N is numeric.
View 1 Replies
Dec 14, 2011
I have a generic Class I'm using to hold information loaded from a database.I have a method which takes a DataRow as an argument, uses the object's known column name and extracts the data from the DataRow, such that:Dim loadData As T = CType(myDataRow("myColumnName"), T))works as my default assignment in most cases.Unfortunately, due to some horrifying design constraints, some of my columns may be null, and may also be taken from enumerations.This means that when <T> is Nullable(Of SomeEnumeration) the above code does not work because I can't cast 0 directly to SomeEnumeration.Zero.Is there some way to check whether <T> is Nullable(Of [Enum])? Or some way to write a method which allows Integers to be cast to Nullable(Of [Enum])?I feel like I'm forgetting something that would allow me to write one of the other of these, but my weak google-fu is turning up nothing.
EDIT: Okay, thanks to dasblinkenlight's answer below, I can detect when this circumstance is occurring, but what I need to do now is to take a type <T> which I know is Nullable(Of SomeClass), get a type reference to SomeClass and then create a new object of type Nullable(Of SomeClass) and assign that to LoadData.My problem was that I had a lot of difficulty in finding any function which would accept baseType as an actual Type.Parse accepted baseType as a parameter, I knew baseType was an [Enum] type because of dasblinkenlight's code, so I was, in this instance, able to code a solution. It's a solution which is very specific to my problem (i.e., T is Nullable(of SomeEnumeration)), but it's a solution nonetheless.
View 2 Replies
Oct 2, 2009
Im working on my first n-tier application. I am trying to serialize a structure and Im getting an error"Soap Serializer does not support serializing Generic Types : System.Nullable`1[System.DateTime]."Here is the structure that is being serialized
Namespace Structures
<Serializable()> _
Public Structure structAllergy
Public AllergyID As String
Public ProfileID As String
[code]....
The bold line is the line that is throwing the error.
View 1 Replies
Jan 16, 2012
I'm trying to check if a variable has been defined as a nullable Guid. eg.
Dim myGuid As Nullable(Of Guid) or Dim myGuid As Guid?
It seems doing a myGuid.GetType returns the underlying type, that is type Guid, not Guid?. So testing myGuid.GetType Is GetType(Guid?) always returns False.How do I find out if myGuid is a nullable type?
Ed: I can do the following, which correctly returns True for "Guid?" and False for "Guid":
Not Nullable.GetUnderlyingType(GetType(Guid?)) Is Nothing
The problem is that I don't know how to retrieve the nullable type from the variable itself, in order to test it. I've only been able to get the underlying (non-nullable) system type.
I've written a db helper function. I pass it an object comprised of public members, representing the row data of a table. The members are the table columns.Using reflection, I loop through these public members to create an INSERT statement for a command object and populate its parameters with the values in those members. So far so good.But now there's a table which has a uniqueidentifier column which I must not populate from the row object, as it defaults to "NEWID()" (using SQL Server 2008). Instead of skipping all Guid columns, which would be easy, I only want to skip ones defined in the row data class as "Guid" (non-nullable).Basically, I'm using the Guid? (Nullable) type to indicate it's ok to populate that uniqueidentifier column with data. If it's non-nullable, that tells me to skip it because the column has a NEWID() default value.
View 3 Replies
Feb 8, 2011
i wonder if it's possible to define a variable/property of more than one type. Let's say i want a property TextWebControl that is a WebControl and also implements Web.UI.ITextControl(f.e. like a TextBox or Label). But i don't want to enforce that it is a TextBox or Label, but only one that inherits from WebControl and also implements ITextControl so that it also would work with controls added in future releases of .Net-Framework.
.Net-Framework 4.0
Edit: I have retagged the question and added VB.Net because it's my default language. Normally it's no problem for me to understand C# also, but i must admit that it's difficult to translate generic stuff to VB.Net without experiences and it's also better documentated in C# than in VB. So i would appreciate(and aceept) a working example of a VB.net generic type of ITextControl/WebControl.From Marc's answer i understand that i need a generic class. But how do i instantiate it in SomeClass? This won't compile:
Class SomeClass
Public Property info As InfoControl(Of WebControl, ITextControl)
End Class
Public Class InfoControl(Of T As {WebControl, ITextControl})
End Class
View 3 Replies
Aug 18, 2009
I'm converted a VB6 project to vb.net using the convert tool.Now i have a few declares that included passing variables as "as any" which vb.net doesn't like and it seems you have to declare them as there correct type so i have the following,So i suppose , Long and Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory"(ByRef Destination As Any, ByRef Source As Any, ByVal Length As Integer)
and
Long again?
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Integer, ByVal nCode As Integer, ByVal wParam As Integer, ByRef lParam As Any) As Integer
View 8 Replies
Sep 3, 2009
I am having some trouble with an array full of data which I am trying to process. The data has been picked out of an Excel spreadsheet and contains items such as phone numbers. The problem is that when I drop this array back into a spreadsheet, Excel being clever, decides that some of the phone numbers are numbers and removes the "+" from the front.[code]...
I know that adding a ' in front of the + will remedy this. What I need to do is find out which of the numbers in the array are actually numbers and which have spaces/characters in them. IS there a quick way of doing this without having to search through each individual character of each array position?
View 6 Replies
May 10, 2010
I'm trying to make an application to do mathematical equations, but I also want to implement error checking. So that if someone doesn't put anything in one of the fields the output textbox will say "Error".
But the problem is that I already declared the variables I used as a numeric value, in my case decimal.
So, when I make an if statement that says if inputbox1="" then outputbox1="Error" it doesn't work.
I think that in order to get this to work I would have to have it setup so that the variable that is exported to the text property of outputbox1 could switch between being declared as a decimal or string value based on what the user put into the textboxes. But I'm not sure how to go about this. Declaring the variables inside the if/elseif statements won't work because the variables need to be declared before they are calculated within my if/elseif statements.
View 1 Replies
Aug 8, 2009
I'm trying to wrap up a program I wrote in VB.NET and quick. I have a device that I am connected to through a serial port (COM4). It sent me 1056 binary bytes which I have stored in an array called newRecievedData. (see code below)
********** Start Code*********
Dim numberOfBytesToRead As Integer
numberOfBytesToRead = myComPort.BytesToRead
Dim newRecievedData(numberOfBytesToRead - 1) As Byte
[Code].....
View 1 Replies
Feb 1, 2011
I am working on a project where my class has to execute VB code provided by the user, to make it simple I am trying to recreate my own eval function, I am using the following code I found on the web to do this task.
Imports Microsoft.VisualBasic
Imports System
Imports System.Text
Imports System.CodeDom.Compiler
Imports System.Reflection
[Code] .....
The problem with code is that it can't access any variables or there values, so I have decided to get the variable names, there values types and there types dynamically and recreate them in the class that is being created dynamically. Any way to get the variable names there types and values in the current class or method, so that I can recreate them, and execute the user passed code, the user knows what variables are in the current class or method and there datatypes but he don't know there values as they may have changed, so he can't initialize them. Is there a way to do this, this code will be called in an asp.net page on page_load event, the code passed by the user is stored in the variable vbCode that is passed as a parameter.
View 2 Replies
Apr 25, 2009
Do List's hold the instances of a variable element or just the pointer to the the variable element? My application uses a list of elements, which can be re-ordered at any time, but I need to maintain another list of pointers to those elements, so that the element pointers can be used to access any element irrespective of their order in the main list? the difference between a pointer or a variable in the contect of list elements?
View 16 Replies
Oct 6, 2011
I get the error
Handles clause requires a WithEvents variable defined in the containing type or one of its base types.
in the following code..
Public Sub selCurrentManuf_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles selCurrentManuf.SelectedIndexChanged
End Sub
The drop list to go with it is the following...
<asp:DropDownList
OnSelectedIndexChanged="selCurrentManuf_SelectedIndexChanged"
selectedvalue='<%#Container.DataItem("c1_manufidcurrent")%>'
[code]....
View 1 Replies
Aug 23, 2009
I created a lable to handle DateTime = Now, It works fine. but when I moved it inside a FormView I Get the following Message. Handles clause requires a WithEvents variable defined in the containing type or one of its base types?
View 5 Replies
Oct 19, 2010
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Click, Open.Click,Name.Click
SelectVid.ShowDialog()
End Sub
[code]....
I keep getting this error:
Error1'.' expected.
Error2Handles clause requires a WithEvents variable defined in the containing type or one of its base types.
Error 2 is also error 3
View 2 Replies
Dec 8, 2011
I am auto generating data grid and I am using check box in Data grid View,Now i am invoking check box state changed event but it produces the following error Handles clause requires a With Events variable defined in the containing type or one of its base types.
Here the code
Private Sub PRNT_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles PRNT.CheckedChanged
Some Stuff.
End Sub
View 2 Replies