如果您不喜欢允许使用静态类来实例化它,那么您可以使用静态类,它的最佳示例是Math
类,并且如果您想要有单个实例,则可以使用单例。 MSDN示例:
public static class TemperatureConverter
{
public static double CelsiusToFahrenheit(string temperatureCelsius)
{
// Convert argument to double for calculations.
double celsius = System.Double.Parse(temperatureCelsius);
// Convert Celsius to Fahrenheit.
double fahrenheit = (celsius * 9/5) + 32;
return fahrenheit;
}
public static double FahrenheitToCelsius(string temperatureFahrenheit)
{
// Convert argument to double for calculations.
double fahrenheit = System.Double.Parse(temperatureFahrenheit);
// Convert Fahrenheit to Celsius.
double celsius = (fahrenheit - 32) * 5/9;
return celsius;
}
}
class TestTemperatureConverter
{
static void Main()
{
System.Console.WriteLine("Please select the convertor direction");
System.Console.WriteLine("1. From Celsius to Fahrenheit.");
System.Console.WriteLine("2. From Fahrenheit to Celsius.");
System.Console.Write(":");
string selection = System.Console.ReadLine();
double F, C = 0;
switch (selection)
{
case "1":
System.Console.Write("Please enter the Celsius temperature: ");
F = TemperatureConverter.CelsiusToFahrenheit(System.Console.ReadLine());
System.Console.WriteLine("Temperature in Fahrenheit: {0:F2}", F);
break;
case "2":
System.Console.Write("Please enter the Fahrenheit temperature: ");
C = TemperatureConverter.FahrenheitToCelsius(System.Console.ReadLine());
System.Console.WriteLine("Temperature in Celsius: {0:F2}", C);
break;
default:
System.Console.WriteLine("Please select a convertor.");
break;
}
}
}
和创建类单做到这一点:
public sealed class MyClass
{
MyClass()
{
}
public static MyClass Instance
{
get
{
return Nested.instance;
}
}
class Nested
{
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Nested()
{
}
internal static readonly MyClass instance = new MyClass();
}
}
对我帮助很大!但它有过度使用静态类的有什么区别,如如果你使用静态类由@Saeed – Pratik 2010-11-15 06:36:45
给出的答案做了,在该类的每个方法必须是静态的,它是一种约束。但是如果你使用这种模式,你不必拘泥于这个约束。 – 2010-11-15 07:19:23
在这种情况下,你会用'A.GetA'方法实例类,你也可以有这个太多的情况下,你在做什么?创建私有构造函数为什么?如果你想创建这样的事情,你应该有理由叫什么区别'一个一个新= A()'和'A中的= A.GetA()',如果你让类的构造函数私有的,应该有一定的原因,例如,使它单身。或者使其从其他类的访问中获得私有权,但您可以在任何地方访问它。 – 2010-11-15 10:41:12