Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.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/2/.net/25.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# 无法将类型“string”隐式转换为“System.type”_C#_.net_Enums - Fatal编程技术网

C# 无法将类型“string”隐式转换为“System.type”

C# 无法将类型“string”隐式转换为“System.type”,c#,.net,enums,C#,.net,Enums,我正在尝试在控制台应用程序中构建一个联系人管理器程序,使用列表来存储和显示数据。我需要查看一个报告,其中显示可用联系人的摘要,然后提供一个菜单,允许用户与程序交互。我有一个方法来创建一个包含数据和联系人对象的列表,但我不断收到错误,无法在我的createContact方法中将类型“string”隐式转换为“System.type”。我不知道如何解决这个问题 如有任何指导,将不胜感激 public static void createContact() { Con

我正在尝试在控制台应用程序中构建一个联系人管理器程序,使用列表来存储和显示数据。我需要查看一个报告,其中显示可用联系人的摘要,然后提供一个菜单,允许用户与程序交互。我有一个方法来创建一个包含数据和联系人对象的列表,但我不断收到错误,无法在我的createContact方法中将类型“string”隐式转换为“System.type”。我不知道如何解决这个问题

如有任何指导,将不胜感激

     public static void createContact()
    {
        Contact c1 = new Contact();
        Console.WriteLine("\nGetFirstName");
        c1.GetFirstName = Console.ReadLine();
        Console.WriteLine("\nGetLastName");
        c1.GetLastName = Console.ReadLine();
        Console.WriteLine("\nGetEmailAddress");
        c1.GetEmailAddress = Console.ReadLine();
        Console.WriteLine("\nGetPhoneNumber");
        c1.GetPhoneNumber = Console.ReadLine();
        Console.WriteLine("\nContactTypes");
        c1.ContactTypes = Console.ReadLine();

        //Create more contacts...

        //Add all contacts here
        ContactCollection contactList = new ContactCollection();
        contactList.Add(c1);

        //Loop through list
        foreach (Contact c in contactList)
        {
            Console.WriteLine(c.GetFirstName);
            Console.WriteLine(c.GetLastName);
            Console.WriteLine(c.GetEmailAddress);
            Console.WriteLine(c.GetPhoneNumber);
           // error line
            Console.WriteLine(c.ContactTypes);

        }

        Console.ReadLine();

    }
这是我的联络班

Console.ReadLine只返回一个字符串。如果要创建任何对象,例如:ContactTypes,则应使用该字符串创建其实例

ContactTypes应该是枚举而不是类型

公共类型ContactType应为公共ContactType ContactType

enum ContactTypesEnum{Family,Friend,Professional}应为enum ContactTypes{Family,Friend,Professional}

你应该像下面这样做。最后一个参数是ignoreCare,我已将其设置为true


确保联系人类属性GetFirstName、GetLastName等为字符串,
或将inputConsole.ReadLine值转换为所需类型。

Console.ReadLine返回字符串。 您需要的是从Readline返回的类型

c1.ContactTypes = Console.ReadLine().GetType();
但这没有任何意义,因为Console.Readline始终是Sytem.String。您可能需要将返回的值字符串转换为您喜欢的对象

var currString = Console.ReadLine().GetType();
object currObject = currString;
if(//Check if numeric for ex.)
{
    currObject = Convert.ToInt32(currString);     
}
//Do some more validation
//Now getType()
c1.ContactTypes = Console.ReadLine();

另请参见CharithJ和Chandrashekar Jupalli的答案

我想您错过了“联系人”课程

或许

public Type ContactTypes
应该是这样的:

public ContactTypesEnum Type 

像这样:

private ContactTypesEnum _contactTypes;

你的联络班是什么样子的?您正在尝试将Console.ReadLine返回的字符串分配给其所有属性。它们都是字符串吗?您还没有发布有此问题的代码,您必须至少发布Contact类。另外,突出显示错误发生的位置。
public ContactTypesEnum Type 
private Type _contactTypes;
private ContactTypesEnum _contactTypes;