C#笔记(二)类型、变量和表达式
一、C#中的类型
类类型:定义包含数据成员和函数成员在内的数据结构,支持单继承和多态。该机制可特化基类操作。
结构类型:类似于类类型定义包含数据成员和函数成员的数据结构。 不需分配堆空间。但不支持用户指定的继承,直接继承于Object。
接口类型:定义了一组公用接口的集合约定。支持自身,类类型,结构类型的多继承。继承了接口的类或结构需要实例化接口函数。
委派类型:表示对特定参数列表和返回类型的接口的引用,使得函数可以被当作实体用于变量赋值和参数传递。类似于其他语言的函数指针,不同的是委派类型是面向对象且类型安全的。
枚举类型:
可空类型:在使用前不必声明,且每个非空类型 T,都有一个对应的非空类型 T?。
二、C#中的变量
变量 | 可能的内容 |
---|---|
非空类型 | 对应类型的实际值 |
可空类型 | null值或类型实际值 |
对象(object) | 空引用,引用类型的引用,任意类型的装箱的引用 |
类类型 | 空引用,该类实例的引用,该类子类的实例的引用 |
接口类型 | 空引用,继承了该接口的类的实例的引用,任意继承了该接口的类的装箱后的引用 |
数组类型 | 空引用,该类型数组实例的引用,与该数组类型兼容的数组类型实例的引用 |
委托类型 | 空引用,该委托类型实例的引用 |
三、C#中的部分表达式及其使用
表达式:
由操作对象和操作符构成。大多数运算符可重载。
表达式 | 说明 |
---|---|
typeof(obj) | 返回obj的类型 |
is | 判断是否某一类型 |
as | 强制类型转换,失败也不抛出异常 |
using System;
namespace Test
{
public interface Show
{
public void show();
}
class ITest:Show
{
public void show()
{
Console.WriteLine("I am of class ITest.");
}
}
class ISubTest:ITest,Show
{
public void show()
{
Console.WriteLine("I am of class ISbuTest");
}
}
class Program
{
static void Main(string[] args)
{
ISubTest subtest = new ISubTest();
ITest test = subtest as ITest;
subtest.show();
test.show();
if(subtest is ITest)
{
Console.WriteLine("subtest is of class ITest.");
}
}
}
}