c#中的通用参数

uza*_*y95 2 c# inheritance where array-initialization

我有这个课程:

interface Info{}

class AInfo : Info { }
class BInfo : Info { }

class SendInfo {
    static public f_WriteInfo(params Info[] _info) {

    }
}

class Test {
  static void Main() {
    SendInfo.f_WriteInfo( 
                        new[] { 
                            new AInfo(){ ... },
                            new BInfo(){ ... },
                       } );
// This will generate an error. 
// There will be need casting between new and [] like new Info[]
  }
}
Run Code Online (Sandbox Code Playgroud)

没有铸造有没有办法做到这一点?

喜欢:

class SendInfo {
    static public f_WriteInfo(params T _info) where T : Info {
Run Code Online (Sandbox Code Playgroud)

Dav*_*e S 11

将方法签名设置为:

static public f_WriteInfo(params Info[] _info) {}
Run Code Online (Sandbox Code Playgroud)

并称之为:

SendInfo.f_WriteInfo(new AInfo(){ ... }, new BInfo(){ ... });
Run Code Online (Sandbox Code Playgroud)