先贴代码,疑问在下面
1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Linq; 5 using System.Web; 6 7 namespace t1_NewsInfo_crud 8 { 9 /// <summary> 10 /// List 的摘要说明 11 /// </summary> 12 public class List : IHttpHandler 13 { 14 15 public void ProcessRequest(HttpContext context) 16 { 17 string sql = "select * from newsInfo n1 left join typeinfo t1 on n1.TypeId=t1.TypeId"; 18 DataTable dt = SqlHelper.ExecuteList(sql); 19 20 List<NewsInfo> list1=new List<NewsInfo>(); 21 foreach (DataRow dataRow in dt.Rows) 22 { 23 list1.Add(new NewsInfo() 24 { 25 NewsId = Convert.ToInt32(dataRow["NewsId"]), 26 NewsTitle = dataRow["NewsTitle"].ToString(), 27 SubTime = Convert.ToDateTime(dataRow["SubTime"]), 28 TypeId = Convert.ToInt32(dataRow["TypeId"]), 29 TypeTitle = dataRow["TypeTItle"].ToString() 30 }); 31 } 32 33 RazorHelper.Render("list.html",list1,null); 34 } 35 36 public bool IsReusable 37 { 38 get 39 { 40 return false; 41 } 42 } 43 } 44 }
(1)在第23行代码 new NEWSINFO(){} 这个是什么含义? 能理解为调用的类的初始化器吗?
(2)还是23行, list1.add() 这里不理解,是在向泛型集合中添加类的构造器吗?
----------------------------------------------------------
像以下代码,我明白将对象加入泛型集合:
List<Person> persons = new List<Person>();
Person p1 = new Person("张三", 30);
Person p2 = new Person("李四", 20);
Person p3 = new Person("王五", 50);
persons.Add(p1);
persons.Add(p2);
persons.Add(p3);
----------------------------------------------------------
请能看明白以上代码含义的朋友帮我解惑一下, 不胜感激~!
23行到30行,换种写法或许你就能理解了:
NewsInfo news = new NewsInfo(); news.NewsId = Convert.ToInt32(dataRow["NewsId"]); news.NewsTitle = dataRow["NewsTitle"].ToString(); news.SubTime = Convert.ToDateTime(dataRow["SubTime"]); news.TypeId = Convert.ToInt32(dataRow["TypeId"]); news.TypeTitle = dataRow["TypeTItle"].ToString(); list1.Add(news);
或者更贴近你能理解的:
NewsInfo news = new NewsInfo(){ NewsId = Convert.ToInt32(dataRow["NewsId"]), NewsTitle = dataRow["NewsTitle"].ToString(), SubTime = Convert.ToDateTime(dataRow["SubTime"]), TypeId = Convert.ToInt32(dataRow["TypeId"]), TypeTitle = dataRow["TypeTItle"].ToString() }; list1.Add(news);
感谢答复
如果拆成这样也许你就知道了。
NewsInfo news_=new NewsInfo()
{
NewsId = Convert.ToInt32(dataRow["NewsId"]),
NewsTitle = dataRow["NewsTitle"].ToString(),
SubTime = Convert.ToDateTime(dataRow["SubTime"]),
TypeId = Convert.ToInt32(dataRow["TypeId"]),
TypeTitle = dataRow["TypeTItle"].ToString()
};//这里是实例化的时候,赋值!原理和下面这个一样
NewsInfo news_=new NewsInfo();
news_.NewsId = Convert.ToInt32(dataRow["NewsId"]);
news_.NewsTitle = dataRow["NewsTitle"].ToString();
news_.SubTime = Convert.ToDateTime(dataRow["SubTime"]);
news_.TypeId = Convert.ToInt32(dataRow["TypeId"]);
news_.TypeTitle = dataRow["TypeTItle"].ToString();
List<NewsInfo> list1=new List<NewsInfo>();
list1.add(news_);
这个list里放的就是你这个实体模型的集合!你绝对看得懂!
1、你这个就是集合,不是泛型集合。 list1的类型是List<NewsInfo>,表示一个LIST,里面存放对象类型为NewsInfo的对象。
2、List1是一个集合,List1.add(Item),表示往集合里面加入一个元素。(此处为NewsInfo类型的对象)
3、
list1.Add(new NewsInfo() { NewsId = Convert.ToInt32(dataRow["NewsId"]), NewsTitle = dataRow["NewsTitle"].ToString(), SubTime = Convert.ToDateTime(dataRow["SubTime"]), TypeId = Convert.ToInt32(dataRow["TypeId"]), TypeTitle = dataRow["TypeTItle"].ToString() });
这个代码与下面是一样的
NewsInfo myItem =new NewsInfo(){
NewsId = Convert.ToInt32(dataRow["NewsId"]),
NewsTitle = dataRow["NewsTitle"].ToString(),
SubTime = Convert.ToDateTime(dataRow["SubTime"]),
TypeId = Convert.ToInt32(dataRow["TypeId"]),
TypeTitle = dataRow["TypeTItle"].ToString()
};
list1.add(myItem);
你回答的第二项
list1.Add() <---这个括号里面 直接是 new NewsInfo() 这个类 而不是实例化的对象
一般对象实例化是
Class A = new Class(){} 这样 将A加进集合嘛,而这个案例中 直接写new NewsInfo()
我就有点糊涂了,不清楚他们之间有什么区别
感谢你耐心回复
@蜗牛阿布: 这个就是微软大神搞出来的。
他们不想写两行代码。
你现在基础知识一塌糊涂的样子,看不懂你就别用好了,用回你看得懂的。
另外,多看书,不求甚解... 有些东西就是约定。
比如你女朋友说老地方见,你要是不知道哪儿是老地方,
为什么是老地方,那就没有办法了。
@爱编程的大叔:
你说的很对。
我基础知识不好,但是我尽可能的多看去理解了。这需要过程。
我们掌握的知识分量不同,站的高度不一样,角度就不一样。
感谢你的答复,说到了我问题点子上。
通过询问和推敲,我现在理解为是向集合中添加匿名对象,这个对象用到了类的初始化器。
给自己的类起个名字叫list,就真以为自己是list了