C#调试与VS技巧、注释规范等

断点

条件断点

在这里插入图片描述
在这里插入图片描述
当得分==99时击中断点,多条件如下
在这里插入图片描述
其他模式条件
在这里插入图片描述
关于第三种模式,可用于判断的条件有以下几种,可以使用&,||,!来进行逻辑结合判断
分别是1机器设备名称,2进程ID,3进程名称,4线程ID,5线程名称
在这里插入图片描述
断点样式变为
在这里插入图片描述

联动断点

只有被关联的断点被击中时,才启用此断点
在这里插入图片描述
断点样式变为
在这里插入图片描述

断点详细信息显示并输出

右键原始断点
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
假设输出全部信息,则格式如下

Address:$ADDRESS,Caller:$CALLER,Callstack:$CALLSTACK,Filepos:$FILEPOS,Function:$FUNCTION,HitCount:$HITCOUNT,Pid:$PID,Pnname:$PNAME,Tick:$TICK,Tid:$TID,TName:$TNAME

输出如下

Address:Student.Student(string, int, int, string, string, string, string, int) + 0x0000000000000093,Caller:Program.<Main>$,Callstack:	DebugTest.dll!Student.Student
	DebugTest.dll!Program.<Main>$
	,Filepos:xxxxxxxxxxxxxxxx\Program.cs(36),Function:Student.Student(string, int, int, string, string, string, string, int),HitCount:1,Pid:10140,Pnname:xxxxxxxxxxxxxxxxxxx\DebugTest.exe,Tick:388130656,Tid:37960,TName:Main Thread

Address:Student.Student(string, int, int, string, string, string, string, int) + 0x0000000000000093,Caller:Program.<Main>$,Callstack:	DebugTest.dll!Student.Student
	DebugTest.dll!Program.<Main>$
	,Filepos:xxxxxxxxxxxxxxxxxxxx\Program.cs(36),Function:Student.Student(string, int, int, string, string, string, string, int),HitCount:2,Pid:10140,Pnname:xxxxxxxxxxxxxxxxxxxxx\DebugTest.exe,Tick:388130671,Tid:37960,TName:Main Thread

并且断点样式变为如下图,当前行代码前景色变为红色
在这里插入图片描述

VS技巧

常用快捷键

Ctrl F和Ctrl Shift F,分别当前页面和当前工程查找
Ctrl -和Ctrl Shift -后退到上一步、前进到上一步
Ctrl Shift V打开最近复制历史记录,最多记录10条
Ctrl Shift Alt 加上下方向键移动整行代码
Alt Shift =扩展选区,Alt Shift -缩小选区
Alt Shift 】选中一个代码块

保存代码段

选中代码段,然后拖进工具箱,右键可以重命名
在这里插入图片描述
在这里插入图片描述
下一次要使用同样的代码,从代码窗口的工具箱拖出来即可
在这里插入图片描述

设置自己的代码命名规则

工具-设置-文本编辑器-C#-命名规则
在这里插入图片描述
在这里插入图片描述
点击+号,新增命名规则
在这里插入图片描述
添加完后,点击OK,选择要应用该规则的关键字或者代码特性
在这里插入图片描述
当你的编码不符合定义的规范时,编译器就会提示你,提示的程度根据规范中的警告等级设置

智能显示当前代码所处的Scope

需要最新VS2022版本才支持
在这里插入图片描述
在写非常长的循环或者很多层嵌套的时候,可以便捷看到当前代码属于那一个代码块作用范围
在这里插入图片描述

固定的选项卡另外起一行

在这里插入图片描述
在这里插入图片描述

竖向选项卡

工具-选型-环境-选项卡和窗口
在这里插入图片描述
效果如图
在这里插入图片描述

C#规范注释

如果是要将你写的类库统一给别人调用的话,这还是很有必要的;如果都是自己写自己用,那无所谓
C#采用XML格式注释规范
见官方文档https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/xmldoc/recommended-tags
在这里插入图片描述
这里介绍最常用的

///自动生成注释

用于类、方法、字段等声明语句
效果如下,连续在声明语句上面,键入///就会自动生成
在这里插入图片描述

para另起一行,see指向符号(可跳转),code插入代码

在这里插入图片描述

param为方法参数添加注释

在这里插入图片描述
正确书写注释,按照规范,后面生成的xml文档就可以用于生成标准的API文档,如
在这里插入图片描述
在这里插入图片描述

Remarks和ParamRef为方法添加更规范注释概要

效果,根据不同的编辑器和代码样式,可能略有不同
在这里插入图片描述
代码

class TestClass
{
    /// <summary>
    /// 测试方法
    /// </summary>
    /// <remarks>
    ///<paramref name="name"/>:角色名称<para></para>
    ///<paramref name="entity"/>:角色实体,所属类型<see cref="Entity"/>继承自<see cref="EntityBase"/><para></para>
    /// </remarks>
    /// <param name="name">角色名称</param>
    /// <param name="entity">角色实体</param>
    void TestMethod(string name, Entity entity)
    {
        Console.WriteLine(name);
        Console.WriteLine(entity);
    }
}

record Entity(int Attack, int HP, double Speed) : EntityBase(Guid.NewGuid());
record EntityBase(Guid ID);

注释中的<,>转义

分别对应< >
在这里插入图片描述 在这里插入图片描述

注释中的泛型或假定类型字符高亮

在这里插入图片描述
例子如下

/// <summary>
/// 将数据转成CSV格式文本,并返回StringBuilder
/// <example>
/// <code>
///var teachers = Teacher.FakeMany(2);
///var students = Student.FakeMany(1000);
///CsvOprHelper
///    .ToCSV(
///        new List&lt;<see cref="CsvDataBase"/>&gt;()
///        {
///            new CsvDataNormal&lt;<see cref="List{T}"/>&gt;(teachers),
///            new CsvDataNormal&lt;<see cref="List{T}"/>&gt;(students),
///            new CsvDataNormal&lt;<typeparamref name="T"/>&gt;(school),
///        }
///    )
///    .SaveToFile(@"Desktop\工作簿1.xlsx");
/// </code>
/// </example>
///</summary>
/// <param name="csvDatas"></param>
/// <returns></returns>
public static StringBuilder ToCSV(List<CsvDataBase> csvDatas)

效果如图
在这里插入图片描述

C为指定字段突出

在这里插入图片描述

/// <summary>
/// Call this with : <c>Test();</c>
/// </summary>
void Test()
{
}

为泛型T添加注释typeparam

在这里插入图片描述

纯文本注释,不进行XML敏感字符转义CDATA[ ]

﹤![CDATA[ ]]>
注意:VS无法解析换行,一般用于介绍;你用这个写小说也可以
在这里插入图片描述

list列表注释

在C#中,XML注释可以使用list标签来创建一个列表。这个标签有一个type属性,可以设置为"bullet"、“number"或"table”,分别表示无序列表、有序列表和表格。

<list type="bullet">创建了一个无序列表。<item>标签用于定义列表中的每一项,<description>标签用于描述每一项的内容。
例如:
/// <summary>
/// This is a summary of the method.
/// <list type="bullet">
/// <item>
/// <description>Item 1</description>
/// </item>
/// <item>
/// <description>Item 2</description>
/// </item>
/// </list>
/// </summary>
public void SomeMethod1()
{
    // method body
}

在这里插入图片描述
type参数支持以下三种类型:

bullet:创建一个无序列表,每个列表项前面都有一个小圆点。
number:创建一个有序列表,每个列表项前面都有一个数字,按照添加的顺序递增。
table:创建一个表格,需要使用listheader来定义表头,然后使用item来定义每一行,每一行内部使用term和description来定义单元格。

/// <summary>
/// This is a summary of the method.
/// <list type="table">
/// <listheader>
/// <term>Term 1</term>
/// <description>Description 1</description>
/// </listheader>
/// <item>
/// <term>Term 2</term>
/// <description>Description 2</description>
/// </item>
/// </list>
/// </summary>
public void SomeMethod()
{
    // method body
}

在这里插入图片描述

加粗,斜体

<strong>加粗
<em>斜体

常见的特殊字符转义

&(和号):&amp;
<(小于符号):&lt;
>(大于符号):&gt;
"(双引号):&quot;
'(单引号):&apos;
&#x0D;回车
&#x0A;换行
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值