一、结构体
个人认为结构体就是一种简化的类,类和结构体的功能基本上差不多。但是,结构体与类在语法以及使用上也有一定的区别。
1、结构体是值类型(value types),而类是引用类型(reference types)
2、不像类一样,结构体可以不使用new来实例化一个对象。
3、结构体能声明构造函数,但是必须传入参数。
4、结构体不能从另一个结构体或类继承。
结构体的声明:
public struct man
{
methods;
}
二、接口(interface)
C#中只允许单继承,也就是一个类只能继承于,只能有一个父类。而接口就可以解决这个问题。一个类能继承多个接口。
声明一个接口:
public interface IStorable
{
void Read( );
void Write(object);
}
public interface IStory
{
void writable();
void listen();
}
使用一个接口:
public class qwer: IStorable , IStory
{
public void Read(){...}
public void Write() {...}
public void writable(){...}
public void listen() {...}
}
类qwer 继承了两个接口 IStorable和IStory,并为每个接口中的方法生命了具体的实现。需要注意的是:接口中只包含了方法的声明,而方法的具体实现需要在继承他的类中具体实现。否则,编译器会报错。另外,接口中的方法的声明不能有修饰符,也就是access modifier。
2、当继承的两个或多个接口中有名字相同的方法时,可以有接口的显示实现,和隐式实现。
eg:
interface IStorable
{
void Read();
void Write();
}
interface ITalk{
void Talk();
void Read();
}
IStorable和ITalk接口中都包含Read()方法,在继承他们的类中,要分别实现他们的功能。
public class Document : IStorable, ITalk
{
public Document(string s)
{…; }
// Make read virtual
public virtual void Read()
{…; }// IStorable的Read方法,是隐式实现。
public void Write()
{…; }
void ITalk.Read()
{ …; }//ITalk 的Read()方法,是显示实现
public void Talk()
{ …; }
}