一、visual studio的安装网址
https://visualstudio.microsoft.com/zh-hans/free-developer-offers/
二、基本知识
1、第一个hello world程序
using System;
//引入命名空间
namespace c_sharp_rumen
//定义命名空间
{
class Program
{
//定义类
static void Main(string[] args)
//定义一个Main方法
{
Console.WriteLine("Hello World!");
//方法体
}
}
}
using System 告诉编译器使用System命名空间中的类型。
namespace c_sharp_rumen 声明一个新的命名空间,名字为c_sharp_rumen,下面的类属于这个命名空间。
class Program 声明一个新的类类型,名字叫做Program。
static void Main(string[] args) 声明一个方法,名称为Main,Main方法就是类的一个成员,Main是一个特殊函数,编译器把它作为程序的起始点。
语句以分号结束;这个语句使用命名空间System下的Console类把一个字符串输出到控制台;没有第一行的using语句,编译器就找不到Console类。
2、标识符,关键字,命名规范
标识符:字母 下划线 可以用在任何位置,数字不能放在首位, @字符只能放在标示符的首位。
标识符不能与关键字重复,
保留关键字 | ||||||
---|---|---|---|---|---|---|
abstract | as | base | bool | break | byte | case |
catch | char | checked | class | const | continue | decimal |
default | delegate | do | double | else | enum | event |
explicit | extern | false | finally | fixed | float | for |
foreach | goto | if | implicit | in | in (generic modifier) | int |
interface | internal | is | lock | long | namespace | new |
null | object | operator | out | out (generic modifier) | override | params |
private | protected | public | readonly | ref | return | sbyte |
sealed | short | sizeof | stackalloc | static | string | struct |
switch | this | throw | true | try | typeof | uint |
ulong | unchecked | unsafe | ushort | using | virtual | void |
volatile | while | |||||
上下文关键字 | ||||||
add | alias | ascending | descending | dynamic | from | get |
global | group | into | join | let | orderby | partial (type) |
partial (method) | remove | select | set |
Camel命名法: 首个单词的首字母小写,其余单词的首字母大写(enemyHp)。
Pascal命名规范: 每个单词的第一个字母都大写(EnemyHp),如果使用到英文单词的缩写,全部使用大写(PI HP MP)。
变量使用Camel命名,方法和类使用Pascal命名规范。
3、Main方法,语句,块
每个c#程序必须带一个Main方法(函数),Main方法首字母大写。
语句是描述一个类型或告诉程序去执行某个动作的一条源代码指令,语句以分号结束。
int var1 = 5;
System.Console.WriteLine("The value of var1 is {0}",var1);
块是一个由大括号包围起来的0条或多条语句序列,它在语法上相当于一条语句。
{
int var1 = 5;
System.Console.WriteLine("The value of var1 is {0}",var1);
}
块的内容:
1,某些特定的程序结构只能使用块
2,语句可以以分号结束,但块后面不跟分号
4、输出文本到控制台,格式化输出
Console.Write(""Hello world1.");
System.Console.WriteLine("Hello world2.");
Console.WriteLine("两个数相加{0}+{1}={2}",3,34,34);
Write是Console类的成员,它把一个文本字符串发送到程序的控制台窗口,WriteLine是Console的另外一个成员,它和Write实现相同的功能,但会在每个输出字符串的结尾添加一个换行符。
下面的语句使用了3个标记,但只有两个值
Console.WriteLine("Three integers are {1},{0} and {1}",3,5);
但是标记不能引用超出替换值列表长度以外位置的值
三、变量与表达式
1.变量
<type> <name>;
type表示使用什么类型的变量来存储数据,name表示存储这个变量的名字
int age; int hp; string name;
类型 | 描述 | 范围 | 默认值 |
---|---|---|---|
bool | 布尔值 | True 或 False | False |
byte | 8 位无符号整数 | 0 到 255 | 0 |
char | 16 位 Unicode 字符 | U +0000 到 U +ffff | ‘\0’ |
decimal | 128 位精确的十进制值,28-29 有效位数 | (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 | 0.0M |
double | 64 位双精度浮点型 | (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308 | 0.0D |
float | 32 位单精度浮点型 | -3.4 x 1038 到 + 3.4 x 1038 | 0.0F |
int | 32 位有符号整数类型 | -2,147,483,648 到 2,147,483,647 | 0 |
long | 64 位有符号整数类型 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | 0L |
sbyte | 8 位有符号整数类型 | -128 到 127 | 0 |
short | 16 位有符号整数类型 | -32,768 到 32,767 | 0 |
uint | 32 位无符号整数类型 | 0 到 4,294,967,295 | 0 |
ulong | 64 位无符号整数类型 | 0 到 18,446,744,073,709,551,615 | 0 |
ushort | 16 位无符号整数类型 | 0 到 65,535 | 0 |
赋值变量
using System;
namespace _002_bian_liang
{
class Program
{
static void Main(string[] args)
{
byte myByte = 12;
float number = 12.5f; //注意赋值时的浮点数默认是double类型,所以需要加上f
double number1 = 12.6;
Console.WriteLine("byte:{0} float:{1} double:{2}",myByte,number,number1);
char myChar = 'a';
string muString = "a";
bool muBool = true;
}
}
}
2、转义字符
转义序列 | 含义 |
---|---|
\ | \ 字符 |
’ | ’ 字符 |
" | " 字符 |
? | ? 字符 |
\a | Alert 或 bell |
\b | 退格键(Backspace) |
\f | 换页符(Form feed) |
\n | 换行符(Newline) |
\r | 回车 |
\t | 水平制表符 tab |
\v | 垂直制表符 tab |
\ooo | 一到三位的八进制数 |
\xhh . . . | 一个或多个数字的十六进制数 |
使用@不识别转义字符
如果我们不想去识别字符串中的转义字符,可以在字符串前面加一个@符号(除了双引号其他转义字符都不在识别)
举例:string sentence = @“I’m a good man. " " You are bad girl!” ,使用两个引号表示一个引号
@字符的两个作用示例:
1,默认一个字符串的定义是放在一行的,如果想要占用多行
2,用字符串表示路径
“c:\xxx\xx\xxx.doc”
使用@"c:\xxx\xx\xxx.doc"更能读懂
多变量赋值
string name1,name2;
3、表达式
算术运算符
下表显示了 C# 支持的所有算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:
运算符 | 描述 | 实例 |
---|---|---|
+ | 把两个操作数相加 | A + B 将得到 30 |
- | 从第一个操作数中减去第二个操作数 | A - B 将得到 -10 |
* | 把两个操作数相乘 | A * B 将得到 200 |
/ | 分子除以分母 | B / A 将得到 2 |
% | 取模运算符,整除后的余数 | B % A 将得到 0 |
++ | 自增运算符,整数值增加 1 | A++ 将得到 11 |
– | 自减运算符,整数值减少 1 | A-- 将得到 9 |
更详细的可以参考这个网址
https://www.runoob.com/csharp/csharp-operators.html
数据类型转换
序号 | 方法 & 描述 |
---|---|
1 | ToBoolean 如果可能的话,把类型转换为布尔型。 |
2 | ToByte 把类型转换为字节类型。 |
3 | ToChar 如果可能的话,把类型转换为单个 Unicode 字符类型。 |
4 | ToDateTime 把类型(整数或字符串类型)转换为 日期-时间 结构。 |
5 | ToDecimal 把浮点型或整数类型转换为十进制类型。 |
6 | ToDouble 把类型转换为双精度浮点型。 |
7 | ToInt16 把类型转换为 16 位整数类型。 |
8 | ToInt32 把类型转换为 32 位整数类型。 |
9 | ToInt64 把类型转换为 64 位整数类型。 |
10 | ToSbyte 把类型转换为有符号字节类型。 |
11 | ToSingle 把类型转换为小浮点数类型。 |
12 | ToString 把类型转换为字符串类型。 |
13 | ToType 把类型转换为指定类型。 |
14 | ToUInt16 把类型转换为 16 位无符号整数类型。 |
15 | ToUInt32 把类型转换为 32 位无符号整数类型。 |
16 | ToUInt64 把类型转换为 64 位无符号整数类型。 |
程序示例
using System;
namespace convertType
{
class Program
{
static void Main(string[] args)
{
int i = 75;
float f = 53.005f;
double d = 2345.7652;
bool b = true;
Console.WriteLine(i.ToString());
Console.WriteLine(f.ToString());
Console.WriteLine(d.ToString());
Console.WriteLine(b.ToString());
string readContent = Console.ReadLine(); //接收用户输入的一行
int contentConvert = Convert.ToInt32(readContent);
Console.WriteLine(contentConvert);
}
}
}
四、流程控制
1、if语句
bool var1 = true;
if(var1)
Console.WriteLine(var1);
if (score > 50)
{
score++;
Console.WriteLine("您输入的分数大于50"+score);
}
else
{
score--;
Console.WriteLine("您输入的分数小于等于50"+score);
}
2、?:
? :
int myInterger = 100;
string res = (myInterger < 10) ? "less than 10" : "more than 10";
Console.WriteLine(res);
3、switch
int state = 0;
switch (state)
{
case 0:
Console.WriteLine("游戏开始!");
break;
case 1:
Console.WriteLine("游戏结束!");
break;
case 2:
Console.WriteLine("游戏胜利");
break;
default:
Console.WriteLine("未知错误");
break;
}
4、while 循环
int i=1,j = 1;
while (i < 10 )
{
while (j <= i)