Enum Ploblem总是如何价值?

时间:2009-08-27 07:44:40

标签: c# enums

public enum FrameStatus
{
    NotReport = 0,
    NormalStatus = 1,
    NotNormalstatus = 2
}

但总是FrameStatus.NormalStatus如何?

public FrameStatus FrameReportStatus(int Framid, string Timebet)
{
    foreach (FrameCam fc in al)
    {
        if (fc.Timebet == Timebet && fc.IdFrame == Framid)
        {
           if ((int)fc.status == 1) fc.status = FrameStatus.NormalStatus;
           else if ((int)fc.status == 2) fc.status = FrameStatus.NotNormalstatus;
           else fc.status = FrameStatus.NotReport;
           return fc.status;
        }
    }
    return FrameStatus.NotReport;
}

我的完整课程

class FrameCam
{
    private ArrayList al = new ArrayList();
    public string strConnect;

    public FrameStatus status = FrameStatus.NormalStatus;
    public string Timebet;
    public int IdFrame;

    public FrameCam()
    {

    }
    public FrameCam(string st, string bt)
    {
        strConnect = st;
        Timebet = bt;
        LoadtoList();
    }

    public FrameStatus GetFramStatus(int Framid, string timebet)
    {
        foreach (FrameCam fc in al)
        {
            if (Framid == fc.IdFrame && timebet == fc.Timebet)
            {
                return fc.status;
            }
        }
        return FrameStatus.NotReport;
    }
    private void LoadtoList()
    {
        SqlConnection conn = null;
        SqlDataReader sr = null;
        try
        {
            string query =
                "SELECT * FROM FrameReport WHERE convert(varchar, GETDATE(), 101) = convert(varchar, DateTimeSign, 101) AND TimeSignBeetWeen='" +this.Timebet+"'";

            conn = new SqlConnection(this.strConnect);
            conn.Open();
            SqlCommand sc = new SqlCommand();
            sc.CommandText = query;
            sc.Connection = conn;
            sr = sc.ExecuteReader();
            while (sr.Read())
            {
                FrameCam fc = new FrameCam();
                fc.Timebet = sr["TimeSignBeetWeen"].ToString();
                fc.IdFrame = (int)sr["IdFrame"];
                if ((int)sr["Status"] == (int)FrameStatus.NormalStatus)
                {
                    status = FrameStatus.NormalStatus;
                }
                if ((int)sr["Status"] == (int)FrameStatus.NotNormalstatus)
                {
                    status = FrameStatus.NotNormalstatus;
                }
                else status = FrameStatus.NotReport;

                al.Add(fc);
            }
        }
        catch (Exception)
        {
        }
        finally
        {
            if (sr != null) sr.Close();
            if (conn != null) conn.Close();
        }
    }

    public FrameStatus FrameReportStatus(int Framid, string Timebet)
    {
        foreach (FrameCam fc in al)
        {
            if (fc.Timebet == Timebet && fc.IdFrame == Framid)
            {
                if ((int)fc.status == 1) fc.status = FrameStatus.NormalStatus;
                else if ((int)fc.status == 2) fc.status = FrameStatus.NotNormalstatus;
                else fc.status = FrameStatus.NotReport;
                return fc.status;
            }
        }
        return FrameStatus.NotReport;
    }
}

2 个答案:

答案 0 :(得分:1)

你没有在LoadToList中为fc.Status分配任何东西,而且FrameCam的'status'字段的初始化是“FrameStatus.NormalStatus”。如果您更新LoadToList中的代码以分配给fc.status(而不是this.status,如此处所示),那么它应该按预期工作。

作为旁注,LoadToList应该是一个静态方法,可以缓解这个问题。

答案 1 :(得分:-1)

使用调试器。逐步完成代码。

代码没有采取您认为正在采取的路径。

如果您不知道如何在调试器中单步执行代码,则必须学习。

这不是计算机程序员的可选技能。