非常感謝您的時間。ToString超載未處理的異常
我最近決定嘗試使用Xamarin.Android來開發我的想法。
但是,我遇到了我曾經遇到過的最奇怪的問題。
public class Note : INote
{
public string Content { get; set; }
public DateTime DateTime { get; set; }
public List<ITag> Tags { get; set; }
public override string ToString()
{
try
{
const int maxLength = 20;
if (Content.Length > maxLength)
{
return Content.Substring(0, maxLength - 1);
}
return Content;
}
catch (Exception)
{
return Content;
}
}
}
在上面的類,當我在這不到20個字符的說明對象的一個ToString操作,我得到一個未處理的異常。我認爲這很奇怪,所以我用try/catch中的子字符串包裝零件。
但是,我仍然得到一個未處理的異常。怎麼會這樣?
ToString在填充ListView時被調用,這是在這段代碼中完成的。
[Activity(Label = "@string/ApplicationName")]
public class ShowNotesActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.ShowNotes);
var persistence = new Persistence();
var listView = FindViewById<ListView>(Resource.Id.listView1);
var adapter = new ArrayAdapter<INote>(this, Android.Resource.Layout.SimpleListItem1, persistence.GetAllNotes());
listView.Adapter = adapter;
}
}
當你得到異常時,輸入是什麼? –
所以你說當Content內容少於20個字符時,它也會進入if條件嗎?如果是的話,你可以在'if'條件下放置斷點,並在那個時候檢查'Content.Length'的確切值。 – Amit
如果Content.Length低於20,我會得到異常。它可能是任何東西。我試過的最後一次修復,我創建了兩個筆記。其中一個內容爲:「asdfghjklqwertyuiopz」,它沒有引起任何異常。還有一個內容是:「e」引起異常 –