Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 方法提前返回,但未完成_C#_Xamarin.ios_Xamarin.forms - Fatal编程技术网

C# 方法提前返回,但未完成

C# 方法提前返回,但未完成,c#,xamarin.ios,xamarin.forms,C#,Xamarin.ios,Xamarin.forms,此方法永远不会通过foreach循环。不管我在后面放什么,它都不会跑。即使book对象中没有contact对象,也不应该跳过代码的其余部分。这是我正在开发的一个应用程序中的联系人选择器,有什么想法吗?谢谢 public class UserContactService : IUserContactService { public List<Contact> GetContacts() { List<Contact> contacts = n

此方法永远不会通过foreach循环。不管我在后面放什么,它都不会跑。即使book对象中没有contact对象,也不应该跳过代码的其余部分。这是我正在开发的一个应用程序中的联系人选择器,有什么想法吗?谢谢

public class UserContactService : IUserContactService
{
    public List<Contact> GetContacts()
    {
        List<Contact> contacts = new List<Contact>();
        var book = new Xamarin.Contacts.AddressBook();
        Console.WriteLine("Before loop");
        foreach (Contact c in book)
        {
            contacts.Add(c);
        }
        Console.WriteLine(DateTime.Now);
        return contacts;
    }
}
公共类UserContactService:IUserContactService
{
公共列表GetContacts()
{
列表联系人=新列表();
var book=new Xamarin.Contacts.AddressBook();
Console.WriteLine(“循环前”);
foreach(联系通讯录中的c)
{
增加(c);
}
Console.WriteLine(DateTime.Now);
返回联系人;
}
}

使用Xamarin,您需要首先检查用户是否已授予访问联系人簿的权限,否则您的foreach将出错(因为联系人簿将永远不包含联系人)

要从应用程序用户获得权限,您也可以在Xamarin中执行此操作:

if (!await book.RequestPermission()) {
    Console.WriteLine("Permission denied by user or manifest");
    return;
}
我还想用try/catch来包装您的foreach,以获取更多错误消息等:

try {      
    foreach (Contact c in book)
    {
        contacts.Add(c);
    }
} catch (Exception ex) {
    Console.WriteLine(ex);
}

有关Xmarin Mobile的更多信息,请点击此处:

使用Xamarin,您需要首先检查用户是否已授予访问联系人簿的权限,否则您的foreach将出错(因为联系人簿将永远不包含联系人)

要从应用程序用户获得权限,您也可以在Xamarin中执行此操作:

if (!await book.RequestPermission()) {
    Console.WriteLine("Permission denied by user or manifest");
    return;
}
我还想用try/catch来包装您的foreach,以获取更多错误消息等:

try {      
    foreach (Contact c in book)
    {
        contacts.Add(c);
    }
} catch (Exception ex) {
    Console.WriteLine(ex);
}

有关Xmarin Mobile的更多信息,请点击此处:

使用try-and-catch检查是否存在异常。您是否仔细检查了代码以确保foreach正在运行?您缺少权限检查,您确定您的应用程序允许您检查通讯簿的权限吗?显然,如果“book”的计数为0,则foreach将不会运行。因此,正如其他人所建议的,您需要在“var book=new Xamarin.Contacts.AddressBook();”之后中断,并查看“book”是否有值等。是的,foreach有一个异常。你知道我是否缺少使用xamarin联系人的权限吗?我发现的每件事看起来都像是我要为它做一个大的重写。你需要捕获异常兄弟,比如在catch(exception exc){throw exc;}中使用try和catch,来检查是否有异常。你有没有仔细检查代码以确保foreach正在运行?您缺少权限检查,您确定您的应用程序允许您检查通讯簿的权限吗?显然,如果“book”的计数为0,则foreach将不会运行。因此,正如其他人所建议的,您需要在“var book=new Xamarin.Contacts.AddressBook();”之后中断,并查看“book”是否有值等。是的,foreach有一个异常。你知道我是否缺少使用xamarin联系人的权限吗?我发现的每件事看起来都像是我要为它做一个大的重写你需要捕获异常兄弟,就像在catch(exception exc){throw exc;}