【笔记篇】C#笔记2
返回目录:目录请戳这里~
- C#数组
基本概念不提。。
int[] a;
bool[] b = new bool[10];
float[] c = {0.5, 57.0, 233.3, 12345.67 };
double[] d = new double[/*3*/]{233.33, 1926.0817, 4396.0 };
然后数组和指针有很大的不同。。。
Array类不会用……
有多维数组和交错数组。。。
//多维数组
int[ , ] a = new int [2,3] {
{0, 1, 2 },
{3, 4, 5 }
};
int val = a[1,2];
//交错数组
int[][] a = new int[][]{new int[] {3, 4, 5 }, new int[]{ 0, 1, 2 };
int val = a[1][2];
= =
1. C#的字符串有Format(喜大普奔),不过格式化字符串是C#的用着略有不惯= = 然后里面封装了大量的方法= =看不过来,有空会细看的。。
struct(值类型)
很像C++。。但是。。。- 不能定义析构函数和默认的构造函数
- 不能继承或被继承
- 成员不能是abstract virtual 或 protected (毕竟不能被继承)
- 不使用new即可被实例化,此时所有的字段都要被初始化。。
enum(值类型):和C++一样。水过了下一个。
class(引用类型) //下面就很OO了哦
- 类的默认访问标识符是internal,成员的是private
- 用法基本和C++没差= =所以就这样咯= =
继承&&多态
这个地方挺不好懂的(可能是我太弱了)= =
其实主要原因是因为学C++的时候就不怎么学这些东西(OI根本不考什么OO,你看里面有几个不抖机灵的时候用class的)
不理解的话呢,建议各位打开自己的IDE实战一下,乱改改代码找找差异,这样对每部分代码是干什么的理解会更清楚一些= =
然后再扯一句VS对C#的补全非常的完备(毕竟MS一直推C#嘛),很多时候可以让VS帮你完成很多操作,顺便就可以理解一些语句的作用了~~
看代码比理解概念清晰多了~
继承的形式很简单:
class Parent
{
...
}
class Child:Parent
{
...
}
基类的初始化
class Parent
{
protected int a, b;
public Parent(int x,int y)
{
a = x;
b = y;
}
}
class Child : Parent
{
public Child(int p, int q) : base(p, q)
{
}
}
C#不支持多重继承~但想实现多重继承的话可以通过接口(interface)(这个还没学,以后再说)
然后就是多态(不是什么多肽更不是什么堕胎= =)
(话说你们输入法打“duotai”会出什么啊?)
继承学C++的时候都用的少,多态什么的就更不懂了QAQ以前写个项目的时候析构函数前面写个virtual但不知道干啥用的啊~好在现在理解了_ (:з」∠) _
所以基本全靠自己体会(我就是自己打了打代码理解的)
C#的多态性分为两种:
- 静态多态性
静态多态性有两种技术来实现:函数重载和运算符重载(这个我会啊2333就不说了)
- 动态多态性
动态多态性啊,开始的时候挺费解的。
分开说,先说abstract
abstract本义是“抽象的”,这样我们用这个关键字就可以创建抽象类,里面包含了抽象方法。。
代码:
abstract class Parent
{
public abstract void add();//抽象类里定义的抽象方法,无需主体,只需要一个声明,如何实现交给派生类做就好了
}
class Child : Parent
{
private int a, b;
public Child()
{
a = 1;
b = 2;
}
public override void add()
{
Console.WriteLine(a + b);
} //抽象方法,用override关键字重写 就实现了这个add()方法的功能
}
然后再说virtual..
//这次是完整的程序了
using System;
namespace HelloWorld
{
class Parent
{
protected int a, b;
public Parent(int x,int y)
{
a = x;
b = y;
}
public virtual void add() //虚方法
{
Console.WriteLine("Parent:{0}", a + b);
}
}
class Child : Parent
{
public Child(int p,int q) : base(p, q)
{
}
public override void add() //使用override关键字重写了虚方法
{
Console.WriteLine("Child:{0}", a + b);
}
}
class Child2 : Parent
{
//本类中并没有重写add()方法
public Child2(int p,int q) : base(p, q)
{
}
}
class MainProcess
{
public static void Main()
{
Child ch = new Child(3,4);
Child2 ch2 = new Child2(5, 6);
ch.add();
ch2.add();
}
}
}
编译、运行以上程序,可得结果:
Child:7
Parent:11
说明调用标有virtual方法时,先检查有无重写,有则按重写执行,否则继续往上找,直到找不到重写则按virtual进行= =
差不多就是这样。。。
本篇中需要回顾的:
1. Array类
2. C#字符串的方法们
3. 继承和多态还要加强理解= =
还是要继续加油啊~~
【笔记篇】C#笔记2的更多相关文章
- cocos2d-x -------之笔记篇 环境的安装
cocos2d-x -------之笔记篇 环境的安装 使用到的工具有VS2010 cygwin android-NDK eclipse android SDK 1.首先是android相关环境的安 ...
- 鸟哥Linux私房菜基础学习篇学习笔记3
鸟哥Linux私房菜基础学习篇学习笔记3 第十二章 正则表达式与文件格式化处理: 正则表达式(Regular Expression) 是通过一些特殊字符的排列,用以查找.删除.替换一行或多行文字字符: ...
- 鸟哥Linux私房菜基础学习篇学习笔记2
鸟哥Linux私房菜基础学习篇学习笔记2 第九章 文件与文件系统的压缩打包: Linux下的扩展名没有什么特殊的意义,仅为了方便记忆. 压缩文件的扩展名一般为: *.tar, *.tar.gz, *. ...
- 鸟哥Linux私房菜基础学习篇学习笔记1
鸟哥Linux私房菜基础学习篇学习笔记1 第三章 主导分区(MBR),当系统在开机的时候会主动去读取这个区块的内容,必须对硬盘进行分区,这样硬盘才能被有效地使用. 所谓的分区只是针对64Bytes的分 ...
- Java反射篇学习笔记
今天重新学习了java中的反射,写一篇学习笔记总结一下.代码基本都是照着两篇博客敲的: 参考一: https://blog.csdn.net/sinat_38259539/article/deta ...
- [读书笔记]C#学习笔记八:StringBuilder与String详解及参数传递问题剖析
前言 上次在公司开会时有同事分享windebug的知识, 拿的是string字符串Concat拼接 然后用while(true){}死循环的Demo来讲解.其中有提及string操作大量字符串效率低下 ...
- 第一篇markdown笔记
博客的样式设置 1 2 3 参考第一篇博客 参考第二篇博客 高效的写博客 博客园虽然支持markdown,但是好多快捷键都不支持,以后可以先在马克飞象上写好markdown笔记,再复制到博客上.
- java程序设计基础篇 复习笔记 第一单元
java语言程序设计基础篇笔记1. 几种有名的语言COBOL:商业应用FORTRAN:数学运算BASIC:易学易用Visual Basic,Delphi:图形用户界面C:汇编语言的强大功能和易学性,可 ...
- 智普教育Python视频教程之入门基础篇,python笔记
智普教育Python视频教程之入门基础篇,python笔记 print id()内存地址 type()变量类型 windows命令行下edit命令 python数据类型不需要指定类型 定义hostna ...
- 【笔记篇】C#笔记3
笔记目录:http://blog.csdn.net/enzymii/article/details/77169928 C#的接口有点意思,我们说过可以用来多重继承.. using System; na ...
随机推荐
- BZOJ 4817: [Sdoi2017]树点涂色(lct+线段树)
传送门 解题思路 跟重组病毒这道题很像.只是有了一个询问\(2\)的操作,然后询问\(2\)的答案其实就是\(val[x]+val[y]-2*val[lca(x,y)]+1\)(画图理解).剩下的操作 ...
- NX二次开发-遍历当前part所有component,把装配子部件设置成工作部件
NX11+VS2013 #include <uf.h> #include <uf_disp.h> #include <uf_modl.h> #include < ...
- hdu多校第八场 1011 (hdu6667) Roundgod and Milk Tea 二分图匹配
题意: 有若干个班,每个班有些人要喝奶茶,也提供一些奶茶,一人喝一杯,但是自己班的人不能喝自己班的奶茶,求最多能有多少人喝上奶茶. 题解: 典型的二分图匹配问题,学生在左,奶茶在右,学生和非自己班的奶 ...
- [zz]winform 窗体关闭事件
注册窗体关闭事件: 在Form1.Designer.cs 文件中添加: this.FormClosing += new System.Windows.Forms.FormClosingEventHan ...
- CSS3 RGBA等于RGB加上opacity吗?
在我们前端设计里有两篇教程: CSS3 RGBA colors使用说明 css3中opacity属性学习与实践,他们公别介绍了RGBA,RGB,opacity的用法,这里我们把这三个属性放在一起来考虑 ...
- Python高级核心技术97讲✍✍✍
Python高级核心技术97讲 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以 ...
- uoj213 【UNR #1】争夺圣杯
题目 设\(f_i\)表示所有长度为\(i\)的区间的最大值的和,求\(\bigoplus \sum_{i=1}^nf_i\) 不难发现随机数据非常好做 由于一个随机序列的前缀最大值期望只会变化\(\ ...
- 如何去掉vue路由中的#
通过脚手架vue-cli构建的项目,在项目启动后,URL地址上都会带有#,如:http://localhost:8080/#/father 原因:这是因为vue-router 默认hash模式, 使用 ...
- ionic js 加载动画 ionSpinner 提供了许多种旋转加载的动画图标。当你的界面加载时,你就可以呈现给用户相应的加载图标。 该图标采用的是SVG
ionic 加载动画 ion-spinner ionSpinner 提供了许多种旋转加载的动画图标.当你的界面加载时,你就可以呈现给用户相应的加载图标. 该图标采用的是SVG. 用法 <ion- ...
- Codeforces Round #567 (Div. 2)自闭记
嘿嘿嘿,第一篇文章,感觉代码可以缩起来简直不要太爽 打个div2发挥都这么差... 平均一题fail一次,还调不出错,自闭了 又一次跳A开B,又一次B傻逼错误调不出来 罚时上天,E还傻逼了..本来这场 ...