协变量类型不用作接口方法的一般约束,为什么? C#

问题描述

问题:

#include <stdio.h>

struct student {
    char name[20];
};

int same_string(const char *s1,const char *s2) {
    while (*s1 == *s2) {
        if (*s1 == '\0')
            return 1;
        s1++;
        s2++;
    }
    return 0;
}

int main() {
    struct student s[10];
    int n,i,j,count;
    for (n = 0; n < 10; n++) {
        printf("Enter student name: ");
        if (scanf("%19s%*[^\n]",s[n].name) < 1)
            break;
    }
    count = 0;
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            if (i != j && same_string(s[i].name,s[j].name)) {
                count++;
                break;
            }
        }
    }
    printf("\n%d students have same name\n\n",count);
    return 0;
}

为什么在这种情况下不允许对方法进行一般约束。

编辑: 大声笑我找到了答案,该方法中的通用类型“ T”实际上是一个参数(或输入),因此不是协变的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...