Static constructor cannot have return type(int,string etc)
Correct. But a (static) constructor does not need to return anything.
but static method must have return type in C#.
Wrong. A static method can very well be a void method.
How does c# compiler distinguish ...
static class StaticClass
{
public static StaticClass(){} //right : Wrong. 'public' is not allowed.
public static int StaticClass(){} //wrong : Indeed wrong. Member cannot have same name as class
public static int StaticMethod(){} //right
}