C# - 基础语法


C# - 基础语法 - C#编程上手指南

C#编程上手指南

Console.Read();

  • Console.Read()方法用于从标准输入流中读取下一个字符。
  • 为了不让执行main函数后的方法时退出。
namespace helloworld
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("hello world2");
            Console.Read();
        }
    }
}

System.Console

  • IO操作工具集(i代表input,o代表output)。

Wirte & WirteLine

namespace helloworld
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //WriteLine()、自动换行
            Console.WriteLine("WriteLine()输出效果");
            Console.WriteLine("你");
             Console.WriteLine("好");
            Console.WriteLine("世界");

            Console.WriteLine("------------------------");

            //write()、不会自动换行、合并在一块
            Console.WriteLine("write()输出效果");
            Console.Write("你");
            Console.Write("好");
            Console.Write("世界");

            //Console.Read()方法用于从标准输入流中读取下一个字符。
            Console.Read();
        }
    }
}

Read(),ReadKey(),以及 ReadLine()

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace helloworld
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //输入A,输出65
            //数字
            //Console.Read()方法用于从标准输入流中读取下一个字符
            int a = Console.Read();
            Console.WriteLine(a);

            //字符串,读取一行
            //ReadLine:读取下一行字符,在窗口停留一下,直到用户按下回车键之后关闭命令窗口,一次读取一行字符:
            String b = Console.ReadLine();
            Console.WriteLine(b);

            //ReadKey():获取用户按下的下一个字符或者功能键,
            //这个函数是为了在控制台窗口停留一下,直到敲击键盘为止,就是用户按下任意键后就会退出命令窗口,一次读入一个字符;
            ConsoleKeyInfo c = Console.ReadKey();
            Console.WriteLine(c.Key);

            //console.clear() 方法用于清除控制台所有信息
            Console.Clear();

            Console.Read();
        }
    }
}

变量(Variable)与数据类型(Data Type)

变量(Variable)

  • 保存临时数据。
  • 可访问、可调用、可执行。

变量的基本定义

C#中的重要类型

namespace variable3
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int number1;
            number1 = 13;

            Console.WriteLine(number1);

            int number2, number3, number4;

            Console.Read();
        }
    }
}

数据类型(Data Type)

基本数据类型

  • C#有13种基本数据类型
  • 预先定义好的内建类型,可以直接使用
  • Primitive Types

byte 与 sbyte

short 与 ushort

int 与 uint

long 与 ulong

小数

bool 与 char

内建类型,但不属于基本类型

  • 中文得用string类型,string可以通过把多个Unicode字符拼接起来,显示中文、甚至是emoji。
  • object对象类型
  • dynamic动态类型

字符串方法与操作

namespace @string
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string hello = "hello world";
            String hello2 = "hello world";

            //字符串拼接
            Console.WriteLine(hello + "li");
            string message = hello + "li";

            //字符串格式化处理
            string name = "li";
            int age = 18;
            Console.WriteLine("my name is {0}, i am {1} years old", name, age);

            string message2 = "my name is {0}, i am {1} years old";
            string output = string.Format(message2, name, age);
            Console.WriteLine(output);

            //字符串内嵌
            string message3 = $"my name is {name}, i am {age} years old";
            Console.WriteLine(message3);

            //原意字符串
            string message4 = @"my name is {name},\n  
i am {age} years old.\n 
i am a devloper";
            Console.WriteLine(message4);

            //转大写字符
            string h = hello.ToUpper();
            Console.WriteLine(h);

            Console.Read();
        }
    }
}

决策与分支

代码决策 decisions

if

  • else if 数量是没有上限。

switch

  • switch
  • case
  • break ( return )

?∶操作符(三元操作)

客户管理系统(控制台应用程序)

实例(if、else、switch)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CMS
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("===============客户管理系统==============");
            Console.WriteLine("请登录");

            string password;
            string username;

            Console.Write("用户名:");
            username = Console.ReadLine();

            if (username == "li")
            {
                Console.Write("密码:");
                password = Console.ReadLine();
                if (password == "1234")
                {
                    Console.WriteLine("==========成功登录===========");
                    Console.WriteLine("主菜单"); 
                    Console.WriteLine("1客户管理");
                    Console.WriteLine("2预约管理");
                    Console.WriteLine("3系统设置");
                    Console.WriteLine("4退出");

                    string selection = Console.ReadLine();
                    switch (selection) {
                        case "1":
                            Console.WriteLine("1客户管理");
                            break;
                        case "2":
                            Console.WriteLine("1预约管理");
                            break;
                        case "3":
                            Console.WriteLine("1系统设置");
                            break;
                        case "4":
                        default:
                            Console.WriteLine("退出");
                            break;
                    }
                }
                else {
                    Console.WriteLine("密码错误");
                }
            }
            else {
                Console.WriteLine("没有这个用户");
            }


        }
    }
}

程序循环

  • 节省程序员大量的开发精力
  • 轻易的重复某段代码或者某个功能模块
  • 可以处理大量数据

循环类型

  • for循环
  • while循环
  • do while循环

for循环

实例

namespace _05loop
{
    internal class Program
    {
        static void Main(string[] args)
        {
            for (int i = 0; i < 10; i++) {
                Console.WriteLine("hello loop");
            }

            Console.Read();
        }
    }
}

while循环

  • 当...的时候
  • 先进行条件检查,只有当条件满足的时候才进入循环。

实例

namespace _05loop
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //while循环
            int j = 0;
            while (j < 5) {
                Console.WriteLine("hello loop while");
                //如果没有++,循环不停止
                j++;
            }

            Console.ReadLine();
        }
    }
}

do while循环

  • while循环的亲戚。
  • 先循环、再检查。

实例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _05loop
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //do while循环
            int k = 0;
            do
            {
                Console.WriteLine("hello loop do while");
                //如果没有++,循环不停止
                k++;
            } while (k < 5);

            Console.ReadLine();
        }
    }
}

循环终止 break

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _05loop
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //for循环
            for (int i = 0; i < 10; i++) {
                Console.WriteLine("hello loop");

                if (i == 3) {
                    Console.WriteLine("循环终止");
                    break;
                }
            }

        }
    }
}

只跳过本次循环,continue

namespace _05loop
{
    internal class Program
    {
        static void Main(string[] args)
        {

            for (int i = 0; i < 10; i++)
            {
                if (i == 3)
                {
                    Console.WriteLine("循环终止");
                    
                    //只跳过本次循环,continue
                    continue;
                }
                Console.WriteLine("hello loop continue");
            }

            Console.ReadLine();
        }
    }
}

跳过所有偶数

namespace _05loop
{
    internal class Program
    {
        static void Main(string[] args)
        {

            for (int i = 0; i < 10; i++)
            {
                //跳过偶数 i%2 == 0
                if (i%2 == 0)
                {
                    Console.WriteLine("跳过偶数");
                    //break;

                    //只跳过本次循环,continue
                    continue;
                }
                Console.WriteLine("hello loop 跳过偶数");
            }

            Console.ReadLine();
        }
    }
}

客户管理系统(控制台应用程序)—— 循环

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CMS
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("===============客户管理系统==============");
            Console.WriteLine("请登录");

            bool isExit = false;

            do { 
            string password;
            string username;

            Console.Write("用户名:");
            username = Console.ReadLine();

            if (username != "li")
             {
                    Console.WriteLine("查无此人");
                    continue;
              }

                Console.Write("密码:");
                password = Console.ReadLine();
                if (password != "1234")
                {
                    Console.WriteLine("密码错误");
                    continue;
                }
            
                 while (!isExit) { 
                    Console.WriteLine("==========成功登录===========");
                    Console.WriteLine("主菜单"); 
                    Console.WriteLine("1客户管理");
                    Console.WriteLine("2预约管理");
                    Console.WriteLine("3系统设置");
                    Console.WriteLine("4退出");

                    string selection = Console.ReadLine();
                    switch (selection) {
                        case "1":
                            Console.WriteLine("1客户管理");
                            break;
                        case "2":
                            Console.WriteLine("2预约管理");
                            break;
                        case "3":
                            Console.WriteLine("3系统设置");
                            break;
                        case "4":
                            default:
                                Console.WriteLine("退出");
                                isExit = true;
                                break;
                    }
                }
           
            } while (!isExit);

            Console.Read();


        }
    }
}

方法

  • 花括号包起来的代码块
  • 可以调用
  • 可以执行
  • 在C#中,所有的指令都必须在方法中才能执行。

方法签名

访问修饰符

声明修饰符

实例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _07Method_signature
{

    internal class Program
    {
        //找最大数
        public static int MaxNum(int num1, int num2)
        {
            int result;
            if (num1 > num2)
            {
                result = num1;
            }
            else
            {
                result = num2;
            }
            return result;
        }
        static void Main(string[] args)
        {
            int output = MaxNum(1, 99);
            Console.WriteLine(output);
            Console.Read();
        }
    }
}

方法签名-总结

形参与实参

  • 形参,parameter,形式上的参数。
  • 实参,argument,真正调用方法过程中传入的具体数据。

形参

实参

判断形参与实参

  • 形参定义在方法中。
  • 实参定义在方法外部。

方法返回

  • return,方法的返回值,也就是方法的最终计算结果。
  • 如果方法不返回任何值,则返回类型为void。
  • 使用return则意味着方法彻底停止。
  • 特殊需要,你也可以使用return来提前结束代码。

方法表达式 =>

函数化用户登录过程 —— 客户管理系统(控制台应用程序)

namespace CMS
{
    internal class Program
    {
        static string CmdReader(string ins)
        {
            Console.WriteLine(ins);
            string cmd = Console.ReadLine();
            return cmd;
        }
        static void Main(string[] args)
        {
            Console.WriteLine("===============客户管理系统==============");
            Console.WriteLine("请登录");

            bool isExit = false;

            do { 
            string password;
            string username;

                /*Console.Write("用户名:");
                username = Console.ReadLine();*/

             username = CmdReader("用户名:");

            if (username != "li")
             {
                    Console.WriteLine("查无此人");
                    continue;
              }

                /*                Console.Write("密码:");
                                password = Console.ReadLine();*/

                password = CmdReader("密码:");
                if (password != "1234")
                {
                    Console.WriteLine("密码错误");
                    continue;
                }
            
                 while (!isExit) {
                    /*                    Console.WriteLine("==========成功登录===========");
                                        Console.WriteLine("主菜单"); 
                                        Console.WriteLine("1客户管理");
                                        Console.WriteLine("2预约管理");
                                        Console.WriteLine("3系统设置");
                                        Console.WriteLine("4退出");

                                        string selection = Console.ReadLine();*/

                    string selection = CmdReader("主菜单\n1客户管理\n2预约管理\n3系统设置\n4退出\n");

                    switch (selection) {
                        case "1":
                            Console.WriteLine("1客户管理");
                            break;
                        case "2":
                            Console.WriteLine("2预约管理");
                            break;
                        case "3":
                            Console.WriteLine("3系统设置");
                            break;
                        case "4":
                            default:
                                Console.WriteLine("退出");
                                isExit = true;
                                break;
                    }
                }
           
            } while (!isExit);

            Console.Read();


        }
    }
}

值传参、引用传参、输出传参

值传参

  • 参数传递的默认方式。
  • 为每个值参数创建一个新的存储位置,实际参数的值会复制给形参,实参和形参使用的是两个不同内存中的值。
  • 当形参的值发生改变时,不会影响实参的值,实参数据安全。

引用传参

namespace _09Pass_by_value
{
    internal class Program
    {
        //ref
        //引用传参
        static void swap(ref int x, ref int y) {
            int temp;
            temp = x;
            x= y;
            y= temp;
        }

        static void Main(string[] args)
        {
            int a = 1;
            int b = 2;

            //ref
            swap(ref a, ref b);

            Console.WriteLine("A" + a);
            Console.WriteLine("B" + b);

            Console.ReadLine();
        }
    }
}

输出传参

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _09Pass_by_value
{
    internal class Program
    {
        //输出传参
        static void getValue(out int x) {
            x = 6;
        }
        static void Main(string[] args)
        {
            int a = 1;
            int b = 2;

            getValue(out a);
            Console.WriteLine("第二个A" + a);

            Console.ReadLine();
        }
    }
}

声明:三二一的一的二|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - C# - 基础语法


三二一的一的二