学习记录:接口(接口方法是否有方法体?)和泛型

今天是学习C#第16天。。。
今天所学接口和泛型。


接口:

接口是什么:

接口是一组包含了类或结构可以实现的功能的定义。

关键词:
interface

命名一般以 I 为开头字母

接口方法是否有方法体?
接口可以包含事件,索引器,方法和属性,但是不能包含字段。
接口是一个引用类型,一般情况下只包含了功能的定义,不包含功能的实现
接口成员的访问级别是默认的

!!!

老师当时敲出接口方法时后面跟着方法体,然后不确定的和我们说,接口可以有方法体但一般不使用。同时他在定义方法时还尝试使用了下访问修饰符,public、protected可以,但private不行。

然而我一敲就报错,十分纳闷,通过问老师,查资料我终于知道了为什么:
我用的框架是.NET,而老师用的是.NET Core。而C#新版本才可以有方法体和访问修饰符。旧版本是不行的。


类与类之间,称之为继承
接口与接口,接口与类之间,称之为实现

interface IUSB_TypeC : IUSB, IRJ_45
{
}

示例:

class Computer : IUSB
{
public string USB_Type { get; set; }
public string ReadFile()
{
Console.WriteLine("正在读取文件...");
return "从删库到跑路.pdf"; }
public void WriteFile(string content) {
Console.WriteLine("正在写入文件..." + content);
}
public string ShowVideoData()
{
Console.WriteLine("正在显示视频数据...");
return "马克思思想.mp4"; } }

接口与抽象类的区别:

相同点:

两者都不能被实例化
两者都包含了由其他类或结构继承或实现的抽象成员

不同点:

抽象类当中除了拥有抽象成员外还可以拥有非抽象成员;而接口中所有的所有成员都是抽象的【新版本接口也可以实现普通方法】 Ø 抽象成员可以使用修饰符修饰,接口当中接口成员访问级别是默认不去修改的,并且默认是public
接口当中不可以包含构造方法,析构方法,常量
CSharp类只支持单继承,接口支持多支持

泛型:

方案一:
使用object(object是所有类型的基类,所有类型都是由他派生而来的,C#中的所有类都是间接或直接从System.Object类中继承。)

 但会出现装箱、拆箱操作,这将在托管堆上分配和回收大量的变量,若数据量大,则性能损失非常严重。

 在处理引用类型时,虽然没有装箱和拆箱操作,但将用到数据类型的强制转换操作,增加处理器的负担。

  static void Swap(ref object var01,ref object var02)
    {
        object temp = var01;
        var01 = var02;
        var02 = temp;
    }
class Program
{
    static void Main(string[] args)
    {          

        int a = 10;
        int b = 20;

        //将整型转换为object类型,向上转型,【值类型称呼:装箱操作】
        object c = a;
        object d = b;
        
        Swap(ref c, ref d);

        //将object转换为整型,向下转型,【值类型称呼:拆箱操作】
        a = (int)c;
        b = (int)d;

        Console.WriteLine(a + "|" + b);
    }

}

※※※※※※
方案二:
泛型参数:

1.泛型类型参数可以有多个
   
2.泛型类型参数可以是编译器识别的任何数据类型

3.泛型类型参数命名需要遵守命名规则(非强制性,英文字母就行)
   使用描述性名称命名泛型类型,并且使用T作为前缀
   单个字母名称完全可以让人了解其表示的含义使用单个大写字母命名

※泛型参数约束

为了防止传入的类型导致方法运行出错,可以对泛型进行一定的约束.。

通过约束类型参数,可以增加约束类型及其继承层次结构中的所有类型所支持的允许操作和方法调用的数量。

可以对多个参数应用约束,也可以对同一参数进行多个约束。

约束关键词:Where

where T : struct:    表示泛型T是值类型(小数,整数,char,bool,struct,enum) 
where T : class :    表示泛型T是引用类型
where T : new() :    表示这个泛型具有一个无参数的构造方法,如果有多个约束,new()必须放在最后
where T : 基类名 :    表示这个泛型是该基类或者其派生类
where T : 接口名 :    表示泛型是实现了该接口的类型
where T:U       :    为 T 提供的类型参数必须是为 U 提供的参数或派生自为 U 提供的参数。

例:

void Test<T,U>(T p1,U p2) where U : struct
where T : Computer, new()
{
}

public static string CombineToString<T>(T value1, T value2)
{
return value1.ToString() + value2.ToString();
}
public static void Main(string[] args) {
Console.WriteLine(CombineToString<int>(234, 56));
}
//调用方法时,有些时候泛型类型可以省略
// Console.WriteLine(CombineToString (234, 56));

泛型方法的泛型重载:

void DoWork() { }           
void DoWork<T>() { }
void DoWork<T, U>() { }

//不同泛型参数,但只有一个不可以重载
// 如:void DoWork<T>() { }和 void DoWork<U>() { }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容