[C#] Reducing Code Verbosity by Omitting Class Names with the using static Directive

The using static directive, introduced in C# 6.0, allows you to call static members (methods and properties) of a specified type directly without writing the type name every time.

By applying this feature to frequently used static classes (such as System.Console or System.Math), you can eliminate code redundancy. This is particularly useful for improving readability when dealing with mathematical formulas.

In this article, I will introduce the basic usage of using static and provide a concrete implementation example using mathematical functions.

目次

Basic Usage

While the standard using directive is used to import namespaces, using static specifies a type (class or struct).

// Specify the type, not just the namespace
using static System.Console;
using static System.Math;

This allows you to write WriteLine(...) instead of Console.WriteLine(...), or Sqrt(...) instead of Math.Sqrt(...).

Implementation Example: Use in Scientific Calculation

Below is an example of a console application that utilizes using static to write mathematical calculations concisely. Notice how the mathematical formulas are expressed more naturally by removing the repetition of class names.

using System;
// Allows omission of the Console class name
using static System.Console;
// Allows omission of the Math class name
using static System.Math;

namespace StaticImportExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Prompt the user for input
            // Can call WriteLine instead of Console.WriteLine
            WriteLine("Calculating the hypotenuse using the Pythagorean theorem.");
            
            try
            {
                Write("Enter the length of the base (a): ");
                double a = double.Parse(ReadLine() ?? "0");

                Write("Enter the height (b): ");
                double b = double.Parse(ReadLine() ?? "0");

                // Calculation process
                // Using Math.Sqrt and Math.Pow without the class name
                double c = Sqrt(Pow(a, 2) + Pow(b, 2));

                WriteLine("------------------------------");
                WriteLine($"Base: {a}");
                WriteLine($"Height: {b}");
                // Output result
                WriteLine($"Hypotenuse (c): {c:F2}");
            }
            catch (FormatException)
            {
                // Error display
                WriteLine("Error: Please enter a valid number.");
            }
        }
    }
}

Precautions for Use

While using static is convenient, overuse can reduce readability. Please be aware of the following points:

  • Name Conflicts: If multiple classes have methods with the same name (e.g., if your own class also has a WriteLine method), it becomes ambiguous which one is being called. This can cause compilation errors or unexpected behavior.
  • Loss of Context: For methods like File.Open or Path.Combine, keeping the class name makes it clearer what is being operated on. On the other hand, self-explanatory methods like Math.Sin or Console.WriteLine are suitable for using static because the context remains clear even without the class name.

Summary

The using static directive is an effective way to clean up code in classes that heavily use specific static methods.

  • Syntax: using static <Fully Qualified Type Name>;
  • Effect: Static members of the specified type can be written without the class name.
  • Use Cases: Particularly effective for mathematical calculations (System.Math) and console output (System.Console).

Use it appropriately to achieve readable code with less noise.

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次