C# 使用泛型参数而不是显式参数调用构造函数

C# 使用泛型参数而不是显式参数调用构造函数,c#,generics,constructor,C#,Generics,Constructor,我想这个问题是重复的。 但我找不到这样的问题 我想实例化一个泛型类。但是如果有一个构造函数具有 显式参数和泛型构造函数也具有该参数。由于给定类型,将使用具有显式参数的构造函数 范例 class Program { static void Main(string[] args) { Example<string> test = new Example<string>("test"); test.Print();//Prints

我想这个问题是重复的。 但我找不到这样的问题

我想实例化一个泛型类。但是如果有一个构造函数具有 显式参数和泛型构造函数也具有该参数。由于给定类型,将使用具有显式参数的构造函数

范例

 class Program
 {
    static void Main(string[] args)
    {
       Example<string> test = new Example<string>("test");
       test.Print();//Prints test2
    }
 }

 class Example<T>
 {
    private object Value;

    public Example(T value1)
    {
       this.Value = value1 + "1";
    }

    public Example(string value2)
    {
       this.Value = value2 + "2";
    }

    public void Print()
    {
       Console.WriteLine(Value as string);
    }
 }
类程序
{
静态void Main(字符串[]参数)
{
示例测试=新示例(“测试”);
test.Print();//打印test2
}
}
课例
{
私人客体价值;
公共示例(T值1)
{
此.Value=value1+“1”;
}
公共示例(字符串值2)
{
此.Value=value2+“2”;
}
公开作废印刷品()
{
Console.WriteLine(值为字符串);
}
}

有没有方法调用泛型构造函数?

您可以对命名参数使用如下语法:

示例测试=新示例(值1:“测试”)

这里的重要技巧是使用与当前不同的参数名,因此它将根据参数名映射正确的构造函数,代码如下所示:

using System;

public class Program
{
   public static void Main()
   {
      Example<string> test = new Example<string>(value1: "test");
      test.Print();//Prints test1
   }

class Example<T>
{
    private object Value;

    public Example(T value1)
    {
       this.Value = value1 + "1";
    }

    public Example(string value2)
    {
        this.Value = value2 + "2";
    }

    public void Print()
    {
          Console.WriteLine(Value as string);
       }
    }   
}
使用系统;
公共课程
{
公共静态void Main()
{
示例测试=新示例(值1:“测试”);
test.Print();//打印test1
}
课例
{
私人客体价值;
公共示例(T值1)
{
此.Value=value1+“1”;
}
公共示例(字符串值2)
{
此.Value=value2+“2”;
}
公开作废印刷品()
{
Console.WriteLine(值为字符串);
}
}   
}

您还可以找到有关命名参数的文档。

是。在类中添加第三个没有参数的构造函数。我不是真正的C#guy,但是如果您尝试构造函数上的
explicit
关键字会发生什么?我将尝试使用
字符串
构造函数。