C#新手 结构体中嵌套枚举后输出问题

nickxzh 2012-07-27 10:10:55
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace csharp011
{
public enum gender { man, woman };
public enum marital_status { y, n };


/// <summary>
/// 访问修饰符 struct 结构名
/// {
/// 结构体;
/// }
/// </summary>
//e.g:
public struct personal
{
public string name;
public gender sex;
public int age;
public marital_status ms;
public string tel;
public string address;
};

class Program
{
static void Main(string[] args)
{
bool flag1 = false,flag2 = false;
personal pers;

Console.Write("请输入个人信息:\n姓名(值为string类型):\t");
pers.name = Console.ReadLine();
Console.Write("性别(值为enum gender类型):\t");
do
{
try
{
pers.sex = (gender)(Enum.Parse(typeof(gender), Console.ReadLine()));
flag1 = true;
}
catch (System.Exception ex)
{
Console.WriteLine("{0},请重新输入!", ex.Message);
flag1 = false;
}
} while (!flag1);
Console.Write("年龄(值为int类型):\t");
pers.age = Int32.Parse(Console.ReadLine());
//pers.ms = (marital_status)(Enum.Parse(typeof(marital_status), Console.ReadLine()));
Console.Write("婚姻状况(值为enum marital_status类型):\t");
do
{
try
{
pers.ms = (marital_status)(Enum.Parse(typeof(marital_status), Console.ReadLine()));
flag2 = true;
}
catch (System.Exception ex)
{
Console.WriteLine("{0},请重新输入!", ex.Message);
flag2 = false;
}
} while (!flag2);
Console.Write("电话号码(值为string类型):\t");
pers.tel = Console.ReadLine();
Console.Write("家庭住址(值为string类型):\t");
pers.address = Console.ReadLine();


Console.WriteLine("输出个人信息:");
Console.WriteLine("姓名:\t"+pers.name);
//Console.WriteLine("性别:\t"+pers.sex);
//输出由键盘接收的枚举出错,说是未赋值的字段,请问要怎么处理??

Console.WriteLine("年龄:\t"+pers.age);
//Console.WriteLine("婚姻状况:{0}\t", pers.ms);
Console.WriteLine("电话号码:\t"+pers.tel);
Console.WriteLine("家庭地址:\t"+pers.address);



Console.WriteLine("\n按任意键退出程序...");
Console.ReadKey();
}
}
}
...全文
259 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Anod 2012-07-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
personal pers;
要初始化
pers = new personal();
[/Quote]

我汗,只注意他的枚举了 ,没想到结构都没初始化,,,这得有多新的基础功力啊。。。
ParanoidKing 2012-07-27
  • 打赏
  • 举报
回复
personal pers;
要初始化
pers = new personal();
Anod 2012-07-27
  • 打赏
  • 举报
回复
pers创建了之后 pers.sex=new gender();另外一个也一样。。。
nickxzh 2012-07-27
  • 打赏
  • 举报
回复
//Console.WriteLine("性别:\t"+pers.sex);
//
//Console.WriteLine("婚姻状况:{0}\t", pers.ms);

上面的这两句有问题,输出由键盘接收的枚举出错,说是未赋值的字段,请问要怎么处理??

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧