目录
一、C#冒号“:”4种定义
1、表示继承关系
classA:classB
2、继承构造函数
重载 :this() 对应的构造函数
public ControlsSynchronizer()
{
//initialize the underlying ArrayList
m_frameworkControls = new ArrayList();
}
public ControlsSynchronizer(IMapControlDefault mapControl, IPageLayoutControlDefault pageLayoutControl) : this()
{
//assign the class members
m_mapControl = mapControl;
m_pageLayoutControl = pageLayoutControl;
}
有参数的构造函数需要执行无参构造函数中的代码,为了省去重复代码的编写,所以就继承了
3、泛型的时候,用于过滤,
public void C<T>(T value) where T:IDisposable { } 表示,T这个形参 必须要实现 IDisposable 这个接口才可以,不是随便乱传。
4、表示系统命名空间
表示系统System命名空间 Global::System.Consol.WriteLine("");
加入你自己也写了一个类,名字叫System,那么就用 MyNamespace.System 来引用
5、三目运算符,若果X>1返回true,小于1返回false
bool b= x>1?true:false;
二、继承函数的两种用法
1.继承类
父类的构造函数总是在子类之前执行的。既先初始化静态构造函数,后初始化子类构造函数
public class BaseCircle
{
public BaseCircle()
{
Console.WriteLine(" no arguments base constructor!!!");
}
public BaseCircle(double arg)
{
Console.WriteLine("double arg base constructor!!!");
}
}
public class SubCircle : BaseCircle
{
public SubCircle():base()
{
Console.WriteLine("sub class no argument constructor,actually call base constructor
!!!");
}
public SubCircle(double a):base(a)
{
Console.WriteLine("sub class with argument, actually call base double
constructor!!!");
}
public SubCircle(int k):this(1,2)
{
Console.WriteLine("sub class with argument int k, actually call sub class constructor
int i & j !!!");
}
public SubCircle(int i,int j)
{
Console.WriteLine("sub class with int i&j argument!!!!");
}
}
static void Main(string[] args)
{
SubCircle s1 = new SubCircle();
SubCircle s2 = new SubCircle(1.1);
SubCircle s3 = new SubCircle(1);
}
输出结果:
no arguments base constructor!!!
sub class no argument constructor,actually call base constructor !!!
double arg base constructor!!!
sub class with argument, actually call base double constructor!!!
no arguments base constructor!!!
sub class with int i&j argument!!!!
sub class with argument int k, actually call sub class constructor int i & j !!!
2.自己的类
public class SocketServer //: TcpListener
{
private const int BufferDefaultSize = 8192;
/// <summary>构造函数</summary>
/// <param name="ip">本机IP地址</param>
/// <param name="port">本机端口号</param>
public SocketServer(string ip, int port)
: this(ip, port, BufferDefaultSize)
{
}
/// <summary>构造函数</summary>
/// <param name="ip">本机IP地址</param>
/// <param name="port">本机端口号</param>
/// <param name="bufferSize">数据缓冲区大小</param>
public SocketServer(string ip, int port, int bufferSize)
:this(new IPEndPoint(IPAddress.Parse(ip), port), bufferSize)
{
}
}
在调用SocketServer(string ip, int port)时,先调用this(ip, port, BufferDefaultSize)