"Is it good to do so?"
imho, it is "best" when you have made a
conscious choice to use a static implementation method because it is an "organic" consequence of what your code does, how it is used, and your intent, and application design.
It may be helpful if you ask yourself this question every time you use the 'static keyword:
"Do I intend/need/want for this (whatever) to be the one-and-only-one of this ? Depending on your culture, you might also think of that part of the (typical "western") marriage vows that says "forsaking all others ... until death do us part." :)
Keep in mind that public classes that can be instantiated with 'new can have static variables, methods. In fact .NET itself is full of examples of this: i.e., the 'String object.
Among important uses of 'static in .NET are:
1. constructing utility classes that provide libraries of static methods (or extension methods).
2. in creating 'singleton Classes
3. in implementing the 'Factory Pattern
The 'static access modifier in C# is "abused," imho, when it is used as a way to create the equivalent of global variables (as found in JavaScript, and Visual Basic) in order to avoid more "formal" techniques for passing objects/data/state between objects/classes/controls.