C#自定义类无法赋值

狂舖 2019-04-26 08:48:32
public class Procedure
{
/// <summary>
/// 本封装类仅适用于存储过程P_viewPage
/// </summary>
//表名
public string _TableName;
public string TableName
{
get { return _TableName; }
set { _TableName = TableName; }
}
//显示列名,如果是全部字段则为*
public string _FieldList;
public string FieldList
{
get { return _FieldList; }
set { _FieldList = FieldList; }
}
}
}
如上,自定义了一个类,然后在别的地方初始化这个类,给他赋值,得到的却是null,有没有大牛给解释一下为什么?怎么解决?谢谢
public static DataSet GetProcedureDataSet(string Table, string text)
{
classlib.Procedure pro = new classlib.Procedure();
pro.TableName = Table.ToString();
pro.FieldList = text.ToString();
DataSet ds = DataSource.SqlHelp.StoredProcedure(pro);
return ds;
}
...全文
550 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
狂舖 2019-04-26
  • 打赏
  • 举报
回复
引用 9 楼 正怒月神 的回复:
你这个不是自动生成的属性吧。。。
自己手打的?
public string TableName
{
get { return _TableName; }
set { _TableName = TableName; }
}

你这个set肯定有问题。。。 _TableName = TableName; 但是从头到尾,你都没给TableName赋值过,所以肯定为空啊。
正常来说,应该是一个 value的关键字
十分感谢,问题已经解决了
狂舖 2019-04-26
  • 打赏
  • 举报
回复
引用 8 楼 dugupiaoyun 的回复:
这是谁叫你的错误写法??_TableName = TableName, TableName本身就是空,你的_TableName就一直就是空!

public string _TableName;
public string TableName
{
get { return _TableName; }
set { _TableName = TableName; }
}

正确写法:

public string _TableName;
public string TableName
{
get { return _TableName; }
set { _TableName = value; }
}

感谢感谢,正解,问题已经解决
狂舖 2019-04-26
  • 打赏
  • 举报
回复
引用 7 楼 OrdinaryCoder 的回复:

public int Id
{
get { return id; }
set { id = value; }
}

正常属性

public string TableName
{
get { return _TableName; }
set { _TableName = TableName; }
}

你的属性 TableName没赋过值 当然是null了
正解,感谢感谢
正怒月神 2019-04-26
  • 打赏
  • 举报
回复
你这个不是自动生成的属性吧。。。 自己手打的? public string TableName { get { return _TableName; } set { _TableName = TableName; } } 你这个set肯定有问题。。。 _TableName = TableName; 但是从头到尾,你都没给TableName赋值过,所以肯定为空啊。 正常来说,应该是一个 value的关键字
dugupiaoyun 2019-04-26
  • 打赏
  • 举报
回复
这是谁叫你的错误写法??_TableName = TableName, TableName本身就是空,你的_TableName就一直就是空!

 public string _TableName;
public string TableName
{
      get { return _TableName; }
      set { _TableName = TableName; }
}
正确写法:

 public string _TableName;
public string TableName
{
      get { return _TableName; }
      set { _TableName = value; }
}
OrdinaryCoder 2019-04-26
  • 打赏
  • 举报
回复

public int Id
{
get { return id; }
set { id = value; }
}

正常属性

public string TableName
{
get { return _TableName; }
set { _TableName = TableName; }
}

你的属性 TableName没赋过值 当然是null了
hztltgg 2019-04-26
  • 打赏
  • 举报
回复
Procedure 是上面定义的么?还是你反射工具查看的? 很可能TableName属性设置不是简单的下面两句赋值,是有验证代码的 get { return _TableName; } set { _TableName = TableName; }
狂舖 2019-04-26
  • 打赏
  • 举报
回复
引用 4 楼 秋的红果实 的回复:
程序是不是没有执行到new?
提前打了断点

进这个方法之前就打了断点了,我是按F11一步一步进来的。执行new了,也执行赋值语句了,但是走过去,回过头来再看的时候,值还是为null
秋的红果实 2019-04-26
  • 打赏
  • 举报
回复
程序是不是没有执行到new? 提前打了断点
狂舖 2019-04-26
  • 打赏
  • 举报
回复
public static DataSet GetProcedureDataSet(string Table, string text)
{
classlib.Procedure pro = new classlib.Procedure();
pro.TableName = Table;
pro.FieldList = text;
DataSet ds = DataSource.SqlHelp.StoredProcedure(pro);
return ds;
}
对这个方法进行调试,传进来的Table和text有值,但是当程序走到 pro.FieldList = text; 这一句时,回头看 pro.TableName的值是null,不知道为什么
exception92 2019-04-26
  • 打赏
  • 举报
回复
Debug模式调试一下,追踪一下对象的状态,贴出的代码来看 没有问题。
hztltgg 2019-04-26
  • 打赏
  • 举报
回复
不要生造一种错误提示,“自定义类无法赋值”,这就不可能,尤其你的代码还这么简单,classlib.Procedure pro = new classlib.Procedure(); 后,pro肯定不会是空,所以你的错误到底是什么?

110,533

社区成员

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

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

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