转自:海盗船长

链接:http://www.cnblogs.com/baidawei/p/4701504.html#3241882

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和

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

  1. JS 01 变量_数据类型_分支循环_数组

    点击直通车↓↓↓ 数据类型及数据类型的手动转换 数组 一.概念 JavaScript(JS)是一种基于对象和事件驱动.且可以与HTML标记语言混合使用的脚本语言,其编写的程序可以直接在浏览器中解释执 ...

  2. java 基础 03 运算符 分支结构 循环结构

    今天内容: (1)运算符 (2)分支结构 (3)循环结构 1运算符 1.1赋值运算符 (1)简单赋值 = 表示赋值运算符,用于将=右边的数据赋值给=左边的变量来覆盖原来的数值. 笔试题: ia == ...

  3. 1shell基础,变量,运算符

    1shell基础语法 是一个命令解释器,在操作系统的最外层,负责直接与用户进行对话. 我们输入的命令,计算机时不识别的,这时就需要一种程序来帮助我们进行翻译,变成计算机能识别的二进制程序,同时把计算机 ...

  4. python基础-变量运算符(3)

    一.注释 注释就是对代码的解释和说明.目的是为了让别人和自己很容易看懂.为了让别人一看就知道这段代码是做什么用的.正确的程序注释一般包括序言性注释和功能性注释.序言性注释的主要内容包括模块的接口.数据 ...

  5. python基础(2)-运算符&while循环

    算术运算符 a=5; b=2; print(a+b);#result:7 desc:加 print(a-b);#result:3 desc:减 print(a*b);#result:10 desc:乘 ...

  6. 【Python基础】之for循环、数组字典

    一. for循环实例 1.循环字符串 Python Shell: for i in "hello": print(i) h e l l o 2.循环数组Python Shell: ...

  7. [Day7]循环、数组方法、排序查找

    1. ASCII(American Standard Code for Information Interchange) (1)数字0-9对应ASCII编码十进制为48-57, 字母a-z对应ASCI ...

  8. JS基础入门篇(十)— 数组方法

    1.join 作用: 将数组通过指定字符拼接成字符串.语法: string arr.join([separator = ',']);参数: separator可选,如果省略的话,默认为一个逗号.如果 ...

  9. Java基础(三):修饰符、运算符、循环结构和分支结构

    一.Java修饰符: Java语言提供了很多修饰符,主要分为以下两类:访问修饰符和非访问修饰符.修饰符用来定义类.方法或者变量,通常放在语句的最前端. 1.访问控制修饰符: Java中,可以使用访问控 ...

  10. java基础二 分支循环

    分支循环:    if...    if...else...    if...else if...    if...else if...else...    switch...case...defau ...

随机推荐

  1. MarkDown常用语法记录

    目录 1. 斜体和粗体 2. 分级标题 3. 超链接 3.1 行内式(推荐) 3.2 行外式 3.3 自动链接 4. 锚点 5. 列表 5.1无序列表 5.2有序列表 6. 引用 7. 插入图像 8. ...

  2. Nginx中rewrite实现二级域名、三级域名、泛域名、路径的重写

    最常见的: 静态地址重定向到带参数的动态地址 rewrite "^(.*)/service/(.*)\.html$" $1/service.php?sid=$2 permanent ...

  3. SQL Server Reporting Service(SSRS) 第三篇 SSRS Matrix用法

    以前不是太清楚SSRS的功能,自从最近有了了解之后,发现它的功能的确很强大.对于Matrix,刚开始我竟不知道它到底有什么用,现将通过一个例子中去理解Matrix,以及和分组Group结合使用的便利性 ...

  4. SQL函数之---DECODE函数

    Decode函数是oracle/SQL提供的特有函数计算方式,语法:DECODE(value,if1,then1,if2,then2,if3,then3,...else),通常我们在写语句的时候可能会 ...

  5. iBATIS代码生成分析

    1.分析目录结构"tools"(或者说模板) 2.首先分析ibatorConfig.xml文件 <?xml version="1.0" encoding= ...

  6. nexus离线安装索引及一些问题

    安装私服~~~ 整体流程: 服务器安装私服 配置私服(主要是安装索引) 本地maven配置指向私服 安装私服 win & linux 网上教程很多,不在阐述: 配置私服(及安装index) 1 ...

  7. mybatis高级(2)_数据库中的列和实体类不匹配时的两种解决方法_模糊查询_智能标签

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...

  8. Java循环删除集合多个元素的正确打开方式

    首先说下不正确的打开方式: 第一:使用for循环删除集合的元素,示例代码如下 ArrayList<String> list = new ArrayList<String>(Ar ...

  9. 6、HTML5表单提交和PHP环境搭建

    ---恢复内容开始--- 1.块元素 块元素在显示的时候,通常会以新行开始 如:<h1> <p> <ul> <!-- 块—>注释 <p>he ...

  10. 成为一名优秀的Web前端开发者

    本文记录了两位工程师为web开发者们所提出的多条建议,其中一位推荐了多种实用的工具与技术,而另一位则对于如何克服浏览器开发时所面临的挑战提出了诸多建议. Rebecca Murphey是来自于Baza ...