设置窗口
Console.SetWindowSize(width,height);
设置光标
Console.SetCursorPosition(Left, Top); // Left是列位置,Top是行位置
判断字符数字
Char.IsLetter() //字符
Char.IsDigit() //数字
对话内容逐字输出
在每两个字输出之间通过for循环空语句来形成时间延迟的效果:
for(int k=0;k<10000*10000;k++);
创建二维数组
int[ , ]=new int[row , col];
输出二维数组元素
for(int i=0; i<s.GetLength(0); i++){
for(int j=0; j<s.GetLength(1); j++){
}
}
GetLength(0):取行数 GetLength(1):取列数
s.Length :元素总数
构造器调用构造器
固定类型
const 常量字段的值在编译时被获取
readonly 只读字段的值在运行时被获取:只能在定义时和在构造器里才能被赋值
单例模式
以类A为例:
1、创建A的私有构造器
2、创建A的私有静态变量(表示实例)
3、创建A的公有获取实例方法,当实例为null时创建实例,否则返回该实例
例:用数组实现允许空槽的背包,背包为单例
class Bag
{
string[] items;
private Bag()
{
}
private static Bag instance = null;
public static Bag Instance()
{
if (instance == null)
instance = new Bag();
return instance;
}
public void SetSize(int n)
{
items = new string[n];
}
public void SetItem(int index, string itemName)
{
items[index] = itemName;
}
public void SwapItem(int indexA, int indexB)
{
string tmp = items[indexA];
items[indexA] = items[indexB];
items[indexB] = tmp;
}
public void DropItem(int index)
{
items[index] = null;
}
public void Print()
{
for (int i = 0; i < items.Length; i++)
Console.WriteLine("{0}:{1}", i, items[i]==null?"(null)":items[i]);
} // items[i]==null 等价于 string.IsNullOrEmpty,即判断其是空字符串还是null
}
static void Main(string[] args)
{
Bag.Instance().SetSize(10);
for(; ; )
{
Console.Clear();
Console.WriteLine("在此键入命令:");
string cmd = Console.ReadLine();
switch(cmd){
case "set":
{
Console.WriteLine("请输入物品位置:");
int index = int.Parse(Console.ReadLine());
Console.WriteLine("请输入物品名称:");
string name = Console.ReadLine();
Bag.Instance().SetItem(index, name);
}
break;
case "swap":
{
Console.WriteLine("请输入待交换物品位置1:");
int index1 = int.Parse(Console.ReadLine());
Console.WriteLine("请输入待交换物品位置2:");
int index2 = int.Parse(Console.ReadLine());
Bag.Instance().SwapItem(index1,index2);
}
break;
case "drop":
{
Console.WriteLine("请输入要丢弃的物品位置:");
int index = int.Parse(Console.ReadLine());
Bag.Instance().DropItem(index);
}
break;
case "print":
{
Bag.Instance().Print();
}
break;
}
}
Bag.Instance().SetItem(2, "药瓶");
Bag.Instance().SetItem(5, "匕首");
Bag.Instance().SetItem(8, "衣服");
Bag.Instance().Print();
Bag.Instance().SwapItem(2, 3);
Console.WriteLine("------------------");
Bag.Instance().Print();
Console.ReadLine();
}
使对象可打印
在类中写overide空格后会出现三个可重写方法:
选择ToString()回车得到
//格式化输出
public override string ToString(){
return $"variable:{this.value}";}