C# 如何根据条件创建不同的类?

C# 如何根据条件创建不同的类?,c#,C#,很高兴见到你 我试图按条件分配类,但Csharp不让我这么做 因为名字是重复的。但我想使用“name”作为实例的名称,以最小化代码 比如说。 #我正在使用手机,请理解错误 Random rand = new Randome(); switch (rand.Next(1,3)) { case 1 : ClassA name = new ClassA(); break; case 2 : ClassB name = new ClassB(); b

很高兴见到你

我试图按条件分配类,但Csharp不让我这么做

因为名字是重复的。但我想使用“name”作为实例的名称,以最小化代码

比如说。 #我正在使用手机,请理解错误

Random rand = new Randome();

switch (rand.Next(1,3))
{
   case 1 :
     ClassA name = new ClassA();
     break;
   case 2 :
     ClassB name = new ClassB();
     break;
   case 3 :
     ClassC name = new ClassC();
     break;
}
我试了很多东西,但不知道怎么做。。你们能帮帮我吗 您可以创建接口(或抽象类)

并使用如下随机类:

static void Main()
{
    var classInstance = GetClassInstance();
    Console.WriteLine(classInstance.Id);
}

public static  IClassAbc GetClassInstance()
{
   Random rand = new Random();

    switch (rand.Next(1, 4))
    {
        case 1:
            return new ClassA();

        case 2:
            return new ClassB();

        case 3:
            return new ClassC();

    }
    return null;
}
但我认为,获得随机类是无用的。此代码在某些情况下可用于框架:


static void Main()
{
    var classInstance = GetClassInstance("classB") as ClassB;
    Console.WriteLine (classInstance.Id);
    
}

public static IClassAbc GetClassInstance(string className)
{
    
    switch (className)
    {
        case "classA":
            return new ClassA();

        case "classB":
            return new ClassB();

        case "classC":
            return new ClassC();

    }
    return null;
}


您是否需要在每个案例之外引用
名称
?如果没有,您可以简单地用
{
}
大括号围绕每个case块来创建一个新范围。如果是,则所有三个类都必须派生自公共基类或接口。

static void Main()
{
    var classInstance = GetClassInstance("classB") as ClassB;
    Console.WriteLine (classInstance.Id);
    
}

public static IClassAbc GetClassInstance(string className)
{
    
    switch (className)
    {
        case "classA":
            return new ClassA();

        case "classB":
            return new ClassB();

        case "classC":
            return new ClassC();

    }
    return null;
}