您的位置:首页 > 职场人生

[黑马程序员]c#基础学习笔记

2013-04-19 17:19 633 查看
------- WindowsPhone 7手机开发.Net培训、期待与您交流! -------

.net指.net Framework框架,一种技术,一种平台

c#语言

.net可以开发桌面应用程序(Winform),Internet应用程序(asp.net、WebServer),手机开发wp7

.cs表示是类文件

Console.ReadKey();程序停在这里等待用户从键盘按下一个键。

四、变量

int number; (正负20亿左右)

number=1000;

数据类型:数值(整型,非整数(double,decimal(财务金钱方面))),

非数值(char,string)

string 就是把0个或1个或多个字符连接起来。string name="";(正确的)

char sex='';(错误)char sex=' '(正确)

decimal money=10000.25M(10000.25m);精确到28位到29位,财务和货币计算

double精确15到16位(科学计数法)

在c#开发环境中直接写有小数点的数字是double类型的,在一个小数后加一个M/m就是告诉编译器是decimal类型的

变量的声明方法

1)int i; 2)int i=10; 3)int i,j;

i=10; int zsAge=18,wwAge=20;

把警告当成错误!!!!!!!!!!

变量一定是,先声明,后赋值,最后使用。

vs编码格式UTF-8支持多国语言

命名规则

(骆驼命名法Camel)studentName,name。(Pascal命名法)SoftwareName

变量是可以重复赋值的,那么变量中的老值句不复存在了。

Console.Write()只输出第一个参数Console.Write("我叫"+name,"今年"+age+"岁");结果:我叫张三

不管程序是多么的小最好不要定义ab要定义一个有意义的变量。

五、输入

Console.ReadLine();用于让用户从键盘上输入一句话,当程序执行到这句话时,就会暂停,按回车将继续执行。如果想得到

用户输入输入的内容就需要定义一个string类型的变量,接受用户输入的内容string userName=Console.ReadLine();

凡是用户输入的全是string类型

六、字符串的转义

当我们需要在字符串中输入特殊字符时,半角引号,换行,退格,就需要使用转义字符,转义字符是一个字符,由一个\+一个字母组成具有特殊意义的饿一个字符。char ch='\"';

1)("c#中的字符要用\"\"引起来);

2)\n 换行

3)\b Backspace键

4)\t tab键,由多个空格组成的字符,有行与行之间的对齐功能。

5)\\ 表示一个\

6)@字符串里面的\不在转义;字符串换行;如果字符串前加@,有两个双引号代表一个双引号

七、数据类型的自动转换(隐式转换)

(1)int*double=double(将int转化为double类型)

(2)int a=10,b=3;double c=a\b;结果为3 double c=1.2+a\b结果是4.5

(3)当2种类型不一致时,满足以下会自动完成类型转化

1)参与运算的两个数据类型必须兼容

2)必须一边的数据类型表示的范围小,一边大,则把小的转向大的不丢失精度。

【注:隐式转化不可以丢失精度】

八、强制类型转换

相容类型可以强制转化

【注:丢失精度时需要程序员来写代码完成转化】

Math.Round()四舍五入

int a=(int)"33";错误!!!!!类型不一致

string age=(int)Console.ReadLine();错误!!!!!类型不一致

int age=Convert.ToInt32(Console.ReadLine());正确

九、try...catch异常捕获机制

try

{

有可能出错的Code

}

catch

{

错误处理Code

}

十、自加自减复合运算符-关系运算符

int age=18;

age++;效率高于(age=age+1);

age--;

一元运算符的优先级高于二元运算符

<,>,==,!=,>=,<=

十一、逻辑运算符(二元运算符)

&& || !

与 或 非

表达式1&&表达式2(表达式1,2全部是bool类型的)结果也是bool类型

true&&true才为true

!取反

&&的优先级高于||

与或的短路问题

int a=10;

int b=5;

bool result=++a>50&&++b>1;

a=11,b=5;当++a为false时后面的就不再进行计算

bool result=++a>5&&++b>1;

当a=11,b=5;当++5为true时,后面就不再进行计算

十二、if..else...和switch....case和循环结构和三元表达式

break;是必须要写的

default的位置不影响执行结果.

if(flag=false)

{

Console.WriteLine("工资:"+salary);

}

当flag被赋值后整个表达式的值为false,所以不会输出.

switch(month) switch(month)

{ {

case 1: case 1:Console.WriteLine("1月");

case 3: case 3:

case 5: case 5:

Console.WriteLine("31天");break; Console.WriteLine("31天");break;

} }

【正确】 【错误】

do

{循环体}

while{条件};

1.执行循环体

2.判断条件是否成立,如果是true,转向1,false转向3

3.跳出循环

while循环中flag的巧妙的使用

十三、调试

编译错误

运行时逻辑错误

十四、break和continue和三元运算符

跳出循环(for,while,do..while..,foreach)

通常break和if结合使用

continue;用于循环中,程序一旦执行到continue语句,立即结束本次循环(就是不在执行continue下面的语句了),直接进行下一次循环,(do..while/while直接进行下一次循环条件的判断,如果成立,则再次进入循环)例:运动员跑步喝水的例子.

十五、常量枚举

const double PI=3.14;

确定几个值的取值范围

[public]enum Gender{male=1,female}

例:

enum QQStatus{online,offline,hiddle}

class Program

{

static void Main()

{

QQStatus status=QQStatus.offline;

}

}

【注:定义枚举类型时不能是int类型】

枚举类型都可以强制转化为int类型,枚举值有默认编号从0开始(除特殊情况)()

字符串转换为枚举类型

string s = Console.ReadLine();

Gender sex=(Gender)(Enum.Parse(typeof(Gender), s));

enum是说一个关键字Enum是一个class

十六、结构体(其实就相当于一种数据类型)

public struct person

{

public string name;

public int age;

public Gender gender;

public void SayHi()

{}

}

【public勿忘】

person per;

per.name = "zdd";

per.age = 23;

per.gender = Gender.女;

per.SayHi();

访问修饰符 struct 结构名

{

定义结构成员

}值类型先进后出栈,一般通过new的要分配空间

十七、数组

这些变量在内存中是连续存储的,通过索引器来访问

循环变量的生命周期

int类型的数组一旦声明就给就被初始化为0,decimal初始值为0,double初始值0.0;string初始值为null,char为0或\0(ASCII值)(也即null)

int[] nums=new int[3];

int[] nums={1,2,3};

int[] nums=new intr[]{1,2,3};

面试:关于枚举类型的,bool,int不是枚举类型;结构体是枚举类型,

初始值:string 为null,数字类型0,其他为null。

十八、冒泡排序

n个数走n-1趟

在n-1趟的比较过程中,第i趟+比较次数=元素个数

public static int[] Sort(int[] nums)

{

int temp = 0;

//n-1趟,控制比较的趟数i

for (int i = 0; i < nums.Length-1; i++)

{

//每一趟中比较的次数(所有元上的个数(nums.length)-已经确定的元素个数(i))

for (int j = 0; j < nums.Length -1- i; j++)

{

if (nums[j] < nums[j+ 1])

{

temp = nums[j];

nums[j] = nums[j + 1];

nums[j + 1] = temp;

}

}

}

return nums;

}

十九、方法(函数)、参数、返回值

代码重用的一种机制

方法命名:开头大写eg:GetNameByFilter(),ShowUI()

int.Parse()

一个方法只能有一个返回值,多个参数.

一个变量一旦定义在方法外,类的里面买就叫做类的字段,静态方法只能访问静态字段,非静态方法既能访问静态字段,也能访问非静态字段(实例字段).

class Person

{

//字段

int age;

}

二十、方法的重载

public static int Max(int num1,int num2)

public static int Max(double num1,double num2)

public static int Max(decimal num1,decimal num2)

方法的重载:两个同名的方法,一般在同一个类中,

1)方法名同,

2)参数个数或者类型不同,即可构成方法的重载【联想Console.WriteLine()】

注:方法重载和返回值类型无关

一个方法返回多个值:通过参数可以返回多个值。在参数前面加out即可.

Code:

public static bool TryParse(string str,out int re)

{

try

{

re = Convert.ToInt32(str);

return true;

}

catch

{

re = 0;

return false;

}

}

int num;

bool b = TryParse(Console.ReadLine(),out num);

Console.WriteLine("b="+b);

Console.WriteLine("num="+num);

Console.ReadKey();

如果参数是以out形式传入的,那么在传入前可以不赋值

ref引用传递(既可以往里传值也可以往外返回值)

out用于传出值

ref可以理解为双向的,既可以传入也可以传出

在传参的过程中如果参数有out,ref修饰的话,改变方法中参数的值,调用者方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐