When a ushort?
is passed to Assert.Equal
it is trying to cast the two argumants to string
. It works fine for int?
. If I change the code to ushort test = 10;
or Assert.Equal((ushort)10, test);
or Assert.Equal(10, (ushort)test);
it works fine. Whats the reason for that? Can it be because of ushort
and both char
is 2 bytes and Assert.Equal
is implicitly trying to treat the ushort?
as a string?
Assert.Equal trying to cast ushort? to 'string'
132 views Asked by KeepCalmAndCode At
1
There are 1 answers
Related Questions in C#
- Add image to JCheckBoxMenuItem
- How to access invisible Unordered List element with Selenium WebDriver using Java
- Inheritance in Java, apparent type vs actual type
- Java catch the ball Game
- Access objects variable & method by name
- GridBagLayout is displaying JTextField and JTextArea as short, vertical lines
- Perform a task each interval
- Compound classes stored in an array are not accessible in selenium java
- How to avoid concurrent access to a resource?
- Why does processing goes slower on implementing try catch block in java?
Related Questions in NULLABLE
- Add image to JCheckBoxMenuItem
- How to access invisible Unordered List element with Selenium WebDriver using Java
- Inheritance in Java, apparent type vs actual type
- Java catch the ball Game
- Access objects variable & method by name
- GridBagLayout is displaying JTextField and JTextArea as short, vertical lines
- Perform a task each interval
- Compound classes stored in an array are not accessible in selenium java
- How to avoid concurrent access to a resource?
- Why does processing goes slower on implementing try catch block in java?
Related Questions in XUNIT.NET
- Add image to JCheckBoxMenuItem
- How to access invisible Unordered List element with Selenium WebDriver using Java
- Inheritance in Java, apparent type vs actual type
- Java catch the ball Game
- Access objects variable & method by name
- GridBagLayout is displaying JTextField and JTextArea as short, vertical lines
- Perform a task each interval
- Compound classes stored in an array are not accessible in selenium java
- How to avoid concurrent access to a resource?
- Why does processing goes slower on implementing try catch block in java?
Related Questions in USHORT
- Add image to JCheckBoxMenuItem
- How to access invisible Unordered List element with Selenium WebDriver using Java
- Inheritance in Java, apparent type vs actual type
- Java catch the ball Game
- Access objects variable & method by name
- GridBagLayout is displaying JTextField and JTextArea as short, vertical lines
- Perform a task each interval
- Compound classes stored in an array are not accessible in selenium java
- How to avoid concurrent access to a resource?
- Why does processing goes slower on implementing try catch block in java?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Note that although there is an implicit conversion from
10
toushort?
This only works because the constant expression
10
is within the range ofushort
, and an implicit constant expression conversion is applied.The
Equal
method group has generic methods, like the one that you are trying to call. So before overload resolution can begin, type inference occurs.In this case, type inference actually fails for all the generic overloads, so they don't take part in overload resolution.
Equal(string, string)
is one of the overloads that do. That's why the error message is about the string overload.Why does type inference fail? Because there is no implicit conversion from
int
toushort?
or fromushort?
toint
. Type inference only cares about the types of the arguments, the parameters, and the type parameters. It doesn't care about whether the arguments are constant expressions or anything like that, so the aforementioned implicit constant expression conversion is not applicable. I encourage you to follow through the type inference process in the spec. It's great fun :)See the references to "type of
Ei
" here:Compare this to how it refers to "argument" rather than "type of argument" in overload resolution:
So it seems that overload resolution does look at the arguments' expressions, which is why it would have worked if you made the method non-generic, accepting two
ushort?
. In that case it does not participate in type inference, only overload resolution.The reason why casting the
10
toushort
orbyte
works is because there does exist an implicit conversion between fromushort
toushort?
and frombyte
toushort?
. This is done via an implicit nullable conversion.