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