日期:2014-05-17  浏览次数:20916 次

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; }
        }
    }
}