C# CookBook 基本语法

笔记资料:C#开发轻松入门 慕课网 https://www.imooc.com/learn/422

.NET开发简介

Microsoft .NET

.NET 是微软公司推出的软件开发和运行平台,允许应用通过internet进行通讯和共享数据。 .NET平台与编程与无关,可以用任意的你喜欢的语言进行开发,其中C#语言是.NET平台上比较好的语言。

.NET的核心框架是.NET Framework,它赋予了.NET丰富强大的功能。


我的C#开发工具

屏幕快照 2018-03-29 上午10.42.43.png

参考资料

MSDN


Visual Studio编译器 按 快捷键F1 显示

编译器调试"Hello World!"

请查看简述 C# VScode MacOS https://www.jianshu.com/p/6bee73e9756b
App应用

Hello World

整体编码风格与C++一样

using System; //倒入微软提供的命名空间,以便于使用其中的类

namespace MyFirstApp //命名空间
{
    class MainClass //class类 MainClass类的名字
    {
        public static void Main(string[] args) // Main方法,程序运行的起点,入口。
        {
            Console.WriteLine("Hello World!"); //;分号代表命令的结束。
        }
    }
}

类是C#程序的最小单元,C#程序是由一个一个的类组成的。
命名空间的作用是用来组织和管理类。
一个命名空间下可能有多个类。

C#基本语法

2.1 注释

与C++类似

using System;
using System.Collections.Generic;
using System.Text;

namespace Test
{
    /// 文档注释:写在类、方法或属性的前面,不注释单个变量 (人为规定)
    class Program
    {
        static void Main(string[] args)
        {
            /*
             *多行注释:这是一段提示信息
             */
            Console.WriteLine("积跬步,至千里");//单行注释:打印并换行
        }
    }
}

2.2 变量

const 表示省常量(与C++类似)
            const string CITY = "布宜诺斯艾利斯";//常量,城市
            const string NAME =  "列奥波尔多·福图纳托·加尔铁里·卡斯特利";//常量,姓名

与JAVA类似,用➕拼接字符串
            Console.WriteLine(NAME+"出生在"+CITY+"的一个工人家庭");//使用常量

变量声明与赋值
            string hobby;//声明变量保存爱好

字符串类型 string ,存储用“”(双引号)括起来的一串字符
            hobby = "剑道";//给爱好变量赋值

字符类型 char ,存储用 '' (单引号)括起来的一个字符,
char sex='男';//存储性别

哈哈哈,这个变量输出的格式还是比较独特的,{0},{1}...
            string name = "曹少钦";//姓名,string类型
            char sex = '男';//性别,char类型
            int age = 19;//年龄,int类型
            double height = 1.72;//身高,double类型
            Console.WriteLine("我叫{0},是{1}生,今年{2}岁,身高{3}米。",name,sex,age,height);


低精度类型会自动转换为较高精度的类型。

较高精度的类型转低精度类型:强制类型转换
int i=(int)3.0;
double 型强制转换为int型将失去小数部分,比如(int)2.8,我们得到的将是2。

变量命名规则:
①标识符只能由英文字母、数字和下划线组成,不能包含空格和其他字符。
②变量名不能用数字开头。
③不能用关键字当变量名。

int _X;这样命名是正确的

Console.WriteLine(age++);作用等同于下面两句:

Console.WriteLine(age);//先打印
age=age+1;//后自加


Console.WriteLine(++age);作用等同于下面两句:

age=age+1;//先自加
Console.WriteLine(age);//后打印

布尔类型( bool ) 真与假用关键字 true 和 false

逻辑非( ! )
逻辑与( && ) 同真则真
逻辑或( || ) 一真则真

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

加减乘除的优先性比 > < 高

x = 1
a = ++x * x
    // ++x 后x值为2
a = 4

3 条件结构 (与C++相似)

            if (age > 18)//条件,bool类型
            {//分支1
                Console.WriteLine( "你是成年人");
            }
            else
            {//分支2
                Console.WriteLine("你是小盆友");
            }

错误:; expected 语句中缺少;分号

嵌套结构

            if (job == "局长")
            {
                Console.WriteLine("发双黄月饼");
            }
            else if (job == "处长")
            {
                Console.WriteLine("发蛋黄月饼");
            }
            else if (job == "科长")//请输入
            {
                Console.WriteLine("发枣泥月饼");
            }
            else//请输入
            {
                Console.WriteLine("发五仁月饼");
            }

if与else配对

①每一个 else 与前面离它最近的 if 配对。
②多个 else 都与同一个 if 相近时,最内层的 else 优先配对
规范代码:编写条件结构时,尽可能加上 {} 可以省掉不必要的错误和麻烦。

简单的多重判断demo:

using System;
using System.Collections.Generic;
using System.Text;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            double money = 60000.00;//存款金额
            //请在这里补充多重条件判断
            if (money >= 100000){
                Console.WriteLine("送一台微波炉");
            }
            else if (money >= 50000 && money < 100000){
                Console.WriteLine("送一套茶具");
            }
            else if (money >= 10000 && money < 50000){
                Console.WriteLine("送一袋大米");
            }
            else{
                Console.WriteLine("没有礼品");
            }
        }
    }
}

三元运算符

与C++中一样

条件表达式 ? 分支1 : 分支2

运算逻辑是:当条件表达式为 true 时,执行分支1;当条件表达式为 false 时,执行分支2。


小例子:
        static void Main(string[] args)
        {
            int year = 2015;//年份
            string text = year%4 == 0 ? "闰年":"平年";//请填写代码
            Console.WriteLine("今年是{0}",text);
        }

switch结构

与c++中如出一辙,记得当时用控制台学XX管理系统的时候,界面都是同switch写的

        static void Main(string[] args)
        {
            string job = "处长";//职务
            switch (job)
            {
                case "局长":
                    Console.Write("发双黄月饼");
                    break;
                case "处长": 
                    Console.Write("发蛋黄月饼"); 
                    break;
                case "科长": 
                    Console.Write("发枣泥月饼");
                    break;
                default : 
                    Console.Write("发五仁月饼"); 
                    break;
            }
        }

少了break的时候会把下一个条件执行的语言也输出。知道break跳出switch

for 循环过程解释

for 循环运行时,首先进行变量声明和赋值;接下来判断循环条件,若条件为 true ,则执行循环体一次,若条件为 false ,则结束循环;执行循环体后,进行变量自加。然后会进入下一次循环。

do ... while 先执行循环体 再判断, while 是判断在执行循环体

总结:

continue 中止一次循环

break 跳出循环

代码规范,还是比较重要的。

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            //请完善代码
            
            for(int x=1;x<=7;x++)
            {  
                for(int y=1;y<=7;y++)
                {
                    if(x==y||x+y==8)
                        Console.Write("o");
                    else 
                        Console.Write(".");
                }
                Console.WriteLine();
            }
        }
    }
}

结果:
o.....o
.o...o.
..o.o..
...o...
..o.o..
.o...o.
o.....o

数组

数据类型[ ] 数组名 = new 数据类型[长度];
数组.Length 属性会返回数组的长度(即数组元素的个数)

foreach

C#中还存在一些类似于数组的数据组织方式,它们中有一些是没有元素索引的,对于这些元素,只能通过 foreach 遍历。


数组声明

二维数组

using System;

namespace MyFirstApp
{
    class MainClass
    {
        public static void Main(string[] args) //Main方法,程序运行的起点,入口。
        {
            string[] name = { "吴️松", "钱东宇", "伏晨", "陈陆", "周蕊", "林日鹏", "何昆", "关欣" };
            int[] score = { 89, 90, 98, 60, 91, 93, 85 };

            int index = 0;
            int max = 0;
            for (int i = 0; i < score.Length; i++)
            {
                if (score[i] > max)
                {
                    index = i;
                    max = score[i];
                }
            }

            Console.WriteLine("分数最高的是{0},分数是{1}", name[index], score[index]);

        }
    }
}

假如不给index赋值为0的化,就没办法把局部变量的值掉出来。

在控制台接收、输入

using System;

namespace MyFirstApp
{
    class MainClass
    {
        public static void Main(string[] args) //Main方法,程序运行的起点,入口。
        {

            string name;
            Console.Write("输入:");
            name = Console.ReadLine(); //接收用户输入的一个字符串
            Console.WriteLine("输入字符串{0}", name);

            int[] score = new int[3];
            int sum = 0;
            for (int i=0; i < score.Length; i++){
                score[i] = int.Parse(Console.ReadLine()); //输入数字要类型转换

                sum += score[i];
            }
            int avg = sum / score.Length;
            Console.WriteLine(sum);
            Console.WriteLine(avg);
        }
    }
}

在C#中进行断点跟踪及调试


using System;

namespace MyFirstApp
{
    class MainClass
    {
        public static void Main(string[] args) //Main方法,程序运行的起点,入口。
        {
            string[] name = { "景珍", "林惠洋", "成蓉", "洪南昌", "龙玉民", "单江开", "田武山", "王三明" };
            int[] score = {90, 65, 88, 70, 46, 81, 100, 68};

            int sum = 0;
            for (int i = 0; i < score.Length; i++){
                sum += score[i];
            }
            int avg = sum / score.Length;

            Console.WriteLine("平均分是{0},高于平均分的有:",avg);
            for (int i = 0; i < score.Length; i++)
            {
                if (score[i] > avg)
                {
                    Console.Write("{0} ", name[i]);
                }
            }

        }
    }
}

其实挺惭愧的,从开始写到现在发布出去已经有两三周的时间了,说好的要和我们家宝宝一起学习的,自己一直在拖后腿。

还有今天的事情,感觉自己当男朋友好不称职呀,老是惹她生气,虽然说她脾气也不好但是她却一直很包容着我,我很感激有这样可爱的女朋友。我好像很喜欢说别人可爱,但是我确信一点我女朋友的可爱可完全和其他人不一样哟!
18.04.21

好久没有写过代码了,感觉手生了好多,以后要多写。 18.04.23.

你可能感兴趣的:(C# CookBook 基本语法)