C#入门笔记

来源:互联网 发布:淘宝图书代理 编辑:程序博客网 时间:2024/05/21 17:15

第一阶段 Lesson 4 C#的入门 2

一、 注意点 2

二、 经验 3

第一阶段 Lesson6    C# 入门1  11.26 4

① 注意事项( 在C#中,string是基本数据类型 4

② 面向对象有四个特性 4

③ 什么是对象? 4

④ 类是什么?? 4

⑥ C#的命名规范: 5

⑦ C#数据类型分类 6

⑧ 参数传递.(值传递,引用传递) 6

⑨ 类(类有属性(特征)和方法(行为))和对象的关系? 6

l 函数重载overload 和override 的区别? 7

l 函数重载的注意事项: 7

² this关键字使用 8

第一阶段 Lesson7  C# 入门2  11.28 8

² C#的重写和Java的不一样,哪里不一样? 8

² 命名空间  namespace 8

1) 命名空间的使用方法 8

2) 可以解决两个问题: 9

² 命名空间的使用(using) 9

1) using 就是导入命名空间.. 9

2) using可以释放资源(实现释放资源接口的类才可以用..) 9

² Static(静态)(重点) 10

1) 类有两种:(静态,非静态) 10

2) 为什么静态成员不可以引用非静态成员???而实例成员可以引用静态的和实例成员???? 10

² 我们什么时候用static呢??? 10

1) 为什么主函数要用静态的呢?? 11

² Java和C#的不同; 11

² 编程经验指导(重要) 11

1) 默认构造函数要手动写出来,为什么? 11

2) 静态成员要少用.能不用尽量不用.(理由:生命周期太长.会占内存) 12

3) return "name:"+name 的原理 12

4) 有一个是面试比较喜欢考的: 14

 

第一阶段 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要用到显式强转
int a = (double)1.0;

3,这个是一个小技巧,很实用.
如果你的代码个是很乱,可以去掉最外面的一个}   然后在加上去
代码就会自动对齐了

int a = 0;
                              int b = 1;
           string str = "daf";
//比如这种很乱的

4,+号:
   (1),连接运算符    +号左右两边操作数,有一个为字符串类型
   (2) ,算数运算符    +号两边的操作数,都是数字

3+3+"3"  ="63"
3+"3"+3 = "333"
"3"+3+3="333"

5,C#的输出方法有两种,
(1),像Java一样的输出.
(2),特有的方法..类似C++和C语言

1,Console.WriteLine("afsd"+a+"fsd");

2,Console.WriteLine("{0}+{1}={2}",a,b,(a+b));
最好用这个

6,{N}这个叫格式字符串
\r  ..这种叫转义字符

" "中除了这两个.其他都是一模一样的输出

7,运算符
(1),算数运算符:
     %,求余     自反赋值运算符   ++,=+...
(2),逻辑运算符:
     &,|,!   &&,||  (结果是bool类型)
(3),关系运算符:
    >,<,==,!=...    (结果是bool类型)

7%2 = 1 ;   -7%2=-1;   7%-2 = 1;
看被除数的符号,余数和被除数的符号一样

&与&&的区别,
&所有条件都要算,&&称为短路&,前面为假的便不算后面的

8,这一点是和Java,c,c++有区别的一点   应该注意
(1),switch(string ,int ,char)   switch的条件只能是这三个类型
(2),case后面有语句,switch中如果没有break,则出错
(3),如果case后面不加语句,则可以叠加在一起,穿透下去

switch(a){
 case 1: cw("1111111111");break;
 case 2:case3: cw("2222233333");break;

}

 

 

 

第一阶段 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:是指子类重新定义父类的虚函数的做法。
重载overload:是指允许存在多个同名函数,而函数签名不同(参数表不同:或许参数个数
不同,或许参数类型不同,或许两者都不同)。重载的概念并不属于“面向对象编程”

 

----------

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) 有一个是面试比较喜欢考的:

 

 

 

 

 

 

 

 

 

0 0