为什么 IEnumerable<char> ToString() 在 xamarin android 中工作?
Why does IEnumerable<char> ToString() work in xamarin android?
在 C# 中,您不能覆盖 IEnumerable
的 ToString()
方法。
我错过的是多态性。
因此
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
在 C# 中,您不能覆盖
我错过的是多态性。IEnumerable
的 ToString()
方法。
因此
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