日期:2014-05-19  浏览次数:20466 次

c#代码疑问,烦请各位指点
以下代码:        
  string   GetPhotoNameByID(int   id)
{
        string   photoname;
        SqlConnection   conn   =   DbOper.CreateConn();
        try
        {
                DbOper.OpenConn(conn);
                string   cmdstr   =   "select   @photoname=photoname   from   photos   where   id=@id ";
                SqlCommand   cmd   =   new   SqlCommand(cmdstr,   conn);
                cmd.Parameters.Add( "@photoname ",   SqlDbType.NVarChar,   50);
                cmd.Parameters.Add( "@id ",   SqlDbType.Int,   4);

                cmd.Parameters[ "@photoname "].Direction   =   ParameterDirection.Output;
                cmd.Parameters[ "@id "].Value   =   id;
                cmd.ExecuteNonQuery();
                photoname   =   cmd.Parameters[ "@photoname "].Value.ToString();
        }
        catch   (Exception   ee)
        {
                DbOper.WriteErrLog(Request.Url.ToString(),   "GetPhotoNameByID   failed, "   +   ee.Message   +   ",userid= "   +   Session[ "userid "]);
        }
        finally
        {
                DbOper.CloseConn(conn);
        }
        return   photoname;
}

编译出错,提示错误     使用了未赋值的局部变量“photoname”
如果第一句改为string   photoname   =   " ";就可以成功,但是如果修改这样以后,又觉得代码做了不必要做的事,事必会影响性能。

各位有没有更好的写这段代码的方式,如何写这段代码才最好?
如果代码中有其它问题,也一并指出,谢谢指点

------解决方案--------------------
1.把string photoname;也放入try当中。
2.可以不string photoname= " ";
而用string photoname=null;
或者 string photoname = new string();
------解决方案--------------------
一个string不会浪费性能的