??xml version="1.0" encoding="utf-8" standalone="yes"?>97热久久免费频精品99,亚洲一区精品伊人久久伊人,久久久久人妻精品一区http://www.shnenglu.com/fenglin/category/17074.html创新、创意、挑?/description>zh-cnWed, 13 Jul 2011 03:23:20 GMTWed, 13 Jul 2011 03:23:20 GMT60保护|站安全q用WebH体讉K数据http://www.shnenglu.com/fenglin/articles/150750.html风林风林Tue, 12 Jul 2011 05:27:00 GMThttp://www.shnenglu.com/fenglin/articles/150750.htmlhttp://www.shnenglu.com/fenglin/comments/150750.htmlhttp://www.shnenglu.com/fenglin/articles/150750.html#Feedback0http://www.shnenglu.com/fenglin/comments/commentRss/150750.htmlhttp://www.shnenglu.com/fenglin/services/trackbacks/150750.html1、创建登录WebH体
新徏一个WebH体Q在其中d用于用户w䆾验证的Login控g

2、ؓASP.NET|站配置安全Ҏ?br />使用“ASP.NET|站理工具”d和维护用戗定义角色和创徏讉K规则Q选择“|站”|“ASP.NET配置”来启动该工具Q?br />注意Q在|站路径中不能存?字符Q否则在启动ASP.NET配置理工具时会p|?/u>


3、实现基于窗体的安全?br />~辑Web.config文gQ将<authentication mode>属性设?Forms"Q指定登录窗体的URL,q指定所需的Q何n份验证参数。如Q?
1        <authentication mode="Forms">
2            <forms loginUrl="LoginForm.aspx" timeout="5" cookieless="AutoDetect" protection="All"/>
3        </authentication>

4、创Z个WebH体来显C数据库数据
向WebH体d一个数据源控gQƈ配置它来q接恰当的数据库Q向WebH体d一个GridView控gQ将其DataSourceId属性设|ؓ数据源控?br />
5、获取数据,q在WebH体中以便于理的Ş式分ҎC数?br />GridView控g的AllowPaging属性设|ؓTrue。将PagerSize属性设|ؓ每页允许昄的行数。修改PagerSettings和PagerStyle属性,使其与WebH体的样式匹?br />
6、用GridView控g修改数据库中的行
定数据源允许更新数据;?#8220;GridViewd”标记菜单中选择“启用更新”

7、选择GridView控g中的一行,从一个WebH体D臛_一个WebH体
某列定义成HyperLinkField控g。在DataNavigateUrlFormatString属性中Q指定目标窗体的URL和可选的查询字符Ԍq在DataNavigateUrlFields属性中指定要作为查询字W串参数传给H体的Q何数据;在目标窗体中Q通过讉KWebH体的Request属性的QueryString集合来获取Q何查询字W串参数

8、在q行ӞGridView控gl定C个数据源
GridView控g的DataSource属性设|ؓ数据源。将GridView的Q何BoundField列的DataField属性设|ؓ数据源中容纳着要显C的数据的属性的名称Q以字符串的形式指定Q?br />如:
 1public partial class OrderHistory : System.Web.UI.Page
 2{
 3    protected void Page_Load(object sender, EventArgs e)
 4    {
 5        string customerID = Request.QueryString["CustomerID"];
 6        this.OrderLabel.Text += " " + customerID;
 7        this.Title += " " + customerID;
 8
 9        OrderHistoryDataContext context = new OrderHistoryDataContext();
10        var orderDetails = context.CustOrderHist(customerID);
11        this.OrderGrid.DataSource = orderDetails;
12
13        BoundField productName = this.OrderGrid.Columns[0as BoundField;
14        productName.DataField = "ProductName";
15        BoundField total = this.OrderGrid.Columns[1as BoundField;
16        total.DataField = "Total";
17        this.OrderGrid.DataBind();
18
19    }

20}




风林 2011-07-12 13:27 发表评论
]]>
用户输入校验http://www.shnenglu.com/fenglin/articles/149935.html风林风林Fri, 01 Jul 2011 11:33:00 GMThttp://www.shnenglu.com/fenglin/articles/149935.htmlhttp://www.shnenglu.com/fenglin/comments/149935.htmlhttp://www.shnenglu.com/fenglin/articles/149935.html#Feedback0http://www.shnenglu.com/fenglin/comments/commentRss/149935.htmlhttp://www.shnenglu.com/fenglin/services/trackbacks/149935.html1、执行服务器端的用户输入校验
利用Server控g的事Ӟ例如TextBox控g的TextChanged事g

2、执行客L的用戯入校?br />使用校验控g。将ControlToValidate属性设校验的控ӞErrorMessage属性设昄的错误消息。验证EnableClientScript属性已设ؓTrue

3、要求用户必d文本框内输入?/strong>
使用RequiredFieldValidator控g

4、检查在文本框中输入的数据的cd和范?/strong>
使用RangeValidatotr控g。根据需要设|TypeQMaximumValue和MinimumValue属?br />
5、显C校验错误消息汇?/strong>
使用ValidationSummary控g。确定ShowSummary属性已设ؓTrue。如果希望支持动态HTML的浏览器在消息框中显C错误消息,ShowMessageBox设ؓTrue

风林 2011-07-01 19:33 发表评论
]]>
ASP.NET开发Web应用E序http://www.shnenglu.com/fenglin/articles/149578.html风林风林Mon, 27 Jun 2011 08:55:00 GMThttp://www.shnenglu.com/fenglin/articles/149578.htmlhttp://www.shnenglu.com/fenglin/comments/149578.htmlhttp://www.shnenglu.com/fenglin/articles/149578.html#Feedback0http://www.shnenglu.com/fenglin/comments/commentRss/149578.htmlhttp://www.shnenglu.com/fenglin/services/trackbacks/149578.html1、创建Web应用E序
使用“ASP.NET|站”模板新徏一个网站。指定是想用Development Web ServerQ指定一个文件系l位|和文g名)Q还是想使用IISQ指定一个HTTP位置和URLQ?br />
2、查看ƈ~辑WebH体的HTML定义
在设计视囄口中单击H体下方?#8220;?#8221;标签Q或者按Shift+F7Q?br />
3、ؓWebH体创徏样式
选择“格式”|“新徏样式”。?#8220;样式生成?#8221;对话框来定义H体的样?br />
4、在WebH体上添加HTML控gQ用HTML控gQ可以更Ҏ地将现有的ASP|页导入ASP.NETQ?/strong>
展开工具׃?#8220;HTML”cd。将控g拖放到WebH体?br />
5、ؓASP.NET Server控g创徏事g处理E序
在设计视图中Q选定WebH体上的控g。在“属?#8221;H口中,单击“事g”工具栏按钮(有闪电图形的按钮Q。找到想要用的事gQ然后输入事件处理方法的名称Q或者双M件来使用默认名称。在“代码和文本编辑器”H口中,~写代码来处理事?br />
6、创Z?br />为网站添加一个App_Themes文g夏Vؓ主题创徏一个子文g夏V在q个文g夹中Q创Z个外观文件来定义控g的属?br />
7、向|站应用一个主?br />要么使用每个늚@Page属性来指定主题Q?br />%@Page Theme="BlueTheme" .....%
要么修改Web.config文gQƈ在pages元素中指定主题:
<pages theme="BlueTheme" />

风林 2011-06-27 16:55 发表评论
]]>
使用数据l定来显C?~辑数据(WPF&LINQ)http://www.shnenglu.com/fenglin/articles/149543.html风林风林Mon, 27 Jun 2011 02:53:00 GMThttp://www.shnenglu.com/fenglin/articles/149543.htmlhttp://www.shnenglu.com/fenglin/comments/149543.htmlhttp://www.shnenglu.com/fenglin/articles/149543.html#Feedback0http://www.shnenglu.com/fenglin/comments/commentRss/149543.htmlhttp://www.shnenglu.com/fenglin/services/trackbacks/149543.html阅读全文

风林 2011-06-27 10:53 发表评论
]]>
ADO.NET,DLINQ查询数据http://www.shnenglu.com/fenglin/articles/149502.html风林风林Sun, 26 Jun 2011 09:14:00 GMThttp://www.shnenglu.com/fenglin/articles/149502.htmlhttp://www.shnenglu.com/fenglin/comments/149502.htmlhttp://www.shnenglu.com/fenglin/articles/149502.html#Feedback0http://www.shnenglu.com/fenglin/comments/commentRss/149502.htmlhttp://www.shnenglu.com/fenglin/services/trackbacks/149502.html1SqlConne...  阅读全文

风林 2011-06-26 17:14 发表评论
]]>
WPF开?/title><link>http://www.shnenglu.com/fenglin/articles/149264.html</link><dc:creator>风林</dc:creator><author>风林</author><pubDate>Thu, 23 Jun 2011 04:57:00 GMT</pubDate><guid>http://www.shnenglu.com/fenglin/articles/149264.html</guid><wfw:comment>http://www.shnenglu.com/fenglin/comments/149264.html</wfw:comment><comments>http://www.shnenglu.com/fenglin/articles/149264.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/fenglin/comments/commentRss/149264.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/fenglin/services/trackbacks/149264.html</trackback:ping><description><![CDATA[<div>1、创Z个WPFQWindows Presentation FoundationQ应用程?br />使用“WPF应用E序”模板<br /><br />2、将控gd到窗?br />控件从“工具?#8221;拖放到窗?br /><br />3、更新窗体或控g的属?br />在设计视图中单击H体或控件。然后选择以下操作之一Q?br />A、在“属?#8221;H口Q按F4打开Q中Q选择惌更改的属性,q输入新?br />B、在XAMLH格中,?lt;Window>元素或者定义了控g的其它元素中指定属性和?br /><br />4、查看窗体背后的代码<br />选择以下操作之一Q?br />A、选择“视图”|“代码”<br />B、在设计视图中右击,然后从弹出的快捷菜单中选择“查看代码”<br />C、在解决Ҏ资源理器中Q展开H体?xaml文gQ然后双M面的.xaml.cs文g<br /><br />5、定义一l互斥的单选按?br />在窗体上d一个面板控Ӟ例如StackPanel。将单选按钮添加到面板中。同一个面板中的所有单选按钮都是互斥的?br /><br />6、处理控件或H体的事?br />在XAMLH格中,d代码来指定事Ӟ例如输入Closing=''Q,然后从快捯单中Q要么选择一个现有的事g处理ҎQ要有正的{֐Q,要么选择<新徏事g处理E序>命o。然后,在事件方法中写代码来处理事g?br /><br />7、ؓWPFH体创徏一个菜?br />d一个DockPanel控gQ把它放在窗体顶部。然后在DockPanel控g中添加一个Menu控g?br /><br />8、在菜单中添加菜单项<br />为Menu控gdMenuItem元素。设|Header属性来指定菜单的昄文g。ؓ了指定菜单项的访问快捷键Q可以在字母前面d一个下划线字符?br /><br />9、在菜单中创Z条分隔线<br />单添加一个Seperator元素?br /><br />10、单击菜单项后执行一个操?br />选择菜单,然后为Click事g指定一个事件方法。将你的代码dC件方法中?br /><br />11、创建快捯?br />在Windows资源Q?lt;Window.Sources>...</Window.Sources>Q中d一个ContextMenu。采取和在普通菜单中d菜单一L方式Q在快捷菜单中添加菜单项?br /><br />12、将快捷菜单兌到窗体或控g<br />讄H体或控件的ContextMenu属性,让这个属性引用快捯单?br /><br />13、动态创建快捷式菜单<br />创徏一个ContextMenu对象。用定义了每个菜单的MenuItem对象来填充这个对象的Items集合Q用Items.AddҎQ。设|窗体或控g的ContextMenu属性,使之引用q个ContextMenu?br /><br />14、提C用h定要保存到哪个文件中<br />使用SaveFileDialogcR用ShowDialogҎ来显C对话框。对话框关闭后,FileName属性就包含了用户选择的文件名?br /><br />15、用数据绑定技术,窗体控件的属性与对象的属性绑?br />在控件属性的XAML代码中,d<Binding>元素来指定绑定源(一个对?以及要和对象中的哪个属性绑定。如Q?br /><TextBox ...><br />  <TextBox.Text><br />    <Binding Source="{StaticResource customerData}"<br />      Path="ForeName" /><br />  </TextBox.Text><br /></TextBox><br /><br />16、允怸个数据绑定对用户输入的数据进行校?br />?lt;Binding>元素d<Binding.ValidationRules>子元素。如Q?br /><Binding Source="{StaticResource customerData}" Path="ForeName" /><br />  <Binding.ValidationRules><br />    <ExceptionValidationRules /><br />  </Binding.ValidationRules><br /></Binding><br /><br />17、采用用记不反感的方式昄错误信息<br />定义一个样式,它负责检对控g的Validation.HasError属性的更改Qƈ控件的ToolTip属性设为异常所q回的消息。将此样式应用于需要校验的所有控件。如Q?br /><Style x:Key="errorStyle" TargetType="Control"><br />            <Style.Triggers><br />                <Trigger Property="Validation.HasError" Value="True"><br />                    <Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self},Path=(Validation.Errors)[0].ErrorContent}" /><br />                </Trigger><br />            </Style.Triggers><br />            <br />        </Style><br /><br />18、在E序控制下校验所有控Ӟ而不是在用户从一个控件切换到另一个控件时q行校验<br />在定义绑定的XAML代码中,UpdateSourceTrigger属性设?Explicit"Q从而将校验推迟到应用程序明要求进行校验的时候。ؓ了标准化所有控件的数据Q请为每个控件的已绑定的属性创Z个BindingExpression对象Qƈ调用该对象的UpdateSourceҎ。检查每个BindingExpression对象的HasError属性。如果这个属性ؓtrueQ表明校验失败?/div><img src ="http://www.shnenglu.com/fenglin/aggbug/149264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/fenglin/" target="_blank">风林</a> 2011-06-23 12:57 <a href="http://www.shnenglu.com/fenglin/articles/149264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自定义结?cȝ操作W重?/title><link>http://www.shnenglu.com/fenglin/articles/149058.html</link><dc:creator>风林</dc:creator><author>风林</author><pubDate>Mon, 20 Jun 2011 10:55:00 GMT</pubDate><guid>http://www.shnenglu.com/fenglin/articles/149058.html</guid><wfw:comment>http://www.shnenglu.com/fenglin/comments/149058.html</wfw:comment><comments>http://www.shnenglu.com/fenglin/articles/149058.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/fenglin/comments/commentRss/149058.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/fenglin/services/trackbacks/149058.html</trackback:ping><description><![CDATA[<div><strong>1、实现操作符<br /></strong>先写关键字public和staticQ后跟返回类型,后跟operator关键字,再后跟要声明的操作符W号Q最后在一对圆括号中添加恰当的参数。如Q?br />struct Hour<br />{<br />  ...<br />  public static bool operator==(Second lhs, Second rhs)<br /> {<br />  ...<br />  }<br />  ...<br />}<br /><br /><strong>2、声明{换操作符<br /></strong>先写关键字public和staticQ后跟关键字implicit(隐式转换)或explicit(昄转换)Q后跟operator关键字,后跟要{换成的目标类型,然后在一对圆括号中添加一个参数来表示转换时的来源cd。如Q?br />struct Hour<br />{<br />  ...<br />  public static implicit operator Hour(int arg)<br />  {<br />    ...<br />  }<br />  ...<br />}</div><img src ="http://www.shnenglu.com/fenglin/aggbug/149058.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/fenglin/" target="_blank">风林</a> 2011-06-20 18:55 <a href="http://www.shnenglu.com/fenglin/articles/149058.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用查询表达式来查询内存中的数据QLINQQ?/title><link>http://www.shnenglu.com/fenglin/articles/149055.html</link><dc:creator>风林</dc:creator><author>风林</author><pubDate>Mon, 20 Jun 2011 10:13:00 GMT</pubDate><guid>http://www.shnenglu.com/fenglin/articles/149055.html</guid><wfw:comment>http://www.shnenglu.com/fenglin/comments/149055.html</wfw:comment><comments>http://www.shnenglu.com/fenglin/articles/149055.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/fenglin/comments/commentRss/149055.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/fenglin/services/trackbacks/149055.html</trackback:ping><description><![CDATA[<div><strong>1、从可枚N合project指定的字D?br /></strong>使用SelectҎQ用lambda表达式来标识要project的字Dc如Q?br />var customerFirstNames=customers.Select(cust=>cust.FirstName);<br /><u style="color: red">或者用from和select 查询操作W。如Q?br />var customerFirstNames=from cust in customers select cust.FirstName;</u><u><br /></u><br /><strong>2、筛选来自可枚D集合?/strong><br />使用WhereҎQ用lambda表达式来指定行的匚w条g。如Q?br />var usCompanies=addresses.Where(addr=>String.Equals(addr.Country,"United States")).Select(usComp=>usComp.CompanyName);<br /><u style="color: red">或者用where查询操作W。如Q?br />var usCompanies=from a in addresses where String.Equals(a.Country,"United States")<br />select a.CompanyName;</u><br /><br /><strong>3、按特定序枚D数据<br /></strong>使用OrderByҎQ用lambda表达式来标识用于对行q行排序的字Dc如Q?br />var companyNames=addresses.OrderBy(addr=>addr.CompanyName).Select(comp=>comp.CompanyName);<br /><u style="color: red">或者用orderby查询操作W。如Q?br />var companyNames=from a in addresses orderby a.CompanyName select a.CompanyName;</u><u><br /></u><br /><strong>4、根据一个字D늚值对数据q行分组</strong><br />使用GroupByҎQ用lambda表达式来标识用于对行q行分组的字Dc如Q?br />var companiesGroupedByCountry=addresses.GroupBy(addrs=>addrs.Country);<br /><u style="color: red">或者用group by查询操作W。如Q?br />var companiesGroupedByCountry=from a in addresses group a by a.Country;</u><u><br /></u><br /><strong>5、联接两个不同集合中的数?/strong><br />使用JoinҎ来指定要联接的集合,联接条gQ以及结果字Dc如Q?br />var citiesAndCustomers=customers.Select(c=>new{c.FirstName,c.LastName,c.CompanyName}).Join(addresses,custs=>custs.CompanyName,addrs=>addrs.CompanyName,(custs,addrs)=>new{custs.FirstName,custs.LastName,addrs.Country});<br /><u style="color: red">或者用join查询操作W。如Q?br />var citiesAndCustomers=from a in addresses join c in customers on a.CompanyName equals c.CompanyName select new{c.FirstName,c.LastName,a.Country};</u><u><br /></u><br /><strong>6、强q立即生成LINQ查询l果<br /></strong>使用ToList或ToArrayҎ生成包含l果的列表或数组。如Q?br />var allEmployees=from e in empTree.ToList<Employee>() select e;<br /><br />//应该量使用其泛型方?数据缓存于内存中,因此无法查到最新的数据?br /></div><img src ="http://www.shnenglu.com/fenglin/aggbug/149055.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/fenglin/" target="_blank">风林</a> 2011-06-20 18:13 <a href="http://www.shnenglu.com/fenglin/articles/149055.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>枚D集合http://www.shnenglu.com/fenglin/articles/149044.html风林风林Mon, 20 Jun 2011 08:40:00 GMThttp://www.shnenglu.com/fenglin/articles/149044.htmlhttp://www.shnenglu.com/fenglin/comments/149044.htmlhttp://www.shnenglu.com/fenglin/articles/149044.html#Feedback0http://www.shnenglu.com/fenglin/comments/commentRss/149044.htmlhttp://www.shnenglu.com/fenglin/services/trackbacks/149044.html1、一个类“可枚?#8221;Q允许它支持foreachl构
实现IEnumerable接口Qƈ提供一个GetEnumeratorҎ来返回一个IEnumerator对象。如Q?br />public class Tree<TItem>:IEnumerable<TItem>
{
...
IEnumerator<TItem> GetEnumerator()
{
...
}
}

2、在不用q代器的前提下实C个枚丑֙
定义一个枚丑֙c,它应该实现IEnumerator接口Qƈ在接口中提供Current属性和MoveNextQƈ可选择提供ResetQ方法。如Q?br />public class TreeEnumerator<TItem>:IEnumerator<T>
{
...
TItem Current
{
  get
  {
  ...
   }
}

bool MoveNext()
{
  ...
}
}

3、用q代器来实现一个枚丑֙
使用yield语句来实现枚丑֙。yield指定了要q回的数据项以及以什么顺序返回。如Q?br />IEnumerator<TItem> GetEnumerator()
{
  for(...)
   yield return ...
}

风林 2011-06-20 16:40 发表评论
]]>
泛型http://www.shnenglu.com/fenglin/articles/149015.html风林风林Mon, 20 Jun 2011 03:53:00 GMThttp://www.shnenglu.com/fenglin/articles/149015.htmlhttp://www.shnenglu.com/fenglin/comments/149015.htmlhttp://www.shnenglu.com/fenglin/articles/149015.html#Feedback0http://www.shnenglu.com/fenglin/comments/commentRss/149015.htmlhttp://www.shnenglu.com/fenglin/services/trackbacks/149015.html1、创建泛型类
使用cd参数来定义类。如Q?br />public class Tree<TItem>
{
  ...
}

2、实例化泛型cȝ对象
指定具体的类型参数。如Q?br />Tree<char> charTree = new Tree<char>('M');

3、对泛型cȝcd参数q行限制
定义cLQ用where 子句来指定约束。如Q?br />public class Tree<TItem> where TItem:IComparable<TItem>
{
...
}

4、定义泛型方?/strong>
使用cd参数来定义方法。如Q?br />static void InsertIntoTree<TItem>(Tree<TItem> tree, params TItem[] data)
{
...
}
加约束则为:
static void InsertIntoTree<TItem>(Tree<TItem> tree, params TItem[] data) where TItem : IComparable<TItem>

5、调用泛型方?/strong>
为每个类型参数都提供恰当的类型。如Q?br />InsertIntoTree<char>(charTree, 'X', 'A', 'M', 'Z', 'Z', 'N');

风林 2011-06-20 11:53 发表评论
]]>
中断E序程q处理事Ӟ委托、事Ӟhttp://www.shnenglu.com/fenglin/articles/149008.html风林风林Mon, 20 Jun 2011 02:32:00 GMThttp://www.shnenglu.com/fenglin/articles/149008.htmlhttp://www.shnenglu.com/fenglin/comments/149008.htmlhttp://www.shnenglu.com/fenglin/articles/149008.html#Feedback0http://www.shnenglu.com/fenglin/comments/commentRss/149008.htmlhttp://www.shnenglu.com/fenglin/services/trackbacks/149008.html1、声明委托类?br />先写关键字delegate,再写q回cdQ再写委托名Uͼ然后在一?)中添加参数列表。如Q?br />delegate void myDelegate();

2、创建委托的实例Qƈ用一个具体的Ҏ来初始化?/strong>
如:
delegate void myDelegate();
private void myMethod(){...}
...
myDelegate del = new myDelegate(this.myMethod);

3、调用委?br />如:
myDelegate del;
...
del();

4、声明事?/strong>
先写关键字eventQ再写类型的名称Q类型必L一个委托类型)Q再写事件的名称。如Q?br />delegate void myDelegate();

class MyClass
{
  public event myDelagate MyEvent;
}

5、订阅事Ӟ成ؓ事g的订阅者)
用new操作W创Z个委托实例(该委托具有与事g相同的类型)Q然后?=操作W,委托实例同事g兌h。如
class MyEventHandlingClass
{
...
public void Start()
{
  myClass.MyEvent += new myDelegate(this.eventHandlingMethod);
}

private void eventHandlingMethod()
{
  ...
}

private MyClass myClass = new MyClass();
}
q可以直接指定订阅方法,让编译器自动生成新的委托Q?br />public void Start()
{
  myClass.MyEvent += this.eventHandlingMethod;
}

6、取消订阅事Ӟ不再成ؓ一个事件的订阅者)
创徏一个委托实例(该委托具有与事g相同的类型)Q然后?=操作W,使委托实例从事g中脱R如Q?br />class MyEventHandlingClass
{
  ...
  public void Stop()
{
myClass.MyEvent -= new myDelegate(this.eventHandlingMethod);
}

private void eventHandlingMethod()
{
  ...
}

private MyClass myClass = new MyClass();
}

或者:

public void Stop()
{
  myClass.myEvent -= this.eventHandlingMethod;
}


7、引发一个事?br />像调用方法那?#8220;调用”事gQ在事g名称后添加一对圆括号Q。如果定义事件的委托要求参数Q那么还要提供对应的实参。引发事件之前,不要忘记查事件是否ؓnull。如Q?br />class MyClass
{
public event myDelegate MyEvent;
...
private void RaiseEvent()
{
if(this.MyEvent != null)
{
  this.MyEvent();
}
}
...
}

风林 2011-06-20 10:32 发表评论
]]>
使用索引?/title><link>http://www.shnenglu.com/fenglin/articles/148875.html</link><dc:creator>风林</dc:creator><author>风林</author><pubDate>Fri, 17 Jun 2011 09:39:00 GMT</pubDate><guid>http://www.shnenglu.com/fenglin/articles/148875.html</guid><wfw:comment>http://www.shnenglu.com/fenglin/comments/148875.html</wfw:comment><comments>http://www.shnenglu.com/fenglin/articles/148875.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/fenglin/comments/commentRss/148875.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/fenglin/services/trackbacks/148875.html</trackback:ping><description><![CDATA[<div>1、ؓcLl构创徏索引?br />声明索引器类型,后跟关键字thisQ然后在Ҏ号中d索引器参数。如<br />struct RawInt<br />{<br />  ...<br />  public bool this[int index]<br />  {<br />    get{...}<br />    set{...}<br />   }<br />  ...<br />}<br /><br />2、在接口中定义烦引器<br />使用get以及/或者set关键字来定义一个烦引器。如<br />interface IRawInt<br />{<br />  bool this [int index]{get;set;}<br />}<br /><br />3、在cLl构中实C个接口烦引器<br />?br />struct RawInt:IRawInt<br />{<br />  ...<br />  public bool this[int index]<br />  {<br />    get{...}<br />    set{...}<br />  }<br />  ...<br />}<br /><br />4、在cLl构中,采取“昑ּ接口实现”来实现接口定义的索引?br />在实现接口的cLl构中,昑ּ命名接口Q但不要指定索引器的可访问性。如<br />struct RawInt : IRawInt<br />{<br />  ...<br />  bool IRawInt.this [int index]<br />  {<br />     get{...}<br />     set{...}<br />   }<br />   ...<br />}</div><img src ="http://www.shnenglu.com/fenglin/aggbug/148875.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/fenglin/" target="_blank">风林</a> 2011-06-17 17:39 <a href="http://www.shnenglu.com/fenglin/articles/148875.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实现属性以讉K字段http://www.shnenglu.com/fenglin/articles/148842.html风林风林Fri, 17 Jun 2011 03:10:00 GMThttp://www.shnenglu.com/fenglin/articles/148842.htmlhttp://www.shnenglu.com/fenglin/comments/148842.htmlhttp://www.shnenglu.com/fenglin/articles/148842.html#Feedback0http://www.shnenglu.com/fenglin/comments/commentRss/148842.htmlhttp://www.shnenglu.com/fenglin/services/trackbacks/148842.html1、ؓl构或者类声明一个可?可写的属?br />struct Screen Position
{
  ...
  public int X
  {
      get {...}
      set {...}
  }
...
}

2、ؓl构或者类声明一个只d?br />struct Screen Position
{
  ...
  public int X
  {
      get {...}
  }
...
}

3、ؓl构或者类声明一个只写属?br />struct Screen Position
{
  ...
  public int X
  {
      set {...}
  }
...
}

4、在接口中声明一个属?br />interface IScreenPosition
{
  int X{get;set;}
  int Y {get;set;}
}

5、在l构或者类中实C个接口属?br />struct ScreenPosition:IScreenPosition
{
  public int X{...}
  public int Y {...}
}

6、创Z个自动属?br />

    class Polygon
    {
        public int NumSides { get; set; }
        public double SideLength { get; set; }

        public Polygon()
        {
            this.NumSides = 4;
            this.SideLength = 10.0;
        }
    }


Polygon square = new Polygon();
Polygon triangle = new Polygon { NumSides = 3 };
Polygon pentagon = new Polygon { SideLength = 15.5, NumSides = 5 };


注:
只有在一个结构或cd始化好之后,才能通过q个l构或类的属性来q行赋倹{?br />ScreenPosition location;
location.X=40;//~译旉误,location未使用new来初始化

不可属性作Z个ref或者out参数gl一个方法;但可以将一个可写的字段作ؓref或out参数值来传递。这是由于属性ƈ不真正指向一个内存位|,相反Q它指向的是一个访问方法?/strong>

在一个属性中Q最多只能包含一个get accessor和一个set accessor。属性不能包含其它方法、字D|属性?/strong>

get accessor和set accessor不能获取M参数。要赋的g通过内徏的、隐藏的value变量Q自动传lset accessor?/strong>

不能声明const属性。如
const int X{get{...}set{...}}//~译旉?/p>

风林 2011-06-17 11:10 发表评论
]]>
垃圾回收理http://www.shnenglu.com/fenglin/articles/148829.html风林风林Fri, 17 Jun 2011 01:26:00 GMThttp://www.shnenglu.com/fenglin/articles/148829.htmlhttp://www.shnenglu.com/fenglin/comments/148829.htmlhttp://www.shnenglu.com/fenglin/articles/148829.html#Feedback0http://www.shnenglu.com/fenglin/comments/commentRss/148829.htmlhttp://www.shnenglu.com/fenglin/services/trackbacks/148829.html1、析构函?br />class Test
{
   public Test()//构造函?br />   {
 ...
   }

   ~Test()//析构函数
   {
 ...
   }

析构函数只适用于引用类型;不能l析构函数加讉K权限修饰W;析构函数不能带参敎ͼ只有垃圾回收器才能调用析构函数?br />
2、异常安全的disposalҎ
注:的是Ҏ的用途而不是名U。换a之,一个disposalҎ可以使用M有效的C#Ҏ名,而不说专门存在一个名为disposal的方法。比如TextReader的closeҎ

3、using语句
using(TextReader reader = new StreamReader(fileName))
{

  ...
}

4、强制垃圑֛Ӟ不推荐)
调用  System.GC.Collect()

风林 2011-06-17 09:26 发表评论
]]>
interface,abstract,sealedhttp://www.shnenglu.com/fenglin/articles/148724.html风林风林Wed, 15 Jun 2011 09:34:00 GMThttp://www.shnenglu.com/fenglin/articles/148724.htmlhttp://www.shnenglu.com/fenglin/comments/148724.htmlhttp://www.shnenglu.com/fenglin/articles/148724.html#Feedback0http://www.shnenglu.com/fenglin/comments/commentRss/148724.htmlhttp://www.shnenglu.com/fenglin/services/trackbacks/148724.html1、声明一个接?br />interface IDemo
{
string Name();
...
}

2、实C个接?br />class Test:IDemo
{
  public string IDemo.Name()//必须写接口前~
  {
   ...
  }
}

3、抽象类Q必M为基cȝ承其的非抽象cL能实例化
abstract class Test
{
  abstract string Name();
...
}

4、密类Q不允许被承)
sealed class Test
{
...
}

风林 2011-06-15 17:34 发表评论
]]>
interface,virtual,override,sealedhttp://www.shnenglu.com/fenglin/articles/148714.html风林风林Wed, 15 Jun 2011 07:55:00 GMThttp://www.shnenglu.com/fenglin/articles/148714.htmlhttp://www.shnenglu.com/fenglin/comments/148714.htmlhttp://www.shnenglu.com/fenglin/articles/148714.html#Feedback0http://www.shnenglu.com/fenglin/comments/commentRss/148714.htmlhttp://www.shnenglu.com/fenglin/services/trackbacks/148714.htmlinterface 引入一个方法的名称?br />virtual Ҏ是方法的W一个实现?br />override Ҏ是方法的另一个实现?br />sealed Ҏ则是Ҏ的最后一个实现?/div>

风林 2011-06-15 15:55 发表评论
]]>
l承、扩?/title><link>http://www.shnenglu.com/fenglin/articles/148711.html</link><dc:creator>风林</dc:creator><author>风林</author><pubDate>Wed, 15 Jun 2011 07:03:00 GMT</pubDate><guid>http://www.shnenglu.com/fenglin/articles/148711.html</guid><wfw:comment>http://www.shnenglu.com/fenglin/comments/148711.html</wfw:comment><comments>http://www.shnenglu.com/fenglin/articles/148711.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/fenglin/comments/commentRss/148711.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/fenglin/services/trackbacks/148711.html</trackback:ping><description><![CDATA[<div>1、从基类创徏一个派生类<br />class Derived:Base<br />{<br />...<br />}<br />2、在zcȝ构造函C调用基类构造函?br />class Derived:Base<br />{<br />...<br />  public Derived(int x):base(x)<br />  {<br />   ...<br />   }<br />...<br />}<br />3、声明一个virtualҎ<br />class Mammal<br />{<br />  public virtual void Breathe()<br />  {<br />  ...<br />  }<br />...<br />}<br />4、在zcM实现一个方法,让它覆盖一个承的virtualҎ<br />class Whale : Mammal<br />{<br />  public override void Breathe()<br />  {<br />  ...<br />  }<br />}<br />5、ؓ一个类型定义扩展方?br />static class Util<br />{<br />  public static int Negate(this int i)<br />  {<br />    return -i;<br />  }<br />}</div><img src ="http://www.shnenglu.com/fenglin/aggbug/148711.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/fenglin/" target="_blank">风林</a> 2011-06-15 15:03 <a href="http://www.shnenglu.com/fenglin/articles/148711.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数组参数http://www.shnenglu.com/fenglin/articles/148699.html风林风林Wed, 15 Jun 2011 02:40:00 GMThttp://www.shnenglu.com/fenglin/articles/148699.htmlhttp://www.shnenglu.com/fenglin/comments/148699.htmlhttp://www.shnenglu.com/fenglin/articles/148699.html#Feedback0http://www.shnenglu.com/fenglin/comments/commentRss/148699.htmlhttp://www.shnenglu.com/fenglin/services/trackbacks/148699.html1、ؓҎ声明一个给定类型的params数组参数Q可以接受Q意数量给定类型的参数
如:
someType Method(params int[] numbers)
{
 ...
}

2、ؓҎ声明一个objectcd的params数组参数Q可以接受Q意数量、Q意类型的参数
如:
someType Method(params object[] paramList)
{
 ...
}

风林 2011-06-15 10:40 发表评论
]]>
数组http://www.shnenglu.com/fenglin/articles/148696.html风林风林Wed, 15 Jun 2011 02:08:00 GMThttp://www.shnenglu.com/fenglin/articles/148696.htmlhttp://www.shnenglu.com/fenglin/comments/148696.htmlhttp://www.shnenglu.com/fenglin/articles/148696.html#Feedback0http://www.shnenglu.com/fenglin/comments/commentRss/148696.htmlhttp://www.shnenglu.com/fenglin/services/trackbacks/148696.html 1            //数组
 2            //Time[] times = new Time[2] { new Time(21, 7, 10), new Time(9, 10, 11) };
 3            //Time[] copyToTimes = new Time[times.Length];
 4            //times.CopyTo(copyToTimes, 0);
 5            //foreach (Time time in copyToTimes)
 6            //{
 7            //    Console.WriteLine(time.ToString());
 8            //}
 9
10            //ArrayList数组
11            ArrayList times = new ArrayList();
12            times.Add(new Time(21710));
13            times.Add(new Time(91011));
14
15            Time[] copyToTimes = new Time[times.Count];
16            times.CopyTo(copyToTimes, 0);
17
18            foreach (Time time in copyToTimes)
19            {
20                Console.WriteLine(time.ToString());
21            }

22
23            //队列
24            //Queue<int> queue = new Queue<int>();
25            //foreach (int i in new int[] { 8, 10, 2, 3, 6, 5 })
26            //{
27            //    queue.Enqueue(i);
28            //}
29            //while(queue.Count>0)
30            //{
31            //    Console.WriteLine(queue.Dequeue());
32            //}
33
34            //堆栈
35            //Stack<int> stack = new Stack<int>();
36            //foreach (int i in new int[] { 8, 10, 2, 3, 6, 5 })
37            //{
38            //    stack.Push(i);
39            //}
40            //while (stack.Count > 0)
41            //{
42            //    Console.WriteLine(stack.Pop());
43            //}
44
45            //Hashtable 不允许有重复KEY的元?br />46            //Hashtable ages = new Hashtable();
47            //ages["don"] = 27;
48            //ages["fly"] = 27;
49            //ages["don"] = 29;//不会抛异常,但会此key的value覆盖
50            //ages.Add("don", 29);//会抛异常
51            //foreach (DictionaryEntry e in ages)
52            //{
53            //    string name = e.Key.ToString();
54            //    int age = (int)e.Value;
55            //    Console.WriteLine("Name:{0},Age:{1}", name, age);
56            //}
57
58            //SortedList 元素已自动排?br />59            //SortedList ages = new SortedList();
60            //ages["sun"] = 28;
61            //ages["fly"] = 27;
62            //ages["don"] = 27;
63            //foreach (DictionaryEntry e in ages)
64            //{
65            //    string name = e.Key.ToString();
66            //    int age = (int)e.Value;
67            //    Console.WriteLine("Name:{0},Age:{1}", name, age);
68            //}

风林 2011-06-15 10:08 发表评论
]]>
传倹{传引用http://www.shnenglu.com/fenglin/articles/148633.html风林风林Tue, 14 Jun 2011 07:24:00 GMThttp://www.shnenglu.com/fenglin/articles/148633.htmlhttp://www.shnenglu.com/fenglin/comments/148633.htmlhttp://www.shnenglu.com/fenglin/articles/148633.html#Feedback0http://www.shnenglu.com/fenglin/comments/commentRss/148633.htmlhttp://www.shnenglu.com/fenglin/services/trackbacks/148633.html
 1static void Main(string[] args)
 2{
 3  int n=10;
 4  add(n);
 5  Console.WriteLine(n);//n=10
 6
 7}

 8
 9private static void add(int num)
10{
11  num++;
12}
2、传引用ref、out
 
 1        static void Main(string[] args)
 2        {
 3            int a = 7;
 4            add(ref a);
 5            Console.WriteLine(a);//a=8
 6        }

 7
 8        public static void add(ref int num) {
 9            num++;
10        }
ref与out都ؓ传引用,主要的区别在于:ref前缀的参数在传入前必d始化,而out前缀的参数则不然Q可以在调用函数里初始化参数?img src ="http://www.shnenglu.com/fenglin/aggbug/148633.html" width = "1" height = "1" />

风林 2011-06-14 15:24 发表评论
]]>
þ㽶97Ʒ| þùۺϾƷ| Ļþи| ޾Ʒtvþþþþþþþ| þۺϾþԾ99ëƬ| ٸлþþþ| þþƷAV㽶| þþƷɫ鶹| ݺɫۺվþþþþþø| 99þóĻ| Ӱһþþþó˾Ʒۺ | 66þôýվȸ| 97Ʒ97þþþþ| þþƷ99þ㽶| þˬˬˬav| þ99Ʒþþþþ| ŷþۺϾɫۺ| .Ʒþþ鶹Ʒ| Ʒþþþþþ˿| ۲ӰԺþùƷ| þóۺɫۺ| ճˮþ޾Ʒtv| 뾫Ʒþþþþ| XxŷʸƷþþþþ| þۺϸϾþúݺݺ97ɫ| Ļþһ| ݺ޾þþþþۺ| ھƷþþþ| 99þù뾫Ʒ| ޡvþþ뾫Ʒ| ݺɫþþۺƵպ| ɫ8ŷ˾þۺϵ| پþþƷþ| ˾Ʒþ| 99þùһ| þ99ȺݺɫƷһ| ƷþþӰ| ɫþþۺƷ | پþþƷþ| ɫۺɫþû| Ʒþþþþþþþ|