C#学习 - 初识类型、变量、方法

构成C#语言的基本元素

关键字、操作符、标识符、文本都是标记(Token),编译器能够识别

关键字(Keyword)

C#有一般关键字(C# Keyword:任何时候都是关键字)和上下文关键字(Contextual Keywords:在某些语境中时是关键字)

操作符(Operator)

也成为运算符,某些关键字也是操作符

标识符(Identifier)

标识符就是名字,比如给变量取的名字
取名规范 :不能完全与关键字相同;可以使用下划线;不能以数字开头;可以用@作为前缀使用关键字作为标识符

给变量命名时最好要有意义:对类命名时要是名词或者名词复数;对类的成员命名时,属性要是名词或者名词复数,方法要是动词或动词短语...

当一个标识符中有多个单词时,首个单词小写,后续单词首字母大写(驼峰法);每个单词首字母大写(Pascal法)

变量名使用驼峰法;方法名、类名、名称空间等都是用Pascal法

标点符号

句末的";"、还有"{}"...

在程序中不参与运算

文本(字面值)

csharp 复制代码
int x = 1;//这里的1就是文本(字面值)

文本可以是整数、实数(浮点数)、字符、字符串、布尔(False & Ture)、空(NULL)

整数

整数有int(整型)、long(长整型)

csharp 复制代码
int a = 3;
long b = 3L;//后面带L代表这个数是长整型

整型是用32个bit位来表示数字;长整型是用64个bit位来表示数字

实数

实数有float(单精度浮点型)、double(双精度浮点型)

csharp 复制代码
float a = 1.2F;//F表示单精度浮点数
double b = 1.2D;//D表示双精度浮点数,D可以省略,带小数时,默认是double类型

单精度浮点型有32个bit位;双精度浮点型有64个bit位

字符

字符有char类型

csharp 复制代码
char a = 'A';//需要用单引号,同时单引号内部只能有一个字符

字符串

有string类型

csharp 复制代码
string a = "ABC";//需要用到双引号
string b = "";//双引号内可以是空
string c = "C";//双引号内也可以只有一个字符

布尔

有bool类型

csharp 复制代码
bool a = true;
bool b = false;

"true"和"false"就是布尔值的文本

空(NULL)

csharp 复制代码
string str = null;//代表变量str没有任何值

没用引用实例,还要去访问这个实例的方法时,运行程序会出现System.NullReferenceException错误,如:

csharp 复制代码
Form form = null;
form.ShowDialog();

注释与空白

注释:

csharp 复制代码
// - 行注释,这一行在此符号后面的全部注释掉
/**/ - 跨注释,两个*号之间的全部注释掉
注:行注释后紧接跨注释会导致跨注释失效;跨注释无法嵌套使用

空白:

写程序时使用空格、回车或者Tab使代码更清晰,某些情况下空白必须有

当空白留得不好时,VS2022可以用(Ctrl+K)+(Ctrl+D)进行格式化

初识类型(Type)

csharp 复制代码
var x = 1;//int x = 1;
//var关键字声明的变量在赋值后,csharp编译器会自动判断出赋的是什么类型的值
Console.WriteLine(x.GetType().Name);
//打印出来是int32,就是32个bit位的整型
var y = 1.0;//double y = 1.0D;
Console.WriteLine(y.GetType().Name);
//此时打印的是double

上段代码说明C#有不同的数据类型,数据类型不仅可以声明变量,还能声明函数

初识变量

变量就是存放数据的地方

csharp 复制代码
int x;//x就是变量,这就算声明完变量
x = 10;//将x赋值10,赋值要与x的类型相同
//比如整数型不能存放浮点型

初识方法

方法(函数)就是处理数据的逻辑

csharp 复制代码
using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Addtive m = new Addtive();
            //声明一个叫 m 的引用变量,创建一个Addtive的引用实例
            //可以用 m 来引用Addtive中的方法
            int n = m.Add(10, 20);
            //函数返回的是int,所以创建一个整型的数接收
            Console.WriteLine(n);
        }
    }
    class Addtive//创建一个类
    {
        public int Add(int a, int b)//括号内是函数的参数,需要声明
        //public指的是这个类外面也能访问这个方法
        //第一个int指的是函数Add加工完参数后返还的值的类型
        {
            int c = a + b;//加工参数的方法
            return c;//返还值
        }
    }
}

上段代码中的

csharp 复制代码
public int Add(int a, int b)
{
	int c = a + b;
	return c;
}

这些就是函数声明

csharp 复制代码
Addtive m = new Addtive();
int n = m.Add(10, 20);

上面两行就是函数调用

函数不一定需要返回值也不一定需要参数,如:

csharp 复制代码
public string Time()//无参数
{
	int day = DateTime.Now.Day;
	return day.ToString();
}
public void Add(int a, int b)
{
	int c = a + b;
	Console.WriteLine(c);
}//无返回值

程序 = 数据 + 算法

算法简介

循环

打印1~100的整数

csharp 复制代码
using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Tool t = new Tool();
            t.Printf();
        }
    }
    class Tool
    {
        public void Printf()
        {
            for (int i = 1; i < 101; i++)
            //i++表示先进行循环,循环一次后i = i + 1
            {
                Console.WriteLine(i);
            }
        }
    }
}

递归

递归是指函数自己调用自己

csharp 复制代码
using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Tool t = new Tool();
            t.Printf(1);
        }
    }
    class Tool
    {
        public void Printf(int i)
        {
            if (i > 100)
            { }
            else
            {
                Console.WriteLine(i);
                Printf(i + 1);
            }
        }
    }
}

计算1到100整数相加的和

循环:

csharp 复制代码
using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Tool t = new Tool();
            t.Printf();
        }
    }
    class Tool
    {
        public void Printf()
        {
            int j = 0;
            for (int i = 1; i < 101; i++)
            {
                j = j + i;
            }
            Console.WriteLine(j);
        }
    }
}

递归:

csharp 复制代码
using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Tool t = new Tool();
            t.Printf(1, 0);
        }
    }
    class Tool
    {
        public void Printf(int i, int j)
        {
            if (i > 100)
            {
                Console.WriteLine(j);
            }
            else
            {
                j = i + j;
                Printf(i + 1, j);
            }
        }
    }
}

高斯算式:

csharp 复制代码
public void Printf(int x)
{
	Console.WriteLine((x + 1) * x / 2);
}
相关推荐
paterWang2 小时前
基于 Python 和 OpenCV 的酒店客房入侵检测系统设计与实现
开发语言·python·opencv
东方佑2 小时前
使用Python和OpenCV实现图像像素压缩与解压
开发语言·python·opencv
饮长安千年月2 小时前
Linksys WRT54G路由器溢出漏洞分析–运行环境修复
网络·物联网·学习·安全·机器学习
红花与香菇2____2 小时前
【学习笔记】Cadence电子设计全流程(二)原理图库的创建与设计(上)
笔记·嵌入式硬件·学习·pcb设计·cadence·pcb工艺
我真不会起名字啊3 小时前
“深入浅出”系列之杂谈篇:(3)Qt5和Qt6该学哪个?
开发语言·qt
laimaxgg3 小时前
Qt常用控件之单选按钮QRadioButton
开发语言·c++·qt·ui·qt5
水瓶丫头站住3 小时前
Qt的QStackedWidget样式设置
开发语言·qt
小钊(求职中)4 小时前
Java开发实习面试笔试题(含答案)
java·开发语言·spring boot·spring·面试·tomcat·maven
一天八小时5 小时前
Docker学习进阶
学习·docker·容器
前端没钱5 小时前
前端需要学习 Docker 吗?
前端·学习·docker