Re-write Conditional Logic That Involves Checking Three Nullable(Of T) Values In An Equality Operator Overload?
Jan 28, 2011
So I'm writing the equality operator overload (Operator =())for a custom object, and the resulting mess of If conditionals is just an eyesore. But so far, it seems like the only sane way to check the values to as to match the specific behavior of this object.
The rules are:Num1 is required, period, and both the left and right operands and must be equal for True. Else, False.Num2 is optional, but if specified, must be present for both the left and right operands, and must be equal for True. Else, False.Num3 is optional, but can only be specified if Num2 is also present. Else, False.Num3, if specified, must be present for both the left and right operands, and must be equal for True. Else, False.
[Code]..
I also know that I could cache elements of the checks into booleans and then use those to reduce the amount of text. But that seems like a waste of cycles just for code readability. So I wanted to know if the SO community had better thoughts on reorganizing it, just in case I'm being too verbose with my checks.
View 1 Replies
ADVERTISEMENT
Oct 27, 2010
I have a method that takes an System.Action, this is what I'm trying to feed it:Function() Me._existingImports = Me.GetImportedAds()
The thing is that it complains about the = sign since it thinks I'm trying to do a comparison, which I'm not. I want to assign the Me._existingImports the value of Me.GetImportedAds(), but VB.NET complains about DataTable not having a = operator.
How can I force it to use the assignment operator instead of the equality operator?
In C# this works perfectly fine: () => this.existingImports = this.GetImportedAds()
For now the solution will be to use a standalone method, but that's way more code than needed.
View 1 Replies
Aug 5, 2010
I've got a heavily used web application that, for the first time in 2 years, failed doing an equality check on two doubles using the equality function a colleague said he'd also been using for years. The goal of the function I'm about to paste in here is to compare two double values to 4 digits of precision and return the comparison results. For the sake of illustration, my values are:
Dim double1 As Double = 0.14625000000000002 ' The result of a calculation
Dim double2 As Double = 0.14625 ' A value that was looked up in a DB
If I pass them into this function:
Public Shared Function AreEqual(ByVal double1 As Double, ByVal double2 As Double) As Boolean
Return (CType(double1 * 10000, Long) = CType(double2 * 10000, Long))
End Function
the comparison fails. After the multiplication and cast to Long, the comparison ends up being:
Return 1463 = 1462
I'm kind of answering my own question here, but I can see that double1 is within the precision of a double (17 digits) and the cast is working correctly. My first real question is: If I change the line above to the following, why does it work correctly (returns True)?
Return (CType(CType(double1, Decimal) * 10000, Long) = _
CType(CType(double2, Decimal) * 10000, Long))
Doesn't Decimal have even more precision, thus the cast to Long should still be 1463, and the comparison return False? I think I'm having a brain fart on this stuff...Secondly, if one were to change this function to make the comparison I'm looking for more accurate or less error prone, would you recommend changing it to something much simpler? For example:
Return (Math.Abs(double1 - double2) < 0.0001)
Would I be to try something like:
Return (double1.ToString("N5").Equals(double2.ToString("N5")))
View 3 Replies
Mar 10, 2009
Possible Duplicate: Is there a conditional ternary operator in VB.NET?
Can we use Coalesce operator(??) and conditional ternary operator(:) in VB.NET as in C#?
View 5 Replies
Apr 5, 2009
I want to be able to call forth hundreds of different photos be selecting them from a listbox or something of that nature.
Normally, if I only had a few images, I would amke their visibility false and then use If statements to turn on their visibility once it is selected. However, putting hundreds of images on to a form and then changing their visibility, seems like a pain.
I was wondering if there is a way to call forth each photo within the resources folder when an item is clicked so I don't have to put each one directly on the form.
View 5 Replies
Jun 11, 2012
In ASP.NET, using VB, how can i do this on the page itself, not in the code behind? [code]
View 3 Replies
May 30, 2012
I have a gridview as shown below. When the EmpType is contract the EmpID must be masked as "XXX"; for regular employees, actual EmpID should be shown. Also, when it is masked, I need to add a button control in the EmpID column.I need to do it using mark-up; not using code behind. How can we write the conditional logic for Gridview's ItemTemplate for this logic?Note: .Net 4.0
<asp:GridView ID="Gridview1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField HeaderText="AssociateID" DataField="AssociateID" />
[code].....
View 2 Replies
May 25, 2009
I recently got a vb book, and the operator overloading sample is quite confusing. understanding why you need to overload an operator, and what's the simplest example?
View 7 Replies
Feb 23, 2009
In Perl (and other languages) a conditional ternary operator can be expressed like this:my $foo = $bar = $buz ? $cat : $dog;Is there a similar operator in VB.NET?
View 2 Replies
Jan 10, 2011
Is there a way to use CodeDom to generate an overloaded operator in Vb.net? I want to generate this:
Public Shared Operator =(ByVal x As MyType, ByVal y As MyType) As Boolean
Return x Is y
End Operator
The closest hack I can think of to do this the following:
Dim eq As New CodeMemberMethod()
eq.Name = "Operator ="
eq.Parameters.Add(New CodeParameterDeclarationExpression(New CodeTypeReference("MyType"), "x"))[code]....
Which generates this, close but obviously wrong:
Public Shared Function Operator =(ByVal x As MyType, ByVal y As MyType) As Boolean
Return (x Is y)
End Function
View 1 Replies
Nov 15, 2010
I'm having problems with a Nullable DateTime in VB.NET (VS 2010).
Method 1
If String.IsNullOrEmpty(LastCalibrationDateTextBox.Text) Then
gauge.LastCalibrationDate = Nothing
[code].....
View 2 Replies
Mar 26, 2009
How do you test multiple values for equality in one line?
Basically I want to do
if (val1 == val2 == val3 == ... valN)
but in VB.Net.
View 3 Replies
Aug 24, 2011
dim val1 As Integer? = If(5 > 2, Nothing, 43)' val1 = 0 dim val1 As Integer? = If(5 > 2, Nothing, Nothing)' val1 = Nothing What gives? Is this a bug, or am I overlooking something?
View 1 Replies
May 27, 2009
Why does this give variable A the value of zero (instead of setting it to nothing)?Dim A as double? A=If(2<3, Nothing, 6)
View 11 Replies
Oct 6, 2011
The following compiles in VB.NET (with Option Strict On) and outputs False:[code]Why does that work?The documentation clearly states that the three-argument version of If requires a Boolean as the first parameter:[code]So, why does this work? Is it a bug (or "hidden feature") in the compiler or is it a bug in the documentation and Boolean? is actually a valid type for the first argument of If(a, b, c)?In C#, b ? x : y does not compile if b is of type bool?.I've reported this issue to Microsoft Connect. Someone from MS has replied and confirmed that the documentation will be updated to include the Boolean? case.
View 4 Replies
Mar 28, 2011
imgTitle.Image = My.Resources.title
If imgTitle.Image Is My.Resources.title Then
MsgBox("Success")
Else
[code]....
View 1 Replies
Apr 19, 2012
If you assign a value to a nullable integer via a ternary operator, it can't become null..While this question may seem like a duplicate of many, it is actually being asked for a specific reason.Take this code, for example: Dim n As Integer? = If(True, Nothing, 1) In that code, the ternary expression should be returning Nothing, but it's setting n to 0. If this were C#, I could say default(int?) and it would work perfectly. Now it looks like I am going to have to ditch the ternary and use a regular If block, but I really want to use the ternary. If Nothing were truly VB.NET's equivalent to C#'s default, how can you explain this behavior?
View 1 Replies
Aug 30, 2011
When using the If operator [URL] to assign a value to a System.Nullable object, if the result is Nothing (null), then 0 is assigned to the object. Example: 'Expected value is null (Nothing). Actual value assigned is 0. Dim x As System.Nullable(Of Integer) = If(1 = 0, 1, Nothing) If x is a nullable type, why is it being assigned the default integer type of 0. Shouldn't it receive a value of null?
View 2 Replies
Jul 16, 2011
I have conditional code checking in a card game Im working on and it just feels wrong.I m looking for a better way.Right now, all my functions return a card. If I get a card Im usually done and can fall out of my nested structure.If I dont get a card I have to test a condition If card is nothing.And this condition gets repeated ad-nauseum.Here is a small sample of the code.
card = FindMaxTrump(playableCards)
If Not card Is Nothing Then
'If we found a trump at all[code]....
This might be a fine way to do it, but the constant check for a null card is what has me wondering if there is a better approach I'm missing.
View 2 Replies
Aug 20, 2010
Table relationship[code]...
There are some TimeSheet that have no TimeRecord, which I need to select as well. How can I select all of them to make selection like above wanted result? I'm thinking of how I can include some condtion checking in the query to see if this TimeSheet has no TimeRecord then no need to Sum(tr.BonusHour) just assign TotalHour to zero.
View 1 Replies
Mar 7, 2012
I have a hashset (of posdata), pos data containing a boolean and a label containing the hashkey. I need to draw up a condtion where it will check that if a boolean for two or three different records does not equal to false. And if the condition is true i want to set the boolean of the two or three records to false. Here is an attempt,
ElseIf (position.strLabel = "b2" And position.blnAvail <> False) And (position.strLabel = "b1" And position.blnAvail <> False) And (position.strLabel = "e1" And position.blnAvail <> False) Then
[Code]....
View 1 Replies
Mar 2, 2011
i have a function to check if a number is in an array. and if its not in an array the function returns false.if it returns false i want to insert the number into the next slot of array3. here is the code i have so far.
[Code]...
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
Mar 5, 2009
I think it is possible to overload the operator() aka "function call" as OdbcDataReader uses it. using OdbcDataReader("myField") is the same as using OdbcDataReader.Item("myField"), I want to be able to do that for my own class, is this possible, how? I've been trying with overloaded operators but no success.
View 4 Replies
Jun 22, 2012
I would like to give permission to use this project to say, 10 users. The following code is fine for a single user. How can I write conditional code to provide the access to other nine users?
Submit button
If txtUsername.Text <> "Mahajan" Or txtPassword.Text <> "mh745" Then
MsgBox "Access Denied! Either Username or Password is incorrect!", vbOKOnly + vbCritical, "Security Login"
txtUsername.Text = ""
txtPassword.Text = ""
[code]....
View 5 Replies
Feb 10, 2011
TDD is supposed to have 100% code coverage. Does this mean one is supposed to write tests for property getter and setters, and other methods that contain no real logic, such as dealing with external API functionality? Below is one example method (which happens to also be the example in this other SO question which deals with how best to test it, if we are going to test it). This method doesn't do much. It's a facade of theSystem.ServiceProcess.ServiceController functionality of stopping a service. Currently this code was not being written using TDD, but if it was, would it be something that one should test? There is very little logic here.est to test it (IoC & Adapter Pattern vs. Detouring) please see this other SO question.
Public Function StopService(ByVal serviceName As String, ByVal timeoutMilliseconds As Double) As Boolean Implements IWindowsServicesService.StopService
Try
[code].....
View 3 Replies
Dec 13, 2010
Is there a way to do a select statement with conditional values?
For example: select * from table where column1 = (ifequals(column1, Active, Y, N))
View 9 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
Jan 21, 2010
I can do this without problem.
Class A
End Class
Class B : Inherit A
End Class
Dim Obj1 As A = New B
View 4 Replies
Apr 19, 2010
I have the following code sample, where the only difference between the 2 parts of the If statement is the less than/greater than operators.Is there a better way to write this?Could almost do with being able to define an Operator variable.
If myVar = true Then
Do While (X < Y)
'the values of X and Y will change within this loop
[code].....
View 4 Replies