You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何在Xamarin.Android中对IEnumerable<char>调用ToString()可正常生效?

你遗漏的核心知识点是:多态调用的是运行时实际类型的方法实现,和声明时的父类型无关,且两个场景中调用ToString的对象实际类型完全不同

  • 第一个基础C#示例的执行逻辑:
    你声明的IEnumerable<char> chars实际运行时类型是List<char>,而List<char>没有重写object.ToString()方法,所以调用后只会返回类的完整限定名,不会输出集合内容。你之前的理解是正确的:接口本身无法重写方法,重写是实现类的行为,只要实现IEnumerable<char>的类没有自己重写ToString(),就会继承object的默认实现。
  • Xamarin.Android场景的执行逻辑:
    Android.Text.TextChangedEventArgs的Text属性类型是IEditable,并非普通的IEnumerable<char>。安卓框架中所有实现IEditable接口的类(比如默认使用的SpannableStringBuilder)都专门重写了ToString()方法,作用就是直接返回当前持有的纯文本内容。
    哪怕IEditable确实继承了IEnumerable<char>,运行时调用的是实际实现类重写后的ToString(),自然就能得到你期望的字符串结果。

内容的提问来源于stack exchange,提问作者schgab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:45:07