程序处理内存中的数据,这些数据的表现形式分为常量和变量。C#语言要求变量的名称必须以字母开头,并由字母,数字和下划线组成,且不能与C#中的关键字相同。所有的高级语言的变量命名都是一样的。C#语言的变量名也是大小写敏感的,这和C++,Java是一样的。
备注:C#有一个关键字var,它用于“隐式”变量声明,即在声明变量的时候不指定数据类型,而是根据赋予的值来推断其数据类型。
在C#中定义常量的方式有两种,一种叫做静态常量,另一种叫做动态常量。前者用“const”来定义,后者用“readonly”来定义。用const定义常量,类型必须属于值类型,同时此类型的初始化不能通过new来完成。相对于const而言,用readonly来定义常量要灵活的多。在Java语言中,主要是利用final关键字来定义常量。
以下是C#语言的运算符,按照优先级从高到低排列:
一元运算符 ++, --
乘/除运算符 *, /, %
加/减运算符 +, -
移位运算符 <<, >>
关系运算符 <, >, <=, >=, ==, !=
逻辑运算符 &, ^, |
条件运算符 &&, ||
三元运算符 ? :
赋值运算符 =, *=, /=, %=, +=, -=
很多高级语言都提供了很多的运算符,但是使用率最高的也上面这些而已。
备注:括号是最高的优先级,任何表达式都可以使用括号来控制先后顺序。
C#的流程控制包括顺序结构,选择结构和循环结构。
选择结构包括if-else和switch两种实现。
int x = 10;
if (x > 10){
Console.WriteLine("x大于10");
} else {
Console.WriteLine("x小于或等于10");
}
int y = 100;
switch (y)
{
case 10:
Console.WriteLine("y等于10");
break;
case 20:
Console.WriteLine("y等于20");
break;
case 30:
Console.WriteLine("y等于30");
break;
default:
Console.WriteLine("y不确定");
break;
}
循环结构包括for,while,do-while以及foreach四种实现。
其中foreach主要用于集合数据的遍历,例如数组,List等。
// for示例
int r1 = 0;
for (int i = 1; i<=100; i++)
{
r1 += i;
}
Console.WriteLine(r1);
// while示例
int i2 = 1, r2 = 0;
while (i2 <= 100)
{
r2 += i2;
i2++;
}
Console.WriteLine(r2);
// do-while示例
int i3 = 1, r3 = 0;
do
{
r3 += i3;
i3++;
} while (i3 <= 100);
Console.WriteLine(r3);
// foreach示例
int[] w = new int[] {1,2,3,4,5 };
foreach (int temp in w)
{
Console.WriteLine(temp);
}
在循环体体中,我们可以使用continue来跳过本次循环,break来结束所有循环。
备注:虽然C#语言中以后goto语句,但是大部分高级语言中,都不怎么使用它。
C#字符串的操作
// 创建字符串
string str = "你好,C#";
Console.WriteLine(str);
// 字符串长度,中英文长度是一样的
int len = str.Length;
Console.WriteLine(len);
// 字符串累加
string str1 = str + "......";
Console.WriteLine(str1);
// 字符串比较
if (str == str1)
{
Console.WriteLine("相同");
}
else
{
Console.WriteLine("不相同");
}
// 字符串比较
if (String.Compare(str, str1) == 0)
{
Console.WriteLine("相同");
}
else
{
Console.WriteLine("不相同");
}
// 查找字符位置,没有找到返回-1
int pos = str.IndexOf('C');
Console.WriteLine(pos);
// 从指定位置开始删除后面所有字符
string str2 = str.Remove(2);
Console.WriteLine(str2);
// 替换字符,使用"-"替换掉","
string str3 = "a,b,c,d";
string str4 = str3.Replace(",","-");
Console.WriteLine(str4);
// 在指定位置开始插入新字符
string str5 = "he,c#";
string str6 = str5.Insert(2,"llo");
Console.WriteLine(str6);
// 从指定位置开始截取指定长度的字符
string str7 = "this is a test";
string str8 = str7.Substring(5, 2);
Console.WriteLine(str8);
// 按照指定字符将字符串拆分成字符串数组
string[] arr = str7.Split(' ');
for (int i=0; i<arr.Length; i++)
{
Console.WriteLine(arr[i]);
}
文件操作
using System.IO;
using System.Collections.Generic;
// 写入文件,追加模式
string file = "./test.txt";
FileStream fs = new FileStream(file, FileMode.Append);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("第一行");
sw.WriteLine("第二行");
sw.WriteLine("第三行");
sw.Close();
fs.Close();
// 读取文件
string[] data = System.IO.File.ReadAllLines(file);
Console.WriteLine(data[2]);
// 按行读取文件
IEnumerable<string> vs = File.ReadLines(file);
foreach (string line in vs)
{
Console.WriteLine(line);
}
// 删除文件
if (System.IO.File.Exists(file))
{
System.IO.File.Delete(file);
}
教学案例源代码下载:
https://download.csdn.net/download/konkon2012/23471862
备注:这是我们游戏开发系列教程的第一个课程,主要是编程语言的基础学习,优先学习C++编程语言,然后进行C#语言,最后才是Java语言,紧接着就是使用C++和DirectX来介绍游戏开发中的一些基础理论知识。我们游戏开发系列教程的第二个课程是Unity游戏引擎的学习。课程中如果有一些错误的地方,请大家留言指正,感激不尽!