c# - 为什么 IEnumerableToString() 在 xamarin android 中工作?
问题描述
在 C# 中,您不能
这是我错过的多态性。ToString()
覆盖IEnumerable
.
因此这
IEnumerable<char> chars = new List<char> { 'a', 'b', 'c' };
chars.ToString();
没有给我“abc”。
查看一些 Xamarin.Android 我想知道以下如何转换为正确的字符串:
//In OnCreate
FindViewById<EditText>(Resource.Id.txt_username).TextChanged += GenerateNewPassword;
//my method
private void GenerateNewPassword(object sender, Android.Text.TextChangedEventArgs e)
{
passwordView.Text = e.Text.ToString();
}
我错过了什么,为什么会这样?
解决方案
ToString
覆盖来自基础类型,而不是IEnumerable<T>
. 我不确定 Xamarin 是如何提供的,但我认为它是一个自定义类型,它实现了IEnumerable<T>
. 例如,我们可以这样做:
public class MyList<T> : List<T>
{
public override string ToString()
{
return string.Join("", this);
}
}
现在我们可以这样做了:
IEnumerable<char> chars = new MyList<char> { 'a', 'b', 'c' };
Console.WriteLine(chars.ToString());
这将输出:
美国广播公司
推荐阅读
- common-lisp - 如何将 DEFCFUN 与指向外部 C 函数的指针一起使用?
- java - Spring Boot JPA 通过自定义字符串字段查找
- java - 使用 VSCode 在 python 中导入自定义模块的问题
- android - Google Play 控制台发布到封闭 Alpha 版而不是生产版
- grep - 有没有办法在 Splunk 中实现之前/之后的事件,或在报告中实现实时事件流?
- design-patterns - 什么情况下应该设计成迭代器
- javascript - 如何从数据表搜索中禁用实时搜索?
- regex - 从 MongoDB 正则表达式中排除字符串
- reactjs - Race Condition:Material-UI Select 在执行条件渲染生成 MenuItem 时认为值超出范围
- apache-kafka - Kafka - 自动提交是在后台发生还是作为轮询循环的一部分