Why Does The Ternary Operator Accept A Nullable Boolean
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
ADVERTISEMENT
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
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
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
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
Mar 29, 2011
I saw this in some vb.net source code:Dim sTest As String = "" & drTest("column")
I was told that if drTest("column") is nothing, then sTest will be assigned "", so it is in effect doing:
Dim sTest As String = If("",Nothing,drTest("column"))What is the downside of doing it the first way I showed?
What is the difference between using If and IIf?
View 2 Replies
Aug 20, 2011
I am looking to make this statement work in a VB.net page:
[Code]...
The ternary operator is causing a error: Compiler Error Message: BC36637: The '?' character cannot be used here. I want to use a tenary operator to display text based on the the field Inactive containing a true or false text value.
View 1 Replies
Feb 24, 2010
I'm usually reasonably good at translating C# into VB, but I'm a bit stuck partially due to the ternary operator in this function and also because I don't fully understand what is happening with the "from x in dataSource.OfType<object>() select 1).Sum()"
[code]...
View 7 Replies
Feb 26, 2010
Lambda expression with ternary operator in VB?
View 15 Replies
Nov 10, 2010
Suppose we have a nullable value in vb.net: Dim i as Integer? We want to assign a value to it, basing on a condition, and using a ternary operator, because it's so neat and stuff: i = If(condition(), Nothing, 42) That is, if a condition is true, employ the null-ability, otherwise the value. At which point the shooting occurs. For no apparent reason VB compiler decides that the common base type for Nothing and Integer is Integer, at which point it silently translates the statement to: [Code]
View 5 Replies
Mar 30, 2011
I am having a weird problem. IIf is messing up when I am working with an array. Apparently it is checking my else statement even though it isn't activated. Here is some code that demonstrates the issue:[code]
View 2 Replies
Apr 17, 2009
I have a nullable public property on a class using Vb.net 3.5:
Public Property TicketCharge() As Nullable(Of Decimal)
Get
If _TicketCharge = Nothing Then
[code]....
View 4 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
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 13, 2009
I have this little problem :Operator '=' is not defined for type 'DBNull' and type 'Boolean'. This the code:
For i As Int32 = Me.DataGridViewSearch.Rows.Count - 1 To 0 Step i - 1
If DataGridViewSearch.Rows(i).Cells(6).Selected = True Then
Try
What I am trying to do is to loop threw a datagrid and find the checkboces that are checked.
View 10 Replies
Dec 6, 2010
I am creating a 'generic input dialog': InputDialog(Of T).The idea is that I can create new instances of this dialog for different values of T. For example,I can create an InputDialog(Of String) and it displays a textbox.I create an InputDialog(Of Boolean) and it displays two radiobuttons (I could use a Checkbox, irrelevant).I create an InputDialog(Of Date) and it shows a DateTimePicker.
I do this by simply checking the type of T at run-time.In this way it is not really generic, as the dialog still has to know which type T is (which is usually not the case), but the generic is in the fact that the T can be multiple types that require a TextBox. For example, InputDialog(Of String), (Of Integer), (Of Single), (Of Double), etc, all simply display a TextBox (and it is validated later),so I still want to use generics as much as possible.Anyway, the result of the dialog is of course a property of type T. This property needs to return the value in the textbox, converted from string to T, OR the value in the DateTimePicker, converted from Date to T,OR the checked property of the 'Yes' radiobutton, converted from Boolean to T.In order to convert from any object to T I googled and found this
vb.net
Imports System.ComponentModel Public Class GenericTypeConverter Public Shared Function FromObject(Of T)(ByVal value As Object) As T Dim tc As TypeConverter = TypeDescriptor.GetConverter(GetType(T)) Return CType(tc.ConvertFrom(value), T) End Function End Class
I have to use this, I cannot simply CType a string to T since a String cannot be converted to any type T.So, my Result property looks like this at the moment:
vb.net
Public ReadOnly Property Result()[code].....
This actually works for Strings, Integers, Doubles, Singles, etc. I pass it the String in the textbox and it converts it to 'T'(note: T is then a String, Integer or Double!) just fine.So, it can convert a String to a String, Integer or Double without any problems (I am validating the text before using the Result property so it will always be a valid integer, double, etc).However, it does not work for a Boolean, nor for a DateTime. When I try that, it says "BooleanConverter cannot convert from System.Boolean" or "DateTimeConverter cannot convert from DateTime". I realize it is a bit of a strange thing, since the object already IS a Boolean or a Date(Time) so no conversion should be done at all, but this doesn't work in design-time because I need to return the objects as type T.I know that T will be Boolean when the value to be converted is a Boolean, and that T will be DateTime when the value to be converted is a DateTime, but the designer does not accept a simple CType. As I said, it does not accept this:
Return CType(rbYes.Checked, T)
because 'Boolean cannot be converted to T'.
However, I did find a way to make it work, but it seems like a complete hack... I can assign the boolean to an Object and then convert that using CType:
Dim obj As Object
obj = rbYes.Checked
Return CType(obj, T)
This works, it's accepted during design-time, and it works during run-time, but it seems very wrong... Is there no better way to handle this?
View 5 Replies
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
May 10, 2010
I am writing a calculator app in VB Express 2008. I'm trying to get the app to accept numeric and operator input while ignoring all the alpha input. In other words taking input from the numeric keypad and the top of the keyboard and ignoring all the letters.
Here's the block of code I have so far:
Private Sub TextBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If (e.KeyCode >= Keys.D0 OrElse e.KeyCode >= Keys.NumPad0) And (e.KeyCode <= Keys.D9 OrElse e.KeyCode <= Keys.NumPad9) Then
Select Case e.KeyCode
[code]....
I can't get vb to recognize the above code it seems to skip right over it. BTW, is 'Keys.Crsel' the same as the caret '^' symbol?
View 7 Replies
Aug 19, 2010
This is my
[Code]...
This is my error: Operator '=' is not defined for type 'FileInfo' and type 'Boolean'.
View 3 Replies
Apr 16, 2009
In my application when i click the button i'm getting this" Operator '=' is not defined for type 'Char' and type 'Boolean'." But when i test it locally there is no problem at all!
View 2 Replies
Nov 17, 2009
From what I read it is a good convention to name a method that returns a boolean value with the prefix of "is" or "has". So in keeping with this convention I am trying to name a method in my program with this prefix but I am running Specifically I have a class called Day. It is a simple class with a few data members and one method that returns a boolean value of true or false. The name of the boolean variable is isSpecialDay. This class has a method called isSpecialDay which takes the date of the day, applies some criteria to the date and then sets the variable isSpecialDay to true or false. My problem is that the boolean variable is named isSpecialDay and so it the method. What should I do?
Public Class Day
Private TheDate as String
Private DayName as String
[code].....
View 8 Replies
Oct 27, 2011
After Filling a DataTable in GridView's DataSource . A column with check box Type appears but it created as read only column and I can't enable it or make it editable... even i tried .readonly = false and still can't be edited
View 1 Replies
Jan 27, 2010
I am tightening up my coding with the Option Strict set to ON. It has now produced alot of errors. An example of this is:
If AllocatedDGV.Rows(i).Cells("RoomNumber").Value = RoomsAvailableDGV.Rows(j).Cells("RoomName").Value Then
It gives me the following error: Option Strict On disallows operands of type Object for operator '='. Use the 'Is' operator to test for object identity.
View 6 Replies
Apr 6, 2012
I need to write an interface to get data to/from our data files.
We have a low level class that holds field values for each record read from the files.
This just holds two values, the value read from the file (DBValue) and the updated value that may need to be written back to the file (CurrentValue).
These values may be any of the standard value types (integer, date etc) or a string.
Either value (DBValue or CurrentValue) may be null if not defined.
I have written the class to manage this data which works fine while option strict is NOT on.
But we have an office policy of having option strict on all the time.
When I put option strict on, my object value comparisons fail with the error: "Option Strict On disallows operands of type Object for operator '='. Use the 'Is' operator to test for object identity."
Question, how should I change the following code to handle option strict on ...
This is all running on Visual Studio 2010
[Code]...
View 1 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
Mar 5, 2010
I ran some code through an automatic translator for C# to VB, and it translated some code like this:Public Property Title As [String]How is this different to Public Property Title As String
View 3 Replies
Jun 2, 2011
One to accept only file word and pdf file and the other to accept only images(.jg|.bmp|.png|.gif)
View 1 Replies
Sep 17, 2009
I accidently wrote some code today that was like this[code]...
I immediately noticed the issue, but I had already hit the run button. It compiled successfully, I ran it through to the section and it threw an exception.
You can't do this in C#, it gives a compile error "cannot convert from 'int?' to 'int'".
Is there an 'Option Explicit' type switch that I can turn on to ensure that this sort of error does not occur again?
View 1 Replies
Nov 11, 2009
I want to perform equality comparison in VB.NET and cannot get it to work. Error: value of type Boolean can not be converted to System.Drawing.PointF
[code]...
View 4 Replies
Dec 5, 2011
I have a bigger code block which I have recreated in this simpler example:
[Code]...
View 1 Replies