1、C#基础:变量、运算符、分支、循环、枚举、数组、方法

C#、.Net以及IDE简介

一、什么是.Net?

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

.Net Framework框架是.Net平台不可缺少的一部分,它提供了一个稳定的运行环境来保证我们基于.Net平台开发的各种应用能够正常运转。

.Net Framework 各版本区别

2002年 1.0------vs2002

统一类型系统,基础类库,垃圾回收,多语言支持、ado.net 1.0、asp.net 1.0、winform 1.0。

2003年 1.1------vs2003

安全方面升级、自带对ODBC Oracle的支持,支持ipv6

2005年 2.0------vs2005

提升安全性、性能、泛型和内置泛型集合、基础类库的扩展、引入事务Transaction

2006年 3.0------需要2.0框架支持

WCF(WEB服务)、WF(工作流)、WPF(用户界面统一)、WCS(数字标识用户控件)

2007年 3.5------vs2008

asp.net AJAX、Linq、自动属性、对象初始化器、集合初始化器、扩展方法、Lambda表达式、查询语法、匿名类型、LinqtoSQL、MVC

2010年 4.0------vs2010

DLR、dynamic、默认参数、命名参数、并行开发等

.NET Framework 由.NET Framework类库和公共语言运行时两个主要组件组成

CLS(公共语言规范):用来保证语言之间的兼容性,只要遵循CLS任何一种.net语言编写的组件都可以被其他语言所引用。

CTS(通用类型系统):定义了如数字、字符串和数组等数据类型的规则,这样他们就能为所有的.net语言所共享。

CLR(公共语言运行库): 只是用来执行中间语言代码。然后把他们编译成为机器语言让他们能在当前平台执行。

DLR(动态语言运行时):4.0的新特性,CLR为c#和vb提供了通用的平台,而DLR则为javascript、Ruby等com组件提供了通用平台。

二、什么是C#?

C#是一种编程语言,可以开发基于.Net平台的应用。

.net 是一种多语言开发的平台 vb c++ F# 等,主要使用C#编程语言进行开发。

三、.Net能干什么?

1、桌面应用程序(Winform),就是软件。

2、Internet应用程序(ASP.NET),就是网站。

3、手机开发 wp8

4、Unity3D 游戏开发

四、.Net交互模式

C/S:Clinet/Server,客户端对服务器,需要安装在电脑上的软件。

B/S:Browser/Server,浏览器对服务器,不需要安装在电脑上,通过网页打开。

五、什么是IDE?

IDE 是指我们使用的开发工具,visual studio就是最常用的一种。

visual studio使用

启动方式:双击图标、命令:devenv

创建控制台项目:新建项目 c# 控制台 右上角.net framework 版本 项目名称

解决方案关系:解决方案中包含多个项目,项目中包含多个文件,文件中命名空间包含类,类中可以包含方法,方法中包含程序代码。

.sln后缀的文件是解决方案文件,包含整个解决方案的信息。类文件以.cs结尾。

.csproj 项目文件里面包含项目的信息。

解决方案 右键 新增项目 新建项目追加到解决方案 多个项目时 可以设置某个项目为启动项目 启动时自动启动该项目 项目可以卸载 和追加 当执行编译时 不再检查已卸载的项目 工具->导入导出设置 中有个重置开发环境, 设置下可以设置字体 行号。

常用快捷键:ctrl+k+d全部对齐 | ctrl+k+f部分对齐 | ctrl+s保存 | ctrl+shift+s全部保存 | ctrl+c复制 | ctrl+v粘贴 | ctrl+z撤销 | ctrl+y前进 | ctrl+j智能提示 ctrl+w+e代码自动折行 等等。

六、Main方法

Main方法是程序的入口方法。 执行一个程序时,首先找到main方法,从main方法中第一句程序开始执行,当main方法执行完毕后程序就结束了。 一个程序只能有一个main方法

输入输出


1

2

3

Console.WirteLine(); //向控制台输出一句话。

Console.ReadLine();  //向控制台输入一句话。

每一句代码以;结束

启动方式:f5带调试启动,shift+f5不启动

生成解决方案编译项目F6

八、xmind 绘图软件

新建空的  tab键 新增子节点   回车键 新增兄弟节点

F7快捷截图 F8预览

基础语法

一、注释

// 单行注释 ctrl+k+c ctrl+k+u取消

/* */ 多行注释

/// 文档注释

#region #endregion 折叠代码 ctrl+k+s #reg

二、配置c#编译环境

c#源程序需要.net framework SDK安装程序提供的C#编译器 csc.exe来编译,需要设置环境变量。

我的电脑-属性-系统属性-高级-环境变量-系统环境变量-系统变量-选择path-点编辑-将sdk安装程序路径添加到变量值。

C:\Windows\Microsoft.NET\Framework\v4.0.30319 //我的路径 path中;区分

cmd 进入源文件目录 输入csc xxx.cs 该目录下会编译为xxx.exe可执行文件 cd C:\Users\大伟\Desktop\abc\abc---> csc Program.cs

三、变量

用来在计算机中存储数据,存储于内存中。内存是临时存储数据 断电时内存中数据丢失

编写的代码存在内存中, 保存后从内存中保存到硬盘中 变量代表着一块内存空间,可以通过变量名称向内存中存/取数据。

1、声明变量

数据类型 变量名;

例:int a; string b; double c;

2、变量赋值

变量名=值; 其中"="为赋值运算符,把右侧值赋給左侧变量。

例:a = 1;b = "asd";c = 2.13; 优先级最低a=a+1;算完在赋值;

3、声明并赋值

数据类型 变量名 = 值;

例:int a = 1;

变量可以重复赋值,以最后一次为准,但不可以重复声明 变量必须先声明后使用

四、数据类型

整型:int、浮点数:double、字符:char、字符串:string、货币:decimal。

double 精度15~16位,16后不再显示, decimal精度29 后面加m/M否则按double类型报错。

4.0新特性

System.Numerics.BigInteger 大整数类型 需要framework 4.0或以上 如果没有 检查bll是否引用程序集

BigInteger big = new BigInteger(1000000000);
long value = 31313892839283;
BigInteger big = value;

dynamic 动态数据类型

运行时才检查数据类型

dynamic v = 124;

Console.WriteLine(v.GetType()); //System.Int32

五、变量命名规则

必须字母或_或@开头、不可以数字开头。后面可以跟数字、字母、下划线。

不可以与系统关键词重复、大小写敏感、不可以重复定义。

如果缩写单词全部大写ICBC,多个单词第二个单词大写首个小写fuckYou? 或每个都大写FuckYou!

六、“+”号的使用

“+”数字相加(左右都是数字)  例:1+1

“+”字符串链接(有一个是字符串) 例:string result = "haha" + 123;

七、占位符

"我叫{0},身高{1}",one,two; 右侧保证与左侧占位符个数相同 否则报错

console输出中","后面都是用来替换占位符的

八、变量交换

int a = 5,b = 10,temp;

temp = a;

a = b;

b = temp; // 完成交换

九、转义字符

由\加上一个字符组成可以输出的特殊字符

\"输出引号 \n换行 \b退格 backspace键 删除前一个 \t tab键 行对齐 \\ 输出\

字符串前面加@标识该字符串有\不再转义,字符串可以换行,输出“时用两个“

十、算术运算符

+ - * / % 二元运算符 两个数字运算

十一、算术表达式

由运算符链接两个数组成表达式 a+b

十二、类型转换

隐式类型转换:也叫自动转换,当目标类型大于源类型时发生转换。(小的转成大的)

显示类型转换:也叫强制转换,把double强制转换成int不要小数点【(数据类型)值】(大的转成小的)

(int)string 右侧string必须是整数才可以转换。

Convert转换

Convert.ToInt32(带转换字符串); //转换为Int;

Convert.ToString(number); //转换为字符串

类型都有一个.ToString() 也可以用这个方法转换为字符串

十三、可空类型? 
int? a = null;  表示a的值可以为null使用

十四、异常处理

try{}catch 可能有错误的try中 报错进入catch

运算符

一、一元运算符

++ 自增 -- 自减

后++;age=18; sum = age++ -10; age++取前值先算age-10 运算后 再运算age++; age=19 sum=8;

前++; ++age - 10 ++age 取新值 先+完

二、复合赋值符

+= += *= /= %=

age+=3; 自加3 类似:age=age+3;

三、关系运算符

>大于 <小于 ==等于 !=不等于 >=大于等于 <=小于等于

两个数的操作称为二元运算符

四、布尔类型

bool 类型只有两个值:真true、假false。

关系运算的结果是布尔类型的

五、逻辑运算符

&&与 : 左右表达式都成立则为true

|| 或 : 左右表达式有一个成立就为true

! 非 : 不成立则为true

六、三元运算符

a1= =a2 ? "a" : "b" 成立输出a 否则输出b

分支结构

一、If

if(判断条件)
{
    要执行的代码; 
}
判断条件一般为关系表达式或bool类型的值,如果判断条件成立则执行大括号内代码。

二、If-else

if(判断条件) 

    成立的代码
}else { 
    不成立的代码 

如果判断条件成立,执行大括号内代码,否则执行else内代码。

三、If-else If

用来处理多条件的区间性判断


1

if (a=1){} else if (a=2){} else if (a=3){} else {} 

你懂的一直判断有没有 实在没有就else。

四、Switch-case

用来处理多条件的等值比较

switch (num)
{
    case 1: 如果1
        1
    break;
    case 2: 如果2
        2
    break;
    default: 否则
        other
    break

}

循环结构

一、While循环

先判断再执行

int i = 0; 
While(i<100) //条件 

    i++; 
    if(i==50)
        break; //跳出循环
}

二、do-while循环

先执行再循环

do
{
    i++;
}while(i<50);

三、for循环

规定次数的循环

for(int i = 1;i<10;i++){
    console.writeline(i);
}

四、foreach循环

循环集合

foreach(var item in list){
  console.writeline(item.xx);
}

循环的集合 见第二章 都是循环就放这了 大量数据情况下 没有for效率高

五、跳转语句

break 立即跳出循环

continue 结束本次 继续下次循环

goto跳转到指定位置

return 返回

throw 抛出异常

常量、枚举、结构以及数组

一、常量

不可改变的值

const 类型 名=值

const pi=3.14;

二、枚举

限制赋值 在定义枚举时的集合中选值

public enum Gender //定义枚举
{
    男,
    女
}

Gender gender = Gender.男; //枚举赋值

定义枚举时,值不能是int类型的,那样做没有意义。

枚举转换为int

枚举的类型可以跟int类型互相转换,枚举类型与int类型相兼容。

枚举的值在定义时是有一个默认编号的,从0开始。

(int)Gender.男; //值为0 女为1 每次递增1

改变枚举的默认值定义时赋值,则默认从此值开始。

public enum Gender //定义枚举
{
    男=2,
    女
}

这时(int)Gender.男 值为2,女则为3.

枚举类型转换

int转换为枚举

Gender gender = (Gender)n1; n1为0时则输出男。

string类型转换为枚举

Gender gender = (Gender)(Enum.Parse(typeof(Gender),"男"));

三、结构

public struct Person //定义结构
{
    public string name; //定义字段
    public string tel;
}

Person zsPerson; //使用结构
    zsPerson.name = "zs"; //结构赋值
    zsPerson.tel = ‘138484848448‘;

四、数组

声明数组并指定长度

数据类型[] 数组名=new 类型[数组长度];

赋值 数组名[0]=1;

从0开始 int类型数组 默认值0

数组名.length 获得数组长度

int [] nums = new int[10]; //定义数组

nums[0] = 1;

nums[1] = 2; //赋值

int lengt = nums.Length; //得到长度

for (int i=0; i< nums.Length; i++) // 遍历取值

声明时直接赋值不指定长度

string[] names = { "zhangsan", "lisi", "wangwu" };

string[] names = new string[3] { "zhangsan", "lisi", "wangwu" };

数组长度需要和值长度相等 就是不能不符

string[] names = new string[] { "zhangsan", "lisi", "wangwu" }; //可以省略数组长度

五、冒泡排序

让数组中的元素两两比较(第i与第i+1比较)经过n(个数-1)次比较

从大到小排序 用小于比较 成立就交换

int[] nums = { 1, 5, 23, 8, 5, 0, 4, 5 };

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

{

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

{

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

{

int temp = nums[j];

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

nums[j + 1] = temp;

}

}

}

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

{

Console.WriteLine(nums[i]);

}

Console.ReadKey();

方法

方法就是将一堆代码进行重用的一种机制,可能有输入的值,返回的值,执行后返回结果。

方法一般定义在类中,如果方法没有返回值则使用void。

[访问修饰符][static] 返回值类型 方法名([参数]) //[] 中可又可无

{

return; //返回

}

public static void showView()

{

Console.WriteLine("Hello World!");

}

//static 静态的 调用 class.showView();

一、变量作用域

全局变量 定义到类中 所有方法通用 静态方法中使用定义时也要用静态

局域变量 在哪个方法定义 在哪用

二、参数

参数个数,类型要相同 int.Parse(string) 类似 Convert.ToInt32(string)

static void Main(string[] args)

{

test("Diavd", 18);

}

public static void Test(string name, int age)

{

Console.WriteLine("my Name is {0} , Age is {1}", name, age);

}

三、返回值

public static string Test(int a)

{

if (a == 1)

{

return "1";

}

else

{

return "other";

}

}

返回值要与返回类型相同。

四、方法重载

方法名相同 参数个数或类型不同 可以构成 与返回值无关

static void Main(string[] args)

{

int m = Max(10, 20);

double d = Max(10.3, 20.3);

}

public static int Max(int one, int two)

{

if (one > two)

{

return one;

}

else

{

return two;

}

}

public static double Max(double one, double two)

{

if (one > two)

{

return one;

}

else

{

return two;

}

}

五、out

用来返回一个值; 传出 通过参数返值

//可以在方法内不赋值下直接使用

static void Main(string[] args)

{

int number; //number已经是20了;

int result = test(out number);

}

//number可以不赋值便使用,调用时也需要写out

static int test(out int a)

{

a = 20; //如果方法参数名标记为out 则方法中必须对其赋值。

return a;

}

int number = int.Parse("a12");// 如果失败则抛出异常。

int result;

bool number2 = int.TryParse("a12", out result); //第一转换字符串,第二返回转换成功的值 或失败为0;

返回值是否成功 true false;

六、ref

引用传递 方法内的值改变了 外面也将改变

static void Main(string[] args)

{

int number = 100;

test(ref number); //执行后number为500

}

static void test(ref int a)

{

int b = a; //不对a进行赋值直接使用

a = 500; //此时不是变量赋值 而是内存地址边为number 相当于创建快捷方式 而不是复制一份

}

七、params可变参数

public void test(string name,params int[] ages) 
{

}  
//调用 数组长度可变 
test("a",12,12,12);  
test("b",13,2);

可变参数必须是参数列表的最后一个参数

4.0新特性

1、可选参数

可以为可选参数省略参数值,每个可选参数都具有默认值作为定义的一部分

public void abc(int num1,int num2,string oper = "+")

其中num1,num2为必选参数,oper为可选参数,不输入时默认为+

2、命名参数

可以在调用参数时,不按照顺序进行调用

public void abc(int num1,int num2,int num3)

abc(num2:123,num3:123,num1:123);

八、方法递归

自己调用自己 多用于递归查找磁盘文件

public int Sum(int n){
    if(n<=0){
        return 0;
    }
    return n + Sum(n-1);
} //1+2+3+..+n和

时间: 2024-10-26 06:24:56

1、C#基础:变量、运算符、分支、循环、枚举、数组、方法的相关文章

关键字,标识符,变量,运算符,程序流程控制,数组

关键字 所有字母都为小写 保留字 标识符 java中的名称命名规范 包名:多单词组成时所有字母都小写:xxxyyyzzz 类名,接口名:多单词组成时,所有的首字母大写:XxxYyyZzz 变量名,方法名:多单词组成时,前一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz 常量名:所有字母都大写,多单词时每个单词用下划线连接:XXX_YYY_ZZZ 变量 先声明后使用 数据类型  变量名 =初始化值 变量的分类 基本数据类型 引用数据类型 变量之间的运算 自动类型转换 :容量

JavaScript基础——变量-运算符-流程控制语句

JavaScript组成 一个完整的 JavaScript 实现是由以下 3 个不同部分组成的: ECMAScript:描述了该语言的语法和基本对象: 文档对象模型(Document Object Model,简称DOM)):描述处理网页内容的方法和接口: 浏览器对象模型(Browser Object Model,简称BOM)):描述与浏览器进行交互的方法和接口. 变量 变量类型:object string function boolean undefined null number JavaS

Javascript 基础—变量 &amp;运算符

经过找工作笔试的洗礼,感觉自己js语法方面掌握的不是很系统,今天来梳理下——变量以及运算符. 基础篇 和C语言的不同点:是一种弱类型语言,申明变量时不需要指定类型:变量名的命名方法也有不同:简单类型种类也有不同:类型可以相互转化 1.命名 是以字母,_,$开头的,由数字,字母,下划线 $组成的,不包括关键子,区分大小写的串称为标识符(加入了美元符号,不能以数字开头啦). 2. 申明 形式:var  keyname; 可以多个一起申明,可以申明时初始化. eg: var obj; var arr=

【基础】运算符,堆栈,数组

一.运算符:优先级,结合性 一句话总结:点号自反非,算关逻赋移. 二.java关键字 instanceof 实例 volatile 易失 super 父类,超类 transient 短暂 synchronized 线程,同步 strictfp 严格,精准 package 包 throws 声明一个异常可能被抛出 native 本地 throw 抛出一个异常对象 try 捕获异常 catch 处理异常  finally 有没有异常都执行 switch 开关 case 返回开关里的结果 this 本

java的基础语法,变量,运算符,键盘录入

基础语法:关键字:被java语言赋予特定含义的单词class,public,static,void,package....goto和const作为保留字使用,目前不使用!标识符:就是给类/接口/方法/变量起名字!(见名知意)书写代码上,一定符合这个规则!包:不管是多级包还是单级包,字母全部小写,中间可以点隔开类/接口:单个单词:首字母大写多个单词:每个单词首字母大写方法/变量单个单词:字母全部小写多个单词:第一个单词字母全部小写,从第二个单词开始每个单词首字母大写常量:单个单词:字母大写多个单词

javascript基础语法-运算符

二 javascript02基础语法-运算符 (一)算术运算符:加(+). 减(-). 乘(*) .除(/) .余数(% ) * 加.减.乘.除.余数和数学中的运算方法一样 例如:9/2=4.5,4*5=20,9%2=1 * -除了可以表示减号还可以表示负号 例如:x=-y * +除了可以表示加法运算还可以用于字符串的连接 例如:"abc"+"def"="abcdef" PS:通过强制类型转换,加号还可以连接不同类型的变量,通过转换为数字或字符串

JavaScript之基础-6 JavaScript 分支结构 (if、if-else、else if、switch-case)

一.流程控制概述 程序的流程控制 - 程序 = 数据 + 算法 - 任何复杂的程序算法都可以通过"顺序","分支","循环"三种基本的程序逻辑组合实现 分支结构的概述 - 程序可以在运行过程中,在不同的情形下有选择的执行某些语句 二.if 语句 if 语句的执行逻辑 if 语句流程图 - if判定中默认必需一个boolean值 - 若出现的值不是boolean类型,则会自动转换 if 语句块不要省略"{}" 三.if-else

Java基本知识(运算符/选择结构语句/循环结构语句/方法/标识符)

Java基本知识(运算符/选择结构语句/循环结构语句/方法/标识符)一.Java标识符给类.接口.方法等命名的字符序列.1.标识符组成(1)英文字母大小写:(2)数字(不能以数字开头):(3)$和_.2.命名规则常量:每个单次字母均大写,若由多个单词组成,则每个单词间用下划线隔开.变量.方法:第一个单词全部小写,若由多个单词组成,则第一个单词全部小写,从第二个单词开始,每个单词首字母大写其他单词首字母小写.包:所有字母都小写,多级包采用域名反写,每级用"."隔开.类.接口:每个单词首字

java基础2_运算符,选择语句

算数运算符 +    相加  字符串的连接  正数 -    相减  负数 *    相乘 /    相除    10 / 3 ==> 3  两个操作数中精度最高的是int 结果也是int %    取模(求余) ++ 自增 -- 自减 ++ 和 -- 只能够用在变量上面,不能够用在常量 a = i++:先将i的值赋给a,再自增1      a = ++i;先自增1,再将i的值赋值给a 特殊:1/0        报异常(运行报错) 1/0.0      infinity(无限大)在java中0

.NET基础 一步步 一幕幕[循环、逻辑语句块]

循环.逻辑语句块   好久不写博客了,断更了好几天了,从上周五到今天,从北京到上海,跨越了1213.0公里,从一个熟悉的城市到陌生的城市,还好本人适应力比较好,还有感谢小伙伴的接风咯,一切都不是事,好了,进入正题: 本篇还是.NET 基础部分咯,主要简述循环,判断: 循环: for循环 语法: for(表达式1;表达式2;表达式3) { 循环体; } 表达式1一般为声明循环变量,记录循环的次数(int i=0;) 表达式2一般为循环条件(i<10) 表达式3一般为改变循环条件的代码,使循环条件终