为什么 IEnumerable<char> ToString() 在 xamarin android 中工作?

Why does IEnumerable<char> ToString() work in xamarin android?

在 C# 中,您不能覆盖 IEnumerableToString() 方法。 我错过的是多态性

因此

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

将输出:

abc