Is generic viagra from india safe

You cannot use operators on generic types (except for foo == null which is special cased) unless you add where T : class to indicate it is a reference type (then foo == bar is legal) Use EqualityComparer T.Default to do it for you. This will not work on types which only supply an operator overload for == without also either: implement IEquatable T overrides object.Equals () In general. In case you happen to have a generic method that returns a generic value but doesn't have generic parameters, you can use default(T) + (T)(object) cast, together with C 8 pattern matching/type checks (as indicated in the other recent answers). Static generic methods allow type-inference to make usage really easy; static fields on generic classes allow virtually overhead-free storage of (meta)data. It wouldn't surprise me at all if ORM's like Dapper and PetaPoco use techniques like this; but it's also great for (de)serializers. I am trying to combine a bunch of similar methods into a generic method. I have several methods that return the value of a querystring, or null if that querystring does not exist or is not in the The generic parameter type will be the same for all methods, so I would like it at the class level. I know I could make a generic version and then inherit from it for the int version, but I was just hoping to get it all in one. but I didn't know of any way to do that. So, two questions: Why do we observe this weird behaviour? What keeps us from comparing the values of generic types which are known to be IComparable? Doesn't it somehow defeat the entire purpose of generic constraints? How do I resolve this, or at least work around it? I like to send a generic type converter function to a method but I can't figure out how to do it. Here's invalid syntax that explains what I like to achieve, the problem is I don't know how to spe. That's not how generics work. MyMethod(List T list) is an invalid method signature (unless your class is a generic class with a Type Parameter T) In particular, we wouldn't need both the Func T and Action T families - there'd just be Func void instead of Action, Func T, void instead of Action T etc. It would also make async simpler - there'd be no need for the non-generic Task type at all - we'd just have Task void. Unfortunately, that's not the way the C or.NET type systems work. Generic is the opposite of specific. Generic and specific refer to the identification of a fact. Specific means a fact that has been specified. If you ask for (specify) a pain reliever, aspirin would be a specific pain reliever, while aspirin, acetaminophen, ibuprofen, and naproxen together would be generic pain relievers.