Mor*_*ahl 5 c# xamarin.android visual-studio-2015
你好,谢谢你的时间.
我最近决定尝试使用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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的类中,当我对一个小于20个字符的音符对象进行ToString操作时,我得到一个未处理的异常.我认为这很奇怪,所以我在try/catch中用子串包装了部分.
但是,我仍然得到一个未处理的例外.怎么会这样?
填充ListView时会调用ToString,这是在这段代码中完成的.
[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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我在 Visual Studio 中测试并确认其有效的代码:
public class Card
{
public string Content { get; set; }
public override string ToString()
{
if (Content == null)
return null;
const int maxLength = 20;
if (Content.Length > maxLength)
return Content.Substring(0, maxLength - 1);
return Content;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我用来测试它的方法(实用程序方法是我的代码沙箱中我自己的方法之一):
var card = new Card();
var str = Utility.GetRandomAlphaNumString(40);
for (int i = 0; i < 40; i++)
{
card.Content = str.Substring(0, i);
Console.WriteLine(card.ToString());
}
Run Code Online (Sandbox Code Playgroud)
这是它打印的内容:
// [Empty result]
W
W1
W1U
W1UJ
W1UJ2
W1UJ2X
W1UJ2X4
W1UJ2X48
W1UJ2X48B
W1UJ2X48BU
W1UJ2X48BU9
W1UJ2X48BU9A
W1UJ2X48BU9A4
W1UJ2X48BU9A46
W1UJ2X48BU9A46C
W1UJ2X48BU9A46CY
W1UJ2X48BU9A46CYV
W1UJ2X48BU9A46CYVA
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8R
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
W1UJ2X48BU9A46CYVA8
Run Code Online (Sandbox Code Playgroud)
(请注意,它实际上并没有打印“空结果”。我只需在那里输入一些内容,否则不会让我以一行空格开始代码块。)
由于上面的代码工作得很好,我可以说无论你的问题是什么,它与代码没有任何关系。(或者,至少,这段代码。)
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |