首页 > 解决方案 > 为什么 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();
}

我错过了什么,为什么会这样?

标签: c#androidxamarin.android

解决方案


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());

这将输出:

美国广播公司


推荐阅读