l 函数重载overload 和override 的区别? 7
2) using可以释放资源(实现释放资源接口的类才可以用..) 9
2) 为什么静态成员不可以引用非静态成员???而实例成员可以引用静态的和实例成员???? 10
2) 静态成员要少用.能不用尽量不用.(理由:生命周期太长.会占内存) 12
第一阶段 Lesson 4 C#的入门
一、注意点
主要有以下几点应该注意一下:
C# 中tab是一个非常有用的键,tab键可以让我们快速的补全代码,增加了编程的效率 eg:cw+两下tab 则是输出 Console.WriteLine(); if + 两下tab 则是整个if的条件还有if(true){} for+两下tab 则跳出 for(int i=0,i<length,i++){} |
二、经验
1,在C#中 ,只要有小数点的都认为是double类型.. 除非1.0f 这种是float
| int a = 1.0; 这个就出错了, double无法隐式的转换成int所以出错 |
2,char->int->float->double 隐式类型转换只能按照这个顺序 | 如果想从double转换成int要用到显式强转 |
3,这个是一个小技巧,很实用. | int a = 0; |
4,+号: | 3+3+"3" ="63" |
5,C#的输出方法有两种, | 1,Console.WriteLine("afsd"+a+"fsd"); |
6,{N}这个叫格式字符串 | " "中除了这两个.其他都是一模一样的输出 |
7,运算符 | 7%2 = 1 ; -7%2=-1; 7%-2 = 1; |
8,这一点是和Java,c,c++有区别的一点 应该注意 | switch(a){ |
第一阶段 Lesson6 C# 入门1 11.26
① 注意事项( 在C#中,string是基本数据类型
② 面向对象有四个特性
1,可维护性 2,可扩展性 3,灵活性 4,可复用性 |
③ 什么是对象?
万事万物皆为对象. 类名 对象名= new 类名(); |
④ 类是什么??
类是具有相同属性与共同行为对象的集合. class 类名{ 属性; 方法; } C#如果没制定public还是private还是protected就默认为私有...
|
⑤ 函数是什么??
函数是具有特定功能的代码的集合... 实参:函数调用时的参数 形参:函数定义时的参数 |
⑥ C#的命名规范:
1,帕斯卡命名:类名,命名空间,属性名,方法名 2,骆驼命名: 参数列表,.字段,局部变量 string namel int num; 这种是字段....Java中没有字段这种说法..
|
⑦ C#数据类型分类
1,值类型,结构(基本数据类型),枚举 2,引用类型...不是值类型就是引用类型 |
⑧ 参数传递.(值传递,引用传递)
1,值传递(把复印件传递过去) 2,引用传递(把原件传递过去) |
⑨ 类(类有属性(特征)和方法(行为))和对象的关系?
1,类是对象的模板 2,对象是类的实例 |
⑩ 函数的重载overload
函数名相同,参数类表(参数个数和参数类型)不同 1,与返回类型无关. 2,与变量名无关. |
l 函数重载overload 和override 的区别?
重写override:是指子类重新定义父类的虚函数的做法。
---------- eg: void Show(){}; Show void Show(int a ){}; Show int void Show(int b){}; Show int int Show(){}; Show void Show(int a,double b){}; Show int double 看右边这个.一样的就不可以是重载函数.....
|
l 函数重载的注意事项:
1,当没有自定义一个构造函数时,CLR会默认给一个无参的构造函数 2,当有自定义一个构造函数,CLR就不会给默认的构造函数 3,无参的构造函数最好自己显式写一个..(不然就存在隐患..) |
² this关键字使用
1,解决局部变量与属性同名问题 2,public A():this("xxx",200){} public A(string name,int blood){初始化} 可以使不完整的构造函数调用完整的构造函数.. |
第一阶段 Lesson7 C# 入门2 11.28
² C#的重写和Java的不一样,哪里不一样?
C#的重写格式是这样的 override重写关键字... public override string ToString(){ .......; } |
² 命名空间 namespace
nagespace知识一个逻辑结构,就是不像Java那样,是目录结构(在硬盘中可以目录结构的..就是一层一层目录的看) 而C#的话,就没像Java那样,在硬盘中找不到具体概念...... |
1) 命名空间的使用方法
namespace 命名空间名(帕斯卡命名规范){ } 一个完整的类名是这样的....命名空间名.类名
|
2) 可以解决两个问题:
1,就是类名相同问题 2,就是类访问安全问题..
|
² 命名空间的使用(using)
有了命名空间.我们就要有使用的方法..using
1) using 就是导入命名空间..
using System; 相当于Java的lang包 using System.collection.Generic; //泛型 using System.linq ; 这个很重要,,Linq using System.Text; //格式转换..正则表达式. |
2) using可以释放资源(实现释放资源接口的类才可以用..)
比如Java中的流就是资源..using相当于流中的close() 使用方法: using(资源){ 操作; } |
² Static(静态)(重点)
今天教的最重要的就是静态的使用Static static(在程序加载时就导入的..就是程序运行前就导入 了) |
1) 类有两种:(静态,非静态)
1,static成员. 2,非static成员(实例成员) |
2) 为什么静态成员不可以引用非静态成员???而实例成员可以引用静态的和实例成员????
每当一个程序要运行前,程序就会先导入static成员,然后在导入实例成员,所以静态方法不能引用非静态的方法...因为那个时候还没有实例成员,要怎么引用呢???? 但是实例成员可以引用静态成员的..因为那个时候静态成员已经存在了...不是吗??? |
但是我们应该清楚一个问题??
² 我们什么时候用static呢???
1,要让多个实例对象共享的数据.考虑用静态 2,该执行方法与实例对象无关,可以考虑用... |
1) 为什么主函数要用静态的呢??
直接用类名便可调用主函数,所以这样就不用创建一个对象才能调用主函数... 方便于编译器的使用...所以主函数用静态的.. |
² Java和C#的不同;
1,Java的public class的类名要和文件名一样才可以用..而C#不用这样 2,Java 的包(package)是目录结构的,而C#的是逻辑结构(就是只是一个概念.无法在具体中查看到,Java的可以在文件目录结构中看到..) |
² 编程经验指导(重要)
1) 默认构造函数要手动写出来,为什么?
在定义构造函数时,做好把默认构造函数显式的写出来,因为这样客户调用无参的构造函数也不会出错.(理由:自定义的构造函数,系统就不会默认给一个无参的构造函数) |
2) 静态成员要少用.能不用尽量不用.(理由:生命周期太长.会占内存)
3) return "name:"+name 的原理
这个字符串相加的最好不怎么用.因为占内存... (理由:string不允许被修改-->常量,所以要修改的时候,是要在创建一个新的字符串,然后把地址给对象. string是一个基本数据类型.但是它也是一个类..唯一的一个类外...)
创建的顺序: 1,创建字符串的值 2,给字符串对象地址值(在堆中的地址)
代码在电脑操作中的实际流程...
|
4) 有一个是面试比较喜欢考的: