网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月30日漏签0天
c#吧 关注:188,779贴子:824,438
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 6回复贴,共1页
<<返回c#吧
>0< 加载中...

C#的方法和返回值,到底谁是协变的,谁是抗变(逆变)的?

  • 只看楼主
  • 收藏

  • 回复
  • 街霸2017
  • c#小菜鸟
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
rt




  • 街霸2017
  • c#小菜鸟
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


2026-01-30 23:20:16
广告
不感兴趣
开通SVIP免广告
  • 一颗程序猿o_0
  • c#攻城狮
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你如果不是要考试或者搞理论的话,这俩词不重要,你知道传参和返回值怎么用就可以了
中心思想,一个对象只能放到跟他类型相同或者比他大的变量里:
1. 传参数:你要把一个对象作为参数传进去,你给的对象必须跟他提供的类型相等或更小
2. 返回值: 一个方法返回了一个值给你,你用来接收它的变量类型必须跟他返回对象的类型相同或者更大
实际对象的类型 <= 变量类型 就行了


  • 街霸2017
  • c#小菜鸟
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 一颗程序猿o_0
  • c#攻城狮
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你指定T是in,所以这个接口是逆变的, 假设有如下定义:
IDisplay<String> myString;
IDisplay<Object> myObject ;
则这个赋值句就是合法的:
myString = myObject;
所以myObject.Foo()的返回对象一定可以赋值给myString.Foo() 返回类型的变量。但是你直接指定了T, myString返回的就是String, myObject返回的是Object,这个赋值就是逆变的,但是C#需要他是协变的,所以就是他说的那个错误


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 6回复贴,共1页
<<返回c#吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示