After refactoring some code recently, which involved some class renames, some of my code broke in a surprising way. The cause was a failing "is" operator test, that I was very surprised wasn't a compiler error or warning.
This complete program shows the situation:
static class ExtensionMethods {}
class Program {
static void Main() {
Test("Test");
}
public static bool Test(object obj)
{
return obj is ExtensionMethods;
}
}
I would have expected "obj is ExtensionMethods" to raise a warning of some sort, given that ExtensionMethods is a static class.
The compiler will issue a warning for the "is" operator when object under test can never be of the provided type, ((string)obj) is System.Uri
for example.
Am I forgetting a scenario in which this would actually be a meaningful test?
C programming language is a machine-independent programming language that is mainly used to create many types of applications and operating systems such as Windows, and other complicated programs such as the Oracle database, Git, Python interpreter, and games and is considered a programming foundation in the process of ...
In the real sense it has no meaning or full form. It was developed by Dennis Ritchie and Ken Thompson at AT&T bell Lab. First, they used to call it as B language then later they made some improvement into it and renamed it as C and its superscript as C++ which was invented by Dr.
What is C? C is a general-purpose programming language created by Dennis Ritchie at the Bell Laboratories in 1972. It is a very popular language, despite being old. C is strongly associated with UNIX, as it was developed to write the UNIX operating system.
C is a general-purpose language that most programmers learn before moving on to more complex languages. From Unix and Windows to Tic Tac Toe and Photoshop, several of the most commonly used applications today have been built on C. It is easy to learn because: A simple syntax with only 32 keywords.
I was very surprised wasn't a compiler error or warning.
It should have been. It was an oversight.
There were a number of bugs like that involving static classes. If I recall correctly, there was even some bizarre scenario that Vladimir Reshetnikov found where it was possible to make type inference infer a static type as a bound on a type parameter.
Apparently this one, which I have seen before, never got fixed. Apologies for the oversight.
Am I forgetting a scenario in which this would actually be a meaningful test?
No.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With