打开一个解决方案,以.sin后缀名,.csproj是项目文件的后缀名。

Console.WriteLine("这是我的第二个项目!");你想显示的内容

Console.ReadKey();

   当程序执行到Console.ReadKey(); 时,程序会停到这里,等待用户从键盘上键入一个键,用户键入这个键后,程序才继续执行。

在C#中,每一句都必须以分号结束。

WriteLine与Write的区别是有没有换行。

设置VS环境中的字体与行号 :工具->选项

在C#中注释符:对我们写的程序进行解释,注释是给人看的。有三种:

① 单行注释,以//开始到本行结束

② 多行注释,以/*开始,以*/结束

③ 文档注释,用于类和方法进行注释,在类和方法签名连续输入3个 /

常用键:HOME END PageUP  PageDown DELT

下面一对指令,可以折叠一堆代码

#region 和#endregion

.NET是一种多语言的开发平台,开发.NET可以用多达十几种语言进行开始。

.NET框架平台包括 语言 VC++、C#、VB.NET等

.NET FrameWork 类库(FCL)

公共语言运行库(CLR)

操作系统:

C#通过C#编译器,编译成MSIL(微软中间语言)->CLR(公共语言运行库),代码被执行。

变量:

计算机使用内存(RAM ,Random access momory)来储存数据,内存用于存储计算机正在运行的数据,断电后后面的数据丢失。保存数据之后就将数据从内存转到硬盘中。

运行中,计算机给内存编址,变量代表着一块内存空间,我们可以通过变量名向内存存/取数据,有变量就不需要我们记忆复杂的内存地址。

去宾馆登记入住

要在计算机中存一个数据1000,需要2句话。

申请一块内存空间,考虑类型

int number;

number = 1000; 其中=赋值运算符,将数值1000放入内存空间。

数值(整数int、非整数即小数(double、decimal))

数据类型

非数值(char、string)

Double 小数精度15到16位

Char   字符型 只能存储一个字符,并且存储的这个字符用单引号引起来.’A’

String  字符串类型,就是把0个或1个或多个字符连接起来,要求用双引号引起来。”string”

Decimal 精度28到29位,主要用于财务上。

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

变量声明的方法,有3种:

① 先声明,后赋值;

② 定义变量时,直接赋值;

③ 可以一次声明多个同类型的变量,多个变量名称之间用逗号隔开,最后以分号结束。

注:变量要先声明,后赋值,最后使用(取值或调用这个变量或写这个变量)。

变量的命名规则:

1、 必须以“字母”_ @符号开头(不能以数字开头)

2、 后面可以跟任意的“字母”、数字和下划线。

注意:

1、 变量名不予系统中的关键字重复

2、 在C#中,大小写敏感

3、 同一个变量名不允许重复定义

定义的变量名要有意义。

C#中变量命名编码规范,有两种:

Camel命名法:首个单词的首字母小写,其余单词的首字母大写。在Main()方法中的定义变量采用Camel命名法。

Pascal命名法:每个单词的首字母均大写。

如果使用大英语单词的缩写,全部要用大写。

赋值运算符(=)和赋值表达式

优先级最低的

a= a+1

先把a取出来,相加再赋值

注:变量可以重复赋值,一旦给一个变量附了新值,那么变量中的老值就不存在了。

一般情况下,变量只能定义一次,但可以多次赋值,再次赋值是,会把变量中的值给覆盖掉了。

“+”在C#中有两种意义:

1)是数学中的加法;两边参与加法运算的是数值类型

2)是连接的意思,如果两边参与的是“+”运算的数据,有一个是字符串类型。

整理于2012-02-27

C#中数据类型包括两种,一种是值类型,一种是引用类型,值类型是直接存储值,而引用类型存储的是值得引用。

引用类型的变量又称为对象,可存储对实际数据的引用。Class、interface、delegate都可以用于声明引用类型。

C#中有两个内置的引用类型,object类型和string 类型,

1)object类型

object类型在.NET中是Object的别名,在C#中,所有的类型,都可以直接或间接从Object继承。可以将任何类型的值赋给object变量。

class ObjectClass

{

public int i = 60;

}

class Program

{

static void Main(string[] args)

{

object a = 1;

Console.WriteLine(a);

Console.WriteLine(a.GetType ());//取得当前的类型

Console.WriteLine(a.ToString ());

Console.WriteLine();

a = new ObjectClass();//重新实例化变量a

ObjectClass classRef;

classRef = (ObjectClass)a;//引用调用

Console.WriteLine(classRef.i);

Console.Read();

}

}

string 类型表示Unicode字符的字符串,它是.NET中的String别名,字符串是不可改变的,字符串对象一旦被创建,其内容就不能更改。

string a = "hello";

string c = "h";

c = c + "ello";

Console.WriteLine(a==c);

Console.WriteLine((object )a==(object )c);//a和c引用的不是同一个字符串实例

int i=  Console.Read();

Console.WriteLine(i);

// Console.WriteLine(Console.ReadKey() );

Console.WriteLine();

Console.ReadKey();

装箱与拆箱

装箱是将值类型转换为引用类型object,这使得值类型可以存储在垃圾回收堆中,而拆箱是从对象中提取值类型。

相对于简单的赋值而言,装箱和拆箱过程需要进行大量的计算,对值类型进行装箱时,必须分配并构造一个全新的对象,而拆箱过程的强制转换也需要进行大量的计算,因此装箱和拆箱会对程序的执行性能有影响。

int i = 99;

object o = (object )i;//装箱

Console.WriteLine(o);

Console.WriteLine(o.GetType());

// Console.WriteLine (o.GetHashCode());哈希运算一个数学方程式,

//它可用文本(如电子邮件信息)来生成称为信息摘要的代码。

//著名的哈希函数如:MD4,MD5,SHS。 用于数字鉴别的哈希函数必须有特定的属性,

//使它在密码使用方面有足够的安全性。

o = 123;

i = (int)o;//拆箱

Console.WriteLine(i);

Console.WriteLine(i.GetType ());

Console.ReadKey();

Sbyte 八位有符号整数

Byte 八位无符号整数

??操作符

int ? x = null;

//y=x,如果x=null,y=-1

int y = x ??-1;

Console.WriteLine("y是{0}",y);

New运算符

New 运算符用于创建一个新的类型实例,它有以下3种形式:

1)对象创建表达式,用于创建一个类类型或值类型的实例。

2)数组创建表达式,用于创建一个数组类型的实例。

3)代表创建表达式,用于创建一个代表类型的实例。

Typeof运算符

Typeof运算符用于获得系统原型对象的类型,即type对象。Type类型包含关于值类型和引用类型的信息,Typeof运算符可以在C#语言中的各种位置使用,以找出关于引用类型和值类型的信息。

Type myType = typeof (int );

Console.WriteLine(myType );

占位符

在Console.WriteLine("")中,第一个变量或字符串可以使用占位符。

占位符由{数字}组成,数字由0开始编号

第1个占位符:{0}

第2个占位符:{1}

第3个占位符:{2}

......

0取第一个变量,1取第二个变量,占位符可以重复使用。

Console .WriteLine ("我叫{0},今年岁了,我的工资是{2}元",name,age,salary );

占位符

Console .WriteLine()有多个参数时,输出都是第一个参数中的内容,从第二个参数开始时,都是用来替换第一个参数中的占位符的值,所以从第二个参数开始,要不要输出,就要看第一个参数有没有相关的占位符。(?)

字符串类型

Console.ReadLine( );

用于让用户从键盘上输入一句话,当程序执行到上面的一句话,就会暂停,然后等待用户从键盘上输入一句话,按回车程序将继续执行。如果想得到用户输入的内容,就需要定义一个string类型的变量,写在上面一句话的前面,接收用户输入的内容。接收用户输入的内容,必须定义一个字符串来接收。

string  input = Console.ReadLine( );

字符串的转义

转义字符:什么时候用转义字符?

当我们需要字符串中输入一些特殊字符时,比如半角引号、换行、退格。

转义字符是一个字符,它由一个\和一个字母来组成,并且有特殊意义的一个字符。常用转义字符有:

\n 换行

\b baskspace 退格

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

\\ 表示一个扛

\"表示一个"

在字符前面加一个@有两种意义:

⑴字符串中如果有\,则不再理解为转义符;

(2)使字符串可以换行

如果在字符串前面加了@符号,在字符串中用两个双引号代表一个引号。

算数运算符及算数表达式

算数运算符:+ - * / %(取余或取模)

算数表达式:由算数运算符连接起来的式子。

C#中,有5个运算符,+ - * / %它们均是二元运算符,要求参与的两个操作数的类型必须相同,并且经过运算的结果也与操作的类型相同。

优先级:先乘除,后加减,有括号先运算括号内的,先算里层的括号,再算外层的括号,相同级别从左至右运算,小括号可以无限制使用,注意的是,一定要成对出现。

类型自动转换规则:

参与运算(算数运算和赋值运算)的操作数和结果类型必须一致,当不一致时,满足下面条件时,系统会自动完成类型转换。

1)两种类型兼容;比如int类型和double 类型

2)目标类型大于源类型;比如double >int ,小的转向大的,且数据不丢失。

3)对于表达式

如果一个操作数为double类型,则整个表达式将提升为double类型。

在自动转换过程中,是不丢失精度的,经常遇到的是,参与运算的两个操作数,一个是int类型,一个是double类型,那么int 类型将自动转换为double类型。

如果精度丢失,则自动转换不会进行。

强制类型转换:

语法:

(数据类型名)待转换的值

强制类型转换,数据一定要相互兼容。

字符串说法通过强制类型转换成数字类型,因为强制转换要求待转换的类型和目标类型必须都为数字。

string age = Console.ReadLine();

int age1= Convert.ToInt32 (age);

Convert 不再是内存级别的转换,而是考虑数据含义的转换。Convert是一个加工、改造的过程。

一切类型都可以转换为String 类型。

Try-catch

Try

{

有可能出现错误的代码在在这里

}

Catch

{

出错后的处理

}

如果try中的代码没有出错,则程序正常运行try中的内容,不会执行catch中的内容。

如果try中的代码一旦出现错误,程序立即停止,跳入catch部分进行执行。

自加自减

一元表达式

++ 有前加和后加

-- 有前减和后减

Int age = 18

Int sum = age++ - 10

上面代码在进行运算时,age++取age原值进行运算,所以sum= 8;

就相当于

Int age = 18

Int sum = age - 10

Age = age +1

Int  age = 18;

Int sum = ++age -10 ;

在运算时,++age取age加一后的新值参与运算,故sum= 9;

就相当于

Int age = 18;

Age = age + 1;

Int sum = age -10;

总之,不管是++age,还是age++,age的值都进行了加一运算。

在c#中,一元运算符的优先级比二元运算符的优先级高。

复合运算符

+=  age +=3 就等价于age = age +3,理解为在age的原值上直接加3

-=

*=

/=

%=

C#中,能改变变量中的值有:

=、++、--、+=、-=、*=、/=、%=

关系运算符(比较运算)

>  <  ==  != >= <=

在C#中,6个关系运算符,用于比较两个事物之间的关系。

关系表达式的运算结果为bool类型,BOOL类型只有两个值,一个是True一个是Flase,如果关系表达式成立,则这个表达式的值为True,否则为False。

逻辑运算符(&& || !)

1)逻辑与运算符(&&)

表达式1

表达式2

逻辑与结果

True

True

True

Flase

True

Flase

True

Flase

Flase

Flase

Flase

Flase

逻辑与(&&)连接的两个表达式要能求解成BOOL类型,一般情况下都是关系表达式,整个逻辑与运算结果也是BOOL类型

BOOL isRight = 表达式1 &&表达式2

先进行关系运算,再进行与运算。

2)逻辑或运算(||)

只要有一个为True,其运算结果就为True

3)逻辑非(!)(取反)  这是一个一元运算

用法:

!(布尔类型的表达式即关系表达式)

作用,真变假,假变真

&&逻辑与 第一个条件为false时,第2个表达式不执行

||逻辑或   第一个条件为true时,第2个表达式不执行

优先级:

If 结构

If(条件) 条件时关系表达式或逻辑表达式

{

语句1;

}

执行过程:

首先判断条件的结果,如果条件为true,则执行语句1,如果条件为False,则跳过语句1,执行后面的语句。

注意:

1)if后面括号中的条件要能计算为一个bool类型;

2)默认情况下,if语句只能带一句话,即和if语句有关的语句只有语句1。

If - else 结构

语法

If(条件)

{

语句块1;

}

Else

{

语句块2;

}

如果大括号去掉,则只带一句话。

执行过程:

如果条件为true,则执行语句块1,并且跳过else所带的语句块2 ;

如果条件为False,则跳过if所带的语句块1,执行else带的语句块2 。

上面两个语句块,根据条件结果为true或false,总有一个语句块被执行。

If - elseif -else

语法

If(条件1)

{

语句块1;

}

elseIf(条件2)

{

语句块2;

}

elseIf(条件3)

{

语句块3;

}

。。。。。。

Else

{

语句块;

}

在if-elseif结构中只有当上一条件不成立时,才会进入下一个elseif 语句,并进行后面的条件判断,一旦elseif后面的条件为true,则执行elseif所带的语句块,执行完成后,程序跳出if-elseif结构,如果所有的if都不成立,如果有else,则执行else后面所带的语句,否则什么都不执行。

Else 永远和最近的if语句配对。

Ctrl+K+F 自动排版功能。

Switch-case语句

语法:

Switch(表达式)其结果是一个值

{

Case 值1 :

语句块1:

Break;

Case 值2 :

语句块2:

Break;

Case 值3 :

语句块3:

Break;

。。。。。。

Default :

语句块3;

Break;

}

执行过程:

首先计算表达式,然后根据计算的结果,去匹配case后面的值,如果有匹配项,则执行匹配项后面的语句,知道该语句后面的break语句,跳出switch-case语句,如果与所有的case后面的值都不匹配,如果有default,则执行default,则执行default后面的语句,如果没有default语句,则跳出switch-case,什么都不执行。

注意:

直接搜索匹配项,与default位置无关,只有和匹配项有关,只有当没有匹配项的时候,才执行default后面的语句。

但多种类型输出的结果相同时,可以合写。

If - elseif -else和 Switch-case语句

相同点:

都可以实现多分支结构:

不同点:

Switch-case语句一般情况下只能用于等值比较

If - elseif -else语句可以处理范围

目前,我们学习的程序结构有3种:

顺序结构

分支结构

循环结构

While循环的语法

While(循环条件)结果是bool类型,是true或是false

{

循环体;及要循环执行的N条语句

}

执行过程:

1)先判断循环条件,如果条件为True,则转向2),如果条件为false,则转向3);

2)执行循环体,循环体执行结束后,转向1);

3)跳出循环,循环结束。

注意:

在循环体中一定要有改变循环条件中的每个变量的值得语句,使循环条件终有一天为False。

N此循环,如果i从0开始,则循环条件为i<n

特点:是先判断,后执行。

Do -while 循环

语法:

Do

{

循环体;

}

While(条件);

执行过程:

1)先执行循环体,执行完循环体,转向2);

2)判断条件是否成立,如果条件为True,转向1),如果条件为False,则转向3)

3)跳出循环。

加入循环条件开始就不成立,对于while循环,一次都不会执行循环体,而对于do-while循环,会执行一次循环体。

Try-catch语句

检测异常

Try

{

有可能出现异常的代码

}

Catch

{

出现异常后的处理

}

如果try语句真的代码没有出现异常,则不会执行Catch中的代码,如果try中的代码出现异常,则程序立即跳到catch中。

如果语句有异常,则不会执行异常语句下面的语句。

程序调试

程序错误一般有两种错误:语法错误和逻辑错误。

3种方法:

1)单步运行

2)观察变量

3)设置断面

F10  F11 单步运行

For 循环

用于已知循环次数:

语法:

For(表达式1;表达式2;表达式3)

{

循环体;

}

执行过程:

1)先计算表达式1,转向2);

2)判断表达式2(即为循环条件),如果表达式2的值为True,转向3),如果表达式2的值为False,转向5);

3)执行循环体,转向4);

4)执行表达式3,转向2);

5)跳出循环,循环结束。

一般情况下,表达式1用于循环变量和对循环变量附初值;

表达式2为循环条件;

表达式3用于改变循环变量的值。

跳转语句

Break语句,用于循环中,退出当前循环。Break一般与if语句配合使用

While

{

........

Break;跳出循环

随后的语句不执行

}

注:

1)用于Switch-case结构中,用于跳出switch。

2)用于循环中,跳出循环,终止循环。

用于循环中,跳出的是break所在的循环。

标志位 flag  定义为bool类型

Continue 语句

While(  )

{

Continue;继续进行下一次循环。

}

Continue:

用于循环中,程序一旦执行到continue语句,立即结束本次循环,就是不再执行循环体中下面的语句,直接进行下一次循环。

对于do-while/while循环,直接进行下一次循环条件的判断,如果成立,进入下一次循环。

对于for循环,先执行表达式3,再判断条件是否成立。

三元表达式

表达式1?表达式2:表达式3

执行过程:

首先计算表达式1,应该是一个能够计算成BOOL类型的值,如果BOOL类型的表达式为True,则表达式2的值为整个表达式的值,如果表达式1的值为False,则表达式3的值作为整个表达式的值。

于2012- 03-02早晨

C# 基础(2)的更多相关文章

  1. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  2. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  5. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  6. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  7. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  8. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  9. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

  10. .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]

    方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...

随机推荐

  1. IIS部署WCF

    IIS部署WCF [转载自——http://www.cnblogs.com/starksoft/p/4992059.html] 1 部署IIS 1.1 安装WAS IIS原本是不支持非HTTP协议的服 ...

  2. 多个字段用and和or时要注意用括号。

    多个字段用and和or时要注意用括号. 新技能get! create table wly_test (name1 varchar2(10),number1 number(6),score1 numbe ...

  3. angularjs实现 checkbox全选、反选的思考

    之前做了一周的打酱油测试,其实感觉其实测试也是上辈子折翼的天使. 好长时间没写代码,感觉好多都不会了. 感谢这周没有单休,我能看熬夜看奥运了.我能有时间出去看个电影,我能有时间出去逛个商城,我能有时间 ...

  4. jsp动作标签概述

    *Jsp动作标签概述: >动作标签的作用是用来简化java脚本 >jsp动作标签是JavaWeb内置的动作标签,它们是已经定义好的动作标签,我们可以拿来直接使用. >JavaWeb一 ...

  5. nodejs & nodemailer

    nodejs & nodemailer https://www.npmjs.com/package/nodemailer 上面的連接裏面 有有一個例子: 可以直接拿來用: 安裝依賴,在pack ...

  6. oracle client与ODAC的字符集

    1.pl/sql developer 9里检查客户端字符集与服务端是否一致 首选项,选项,检查客户机与服务器字符集是否匹配 2.Windows环境变量的修改即时生效 3.ODAC12安装后字符集的变化 ...

  7. SQL笔记 [长期更新] (-2015.4)

    [遍历所有表,复制表结构,复制表数据] --插入语句SELECT * INTO A FROM B 是在还没有A表的情况下,直接通过B表创建并把B表数据复制到A表里面,之后A,B表的结构和数据完全一样. ...

  8. Linux命令总结:file

    转自:http://www.cnblogs.com/kerrycode/p/3806618.html 1.命令简介:用来识别文件类型,也可辨别一些文件的编码格式.它是通过查看文件的头部信息来获取文件类 ...

  9. Django web 基础

    一.Django概述 Django大而全; 创建Django工程:django-admin startproject sitename 创建django之后生成的目录结构如下: Project Pro ...

  10. 【BZOJ3504】危桥(最大流)

    题意:见题面 思路:http://www.cnblogs.com/chenyushuo/p/5139556.html 必须交换b1,b2做第二次最大流的原因: 假如一个a1到b2的一个流和b1到a2的 ...