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'
173 views Asked by KeepCalmAndCode At
1
There are 1 answers
Related Questions in C#
- Passing arguments to main in C using Eclipse
- kernel module does not print packet info
- error C2016 (C requires that a struct or union has at least one member) and structs typedefs
- Drawing with ncurses, sockets and fork
- How to catch delay-import dll errors (missing dll or symbol) in MinGW(-w64)?
- Configured TTL for A record(s) backing CNAME records
- Allocating memory for pointers inside structures in functions
- Finding articulation point of undirected graph by DFS
- C first fgets() is being skipped while the second runs
- C std library don't appear to be linked in object file
Related Questions in NULLABLE
- Passing arguments to main in C using Eclipse
- kernel module does not print packet info
- error C2016 (C requires that a struct or union has at least one member) and structs typedefs
- Drawing with ncurses, sockets and fork
- How to catch delay-import dll errors (missing dll or symbol) in MinGW(-w64)?
- Configured TTL for A record(s) backing CNAME records
- Allocating memory for pointers inside structures in functions
- Finding articulation point of undirected graph by DFS
- C first fgets() is being skipped while the second runs
- C std library don't appear to be linked in object file
Related Questions in XUNIT.NET
- Passing arguments to main in C using Eclipse
- kernel module does not print packet info
- error C2016 (C requires that a struct or union has at least one member) and structs typedefs
- Drawing with ncurses, sockets and fork
- How to catch delay-import dll errors (missing dll or symbol) in MinGW(-w64)?
- Configured TTL for A record(s) backing CNAME records
- Allocating memory for pointers inside structures in functions
- Finding articulation point of undirected graph by DFS
- C first fgets() is being skipped while the second runs
- C std library don't appear to be linked in object file
Related Questions in USHORT
- Passing arguments to main in C using Eclipse
- kernel module does not print packet info
- error C2016 (C requires that a struct or union has at least one member) and structs typedefs
- Drawing with ncurses, sockets and fork
- How to catch delay-import dll errors (missing dll or symbol) in MinGW(-w64)?
- Configured TTL for A record(s) backing CNAME records
- Allocating memory for pointers inside structures in functions
- Finding articulation point of undirected graph by DFS
- C first fgets() is being skipped while the second runs
- C std library don't appear to be linked in object file
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.