C#从入门到精通(一)

C#从入门到精通(一)

略有基础,挑有意思的写。

1、.Net平台

(1).Net FrameWork框架是.Net平台中不可缺少的一部分,他提供了一个稳定的运行环境来保证我们基于.Net平台开发的各种应用能够正常运作。把.Net平台比作一个厨房的话,那么.Net FrameWork框架就是厨房当中的各种原材料、煮菜的工具等。
(2).Net FrameWork框架包括了:①CLR(公共语言运行时);②.Net类库。

2、.Net都能做什么

(1)桌面应用程序 Winform(.net开发的桌面应用程序叫Winform应用程序);
(2)Internet应用程序 ASP.NET(.net开发的Internet应用程序叫 ASP.NET应用程序),如:CSDN、京东、携程、招商银行等;
(3)手机开发 wp8( .net可以做手机开发,Wp8);
(4)unity3D游戏开发或者虚拟现实。

3、.Net两种交互模式

(1)C/S:客户机(Client)/服务器模式(Server),如:QQ。(客户端需要安装专用的客户端软件。)
(2)B/S:浏览器(Browser)/服务器模式(Server)。(客户端上只要安装一个浏览器)

4、用vs进行开发

(1)解决方案、项目及类的关系:解决方案包含着项目,项目有包含着类(.cs)。
(2).sln文件:是解决方案文件,里面包含着整个解决方案的信息,可以双击运行。
(3).csproj:项目文件,里面版喊着这个文件的信息,可以双击运行。

5、vs常用的快捷键

在这里插入图片描述

6、变量

(1)变量的作用:用来在计算机中存储数据。

int number;//开辟内存空间
number = 100;//把100存储到这块空间

(2)数据类型:
①整数类型:int 只能存储整数,不能存储小数。
②小数类型:double 既能存储整数,也能存储小数,小数点后面的位数15~16位 。
③金钱类型:decimal:用来村粗金钱,值后面需要加上一个m。
④字符串类型:string,用来存储多个文本,也可以存储空,字符串类型的值需要被双引号引来这个双引号必须是英文半角状态下的双引号。
⑤字符类型:char,用来存储单个字符,最多、最少只能有一个字符,不能存储空。字符类型的值需要用 单引号因起来。英文半角状态下的单引号。

(3)变量的使用规则:
如果你要使用变量的话,要先声明再赋值再使用。

(4)命名规则:
①必须以“字母”或符号开头.——不要以数字开头;
②后面可以跟任意“字母”、数字、下划线;
③变量命名不能跟关键字同名;
④同一个变量名不可以重复的定义。
⑤给变量命名时:要求变量首单词的首字母要小写,其余每个单词的首字母要大写。
⑥给方法或者类命名时:首字母要大写,余每个单词的首字母要大写。

7、运算符

(1)占位符
使用方法:先挖个坑,再填个坑。
使用占位符需要注意的地方:你挖了几个坑,就应该填几个坑,如果你多填了,没效果。
如果你少填了,异常:语法上并没有任何错误,只不过在程序运行的期间,由于某些原因出现了问题,使程序不能再正常的运行。
(2)转义符
转义符指的是一个‘\’+一个特殊的字符,组成了一个具有特殊意义的字符。

\n:表示换行
\":表示一个英文半角的双引号
 Console.WriteLine("我想在这句话中输出一个\"\"个东西");
\t:表示一个tab键的空格
\b:表示一个退格键,放到字特串的两边没有效果
\r\n:windows操作系统不认识\n,只认识\r\n\:表示一个\
@符号
1、取消\在字符串中的转义作用
2、将字符串按照原格式输出
string str = "看看能不能成功";
System.IO.File.WriteAllText(@"C:\Users\AutoGO\Desktop\111.txt",str);
Console.WriteLine("写入成功!");
Console.ReadKey();

(3)算术运算符
①(+、-、*、\、%)
②(++、–)
2、算数运算符
++:分为前++和后++,不管是前+还是后+,最终的结果都是给这个变量加一:I区别表现表达式当中,如果是前++,则先给这个变量自身加一,然后带着这个加一后的值去参与运算,如果是后++,则先拿原值参与运算,运算完成后,再讲这个变量自身加一
–:同上。

int result = 10;
int result_ = 10;
int result1 = 10 + result++;
int result2 = 10 + ++result_;
Console.WriteLine(result1);
Console.WriteLine(result2);
Console.ReadKey();

对于向++或者–这样只需耍一个操作数就能完成的运算,我们称之为一元运算符。
“+、-、*、/“”对于这些需要两个或以上才能完成运算的操作符,我们称之为二元运算符一元运算符的优先级婴高于而元运算符。
如果在一个表达式当中,既有一元运算符,又有二元运算符,我们首先计算一元运算符。

int number = 10int result = 10 + ++number;

(4)类型转换

  1. 隐式类型转换:
    参与运算(算术运算和赋值运算)的操作数和结果类型必须一致.当不一致时,满足下面条件时,系统自动完成类型转换(两种类型兼容):
    例如:int和 double 兼容(都是数字类型)
    目标类型大于源类型,例如:double>int (小的转成大的)。
  2. 显示类型转换:
    1、两种类型相兼容int–double ;
    2、大的转成小的double----int ;
    语法:(待转换的类型)要转换的值;
double d = 303.6;
int n = (int)d;
Console.WriteLine(n);
Console.ReadKey();
  1. Convert类型转换
    类型如果相兼容的两个变量,可以使用自动类型转换或者强制类型转换,但是,如果两个类型的变量不兼容,比如 string与int或者string 与double, 这个时候我们可以使用一个叫Convert的转换工厂进行转换。
string str = "123";
double d = Convert.ToDouble(str);
int n = Convert.ToInt32(str);
Console.WriteLine(n);
Console.WriteLine(d);
Console.ReadKey();

(5)逻辑运算符(&&、||、!)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Console.WriteLine("请输入你的语文成绩:");
int chinese = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入你的数学成绩:");
int math = Convert.ToInt32(Console.ReadLine());
bool b = chinese > 90 && math > 90;
Console.WriteLine(b);
Console.ReadKey();

(6)符合赋值运算符(+=、-=、*=、/=、%=)

8.结构在这里插入图片描述

(1)if、if-else、if-else-if
(2)switch-case
在这里插入图片描述

(3)while循环
在这里插入图片描述
(4)break用法
(5)do-while循环
(6)Continues:回到循环的开头
(7)for循环
在这里插入图片描述

            //找出100内所有的素数
            //for(int i = 2;i <=100;i++)
            //{
            //    bool a = true;
            //    for(int j = 2;j<i;j++)
            //    {
            //        if(i%j==0)
            //        {
            //            a = false;
            //            break;
            //        }
            //    }
            //    if(a == true)
            //    {
            //        Console.WriteLine(i);
            //    }
            //}
            //Console.ReadKey();
//水仙花数
            int n1, n2, n3;
            for (int i = 100; i <=999 ; i++)
            {
                n1 = i / 100;
                n2 = i % 100 / 10;
                n3 = i % 10;
                if(n1*n1*n1 + n2*n2*n2 +n3*n3*n3 == i)
                {
                    Console.WriteLine(i);
                }
            }
            Console.ReadKey();

9.异常捕获

(1)我们在程序中经常会出现各种各样的异常,你如果想要你的程序变得坚强一些,在你的代码中就应该经常性的使用try-catch来进行异常捕获。

try
{
可能会出现异常的代码;
}
catch
{
出现异常后要执行的代码;
}

执行过程:如果try中的代码没有出现异常,那么catch中的代码不会执行。
如果try中的代码出现了异常,那怕这行出现异常的代码后面还有一百行都不会执行了,而是直接跳到catch中执行代码。

int number = 0;
Console.WriteLine("请输入一个数字:");
try
{
	number = Convert.ToInt32 (Console.ReadLine());
	Console.WriteLine(number * 2);
}
catch
{
	Console.WriteLine("输入的内容不是数字!");
}
Console.ReadKey();

请用户输年份,再输入月份,输出该月的天数。(结合润年判断来做)
           int year = 1;
           int month = 0;
           Console.WriteLine("请输入年份:");
           try
           {
               year = Convert.ToInt32(Console.ReadLine());
               Console.WriteLine("请输入月份:");
               try
               {
                   month = Convert.ToInt32(Console.ReadLine());
                   switch (month)
                   {
                       case 1:
                           Console.WriteLine("{0}月有31天", month);
                           break;
                       case 2:
                           if ((year % 100 == 0) || (year % 100 != 0 && year % 4 == 0))
                           {
                               Console.WriteLine("{0}月有29天", month);
                           }
                           else
                           {
                               Console.WriteLine("{0}月有28天", month);
                           }
                           break;
                       case 3:
                           Console.WriteLine("{0}月有31天", month);
                           break;
                       case 4:
                           Console.WriteLine("{0}月有30天", month);
                           break;
                       case 5:
                           Console.WriteLine("{0}月有31天", month);
                           break;
                       case 6:
                           Console.WriteLine("{0}月有30天", month);
                           break;
                       case 7:
                           Console.WriteLine("{0}月有31天", month);
                           break;
                       case 8:
                           Console.WriteLine("{0}月有31天", month);
                           break;
                       case 9:
                           Console.WriteLine("{0}月有30天", month);
                           break;
                       case 10:
                           Console.WriteLine("{0}月有31天", month);
                           break;
                       case 11:
                           Console.WriteLine("{0}月有30天", month);
                           break;
                       case 12:
                           Console.WriteLine("{0}月有31天", month);
                           break;
                       default:
                           Console.WriteLine("请输入有效的月份!");
                           break;
                   }
               }
               catch
               {
                   Console.WriteLine("请输入有效的月份!");
               }
           }
           catch
           {
               Console.WriteLine("请输入有效的年份!");
           }
   
           Console.ReadKey();

(2)变量的作用域
变量的作用域就是你能够使用到这个变量的范围。

10.类型转换和方法介绍

(1)二者效果一样

int number = Convert.ToInt32("123");
int number1 = int.Parse("123");

(2)方法:区分参数和返回值。
在这里插入图片描述

11.程序调试

调试方法:
①F11逐语句调试(单步调试)
②F10逐过程调试
③断点调试

12.三元表达式

在这里插入图片描述

int max = n1 > n2 ? n1 : n2;

13.随机数

            Random r = new Random();//创建能够产生随机数的对象

            while (true)
            {
                int number = r.Next(1, 11);//调用方法产生随机数
                Console.WriteLine(number);
                Console.ReadKey();
            }

14.常量

            int number = 10;//变量可以重新赋
            number = 20;

            const int numberTwo = 50;//常量 不能够被重新赋值

15.枚举

(1)命名方式
在这里插入图片描述
(2)枚举注意事项
①不能在main函数里面声明;
②将枚举声明到命名空间的下面,类的外面,标识这个命名空间下,所有的类都可以使用这个枚举;

(3)将string类型转换成为int类型的主要方法

Convert.ToInet32();
int.parse();
int.TryParse();

(4)字符串转换成枚举类型

//调用Parse()方法的目的就是为了让它帮助我们将一个字符串转换成为对应的枚举类型
Enum.parse();

我们可以将一个枚举类型的变量跟int类型和string类型互相转换。
枚举类型默认是跟int类型相互兼容的,所以可以通过强制类型转换的语法互相转换当转换一个枚举中没有的值的时候,不会抛异常,而是直接将数字显示出来。
枚举同样也可以跟string类型互相转换,如果将枚举类型转换成string类型,则直接调用rostring ().如果将字符串转换成枚举类型则需要下面这样一行代码:
(要转换的枚举类型)Enum. Parse(typeof(要转换的枚举类型), "要转换的字符如果转换的字符串是数字,则就算枚举中没有,也会不会抛异常。
如果转换的字符串是文本,如果枚举中没有,则会抛出异常。

16.结构

结构:可以帮助我们一次性声明多个不同类型的变量
在这里插入图片描述

17.数组

(1)数组:一次性存储多个相同类型的变量

//数组类型[] 数组名 = new 数组类型[数组长度];
int[] nums = new int[10];

在这里插入图片描述
[1]…[10]称为索引或者下标
右边000的值称为值
数组的长度一旦固定了就不能改变。

//声明数组的两种方式
int[] nums = new int[10];
int[] numsTwo = {1,2,3,4,5,6};  

排序的方法

//对数组进行升序
Array.Sort(nums);
//对数组进行反转
Array.Reverse(nums);

冒泡排序

            //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;
            //            temp = nums[j];
            //            nums[j] = nums[j + 1];
            //            nums[j + 1] = temp;
            //        }
            //    }
            //}

            //for (int i = 0; i < nums.Length; i++)
            //{
            //    Console.WriteLine(nums[i]);
            //}

交换

            int[] nums = { 1, 4, 3, 9, 6, 8 };
            for (int i = 0; i < nums.Length/2; i++)
            {
                int temp;
                temp = nums[i];
                nums[i] = nums[nums.Length - 1-i];
                nums[nums.Length - 1 - i] = temp;
            }
            for (int i = 0; i < nums.Length; i++)
            {
                Console.WriteLine(nums[i]);
            }

18.方法

(1)方法
函数就是将一维代码进行重用的一种机制。函数的语法:

[public] static 返回值类型方法名([参数列表])]
{
方法体;
}

public:访问修饰符,公开的,公共的,哪都可以访问。
static:静态的。
返回值类型:如果不需要写返回值,写void。
方法名: Pascal每个单词的首字母都大些。其余字母小写。
参数列表:完成这个方法所必须要提供给这个方法的条件。如果没有参数,小括号也不能省略。
方法写好后,如果想被执行,必须在main()函数当中执行。
(2)return的作用
①在方法中返回所需要的值;
②立即结束本次方法。
(3)在某些情况下,类名是可以省略的,如果你写的方法跟main()函数同在一个类中,这个时候,类就可以省略。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红狐狸的北北记

红狐狸背着行囊上路,感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值