读书人

c#菜鸟的2个有关问题

发布时间: 2012-10-17 10:25:47 作者: rapoo

c#初学者的2个问题
第一个问题:
代码: this.italicToolStripMenuItemItalic.CheckedChanged += new EventHandler(ItalicButton_CheckedChanged);

查阅msdn
public delegate void EventHandler (
Object sender,
EventArgs e
)
明明有2个参数, 为什么只传一个参数就行了????

第二个问题:
namespace PacketRecord
{
[ServiceContract(Namespace = "http://sogrand.cn/packetrecord/")]
public interface IRecordService
{
[OperationContract]
bool StartRecord(string caller, string called, string originCaller, string originCalled, string callId, string agentId, string phoneNo);

[OperationContract]
bool StopRecord(string callId);

[OperationContract]
List<SessionInfo> QueryStatus();
}
}
这段代码中的类和函数前面的[ ]中的内容是做什么用的???如果我要这么写, 我如何得知[ ]中应该填写什么???


小弟初学c#, 云山雾海, 不知所云, 还望大侠多多指教, 感激涕零.

[解决办法]
第一个问题:
是给事件this.italicToolStripMenuItemItalic.CheckedChanged 注册一个方法,这个方法就是ItalicButton_CheckedChanged。当事件触发的时候就执行这个方法,而至于为什么要用new EventHandler,是因为该this.italicToolStripMenuItemItalic.CheckedChanged 事件是是这种委托的一个对象(个人理解),所以给这个时间注册方法的时候,这种方法必须也要有该种委托的签名(包含返回值和参数)。
第二个问题:
[OperationContract]
bool StopRecord(string callId);
像这个属性StopRecord上面的[OperationContract]表示的是这个属性StopRecord的元数据。即对该属性进行说明用的,[OperationContract]是一种特性类,它的一个作用就是用来定义方法、类、属性的元数据,比如我定义了一个特性类IS_Dentify:

C# code
using System;using System.Collections.Generic;using System.Text;namespace HZB_DAL{    /// <summary>    /// 是否为系统自动增加值的主键,即不需要外部输入其值,或在数据库中是否自动增加的字段    /// </summary>    [AttributeUsage(AttributeTargets.Property)]    public  class IS_IdentifyAttribute:System.Attribute    {        public IS_IdentifyAttribute()        { }        /// <summary>        /// 是否为系统自动增加值的主键,即不需要外部输入其值,或在数据库中是否自动增加的字段        /// </summary>        private bool trueorfalse =false;        public bool TrueOrFalse        {            get { return trueorfalse; }            set { trueorfalse = value; }        }    }} 

读书人网 >C#

热点推荐