AI教我学编程之C#关键字

news2024/9/27 4:54:34

AI教我学编程系列学习第三课 — C#关键字

    • 前言
    • 重点先知
    • 关键字分类
      • 保留字
      • 上下文关键字
    • 对话AI
      • 首遇波澜
      • 调整指令
        • 第一次
        • 第二次
        • 第三次
        • 直到我提出如下指令
      • 人工智能?
      • 阶段总结
    • 知识拓展
      • 1、Ecma和ISO是什么?
      • 2、System,dllhost.exe,taskmgr.exe是什么进程?能删吗?
    • 总结

前言

在第一课中,我们了解到C#标识符是一种字符串,用来命名变量``方法``参数以及其他程序结构,而本文将要介绍的关键字则是用来定义C#语言的字符串记号

重点先知

1、关键字不能被用作变量名或任何其他形式的标识符,除非以@字符开始
2、所有C#关键字全部都由小写字母组成(但是.NET 类型名使用Pascal大小写约定)

关键字分类

保留字

在标识符介绍的文章里,我这样写道:“不要使用C#中的保留字作为标识符,因其有特殊含义”,这里的保留字,即保留关键字,保留字因其本身所具有的特殊含义在C#中被列为关键字

abstractasbaseboolbreak
bytecasecatchcharchecked
classconstcontinuedecimaldefault
delegatedodoubleelseenum
eventexplicitexternfalsefinally
fixedfloatforforeachgoto
ifimplicitinintinterface
internalislocklongnamespace
newnullobjectoperatorout
overrideparamsprivateprotectedpublic
readonlyrefreturnsbytesealed
shortsizeofstackallocstaticstring
structswitchthisthrowtrue
trytypeofuintulongunchecked
unsafeushortusingvirtualvoid
volatilewhile

上下文关键字

上下文关键字用于在代码中提供特定含义,所以仅在一部分程序上下文中有特殊含义,但它不是 C# 中的保留字。而且C# 语言中新增的关键字会作为上下文关键字添加,以免破坏用旧版语言编写的程序。

addandaliasascendingargs
asyncawaitbydescendingdynamic
equalsfromgetglobalgroup
initintojoinlet托管(函数指针调用约定)
nameofnintnotnotnullnuint
onororderbypartial(类型)partial(方法)
recordremoveselectset非托管(函数指针调用约定)
unmanaged(泛型类型约束)valuevarwhen(筛选条件)where(泛型类型约束)
where(查询子句)withyield

对话AI

程序员

小A,对一名C#初学者来说,你认为C#中哪些关键字是必须要知道的?将这些关键字以及他们的用途列举出来

A:在C#编程语言中,有一些关键字对于初学者来说是非常重要的,掌握这些关键字有助于理解并熟练使用C#进行编程。以下是一些必须知道的关键字以及他们的用途:
1class:用于声明一个类,是面向对象编程的基础。
2int:用于声明整数类型变量。
3float:用于声明单精度浮点数类型变量。
4double:用于声明双精度浮点数类型变量。
5char:用于声明字符类型变量。
6string:用于声明字符串类型变量。
7bool:用于声明布尔类型变量。
8void:表示无返回值的方法。
9public:表示成员可以被任何其他类访问。
10private:表示成员只能在当前类中访问。
11protected:表示成员只能被当前类或派生类访问。
12static:表示属于类的成员,而不是类的实例。
13new:用于创建对象的实例。
14if:条件语句,用于根据条件执行不同的代码块。
15else:与if配对使用的关键字,表示条件不满足时执行的代码块。
16switch:多分支选择语句,根据表达式的值选择执行不同的代码块。

首遇波澜

程序员

小A,我注意到在这16个关键字中既有保留字和上下文关键字,请你将他们分类输出给我

上下文关键字(Contextual keywords)保留字(Reserved keywords)
intclass
floatint
doublefloat
chardouble
stringchar
boolstring
voidbool
publicvoid
privatepublic
protectedprivate
staticprotected
newstatic
ifnew
elseif
switchelse
switch

大家可以看到列表左侧上下文关键字与右侧保留字有很多重合,

调整指令

第一次

程序员

小A,在这个回答中,你将许多保留字也列为了关键字,现在我要你回答两个问题
1、保留字和上下文关键字的区别
2、解释你这么做的原因
回答完这两个问题后,重新归类,把这16个关键字中保留字和上下文关键字严格区分开来

对此,它如此答道

1、保留字和上下文关键字的区别:
保留字是编程语言中预定义的具有特殊含义的单词,不能用作标识符。它们通常用于表示语言的基本结构和语法规则。例如,在C#中,"class"是一个保留字,用于声明类;"int"是一个保留字,用于声明整数类型变量。
上下文关键字是根据代码中的使用方式来确定其含义的保留字。这些关键字的含义会根据它们在代码中的使用方式而变化。例如,在条件语句中,"if"是一个关键字,表示条件判断的开始;而在定义函数时,"function"也是一个关键字,用于声明一个函数。
2、解释这么做的原因:
将许多保留字列为上下文关键字是为了提供更精确的语言解析和错误检查。通过识别上下文关键字,编译器可以更好地理解代码的意图,并能够检测到潜在的语法错误或语义错误。这样可以帮助开发人员编写更准确、可靠的代码。

而后,它将上一个问题的答案再次给出,并未对这些关键字重新分类

第二次

程序员

我现在不需要你实现“提供更精确的语言解析和错误检查。通过识别上下文关键字,编译器可以更好地理解代码的意图,并能够检测到潜在的语法错误或语义错误。”这个功能,我现在需要的是你将这16个关键字,保留字划为一类,上下文关键字划为一类,分类结束后,这两类关键字的数量加起来等于16,等等,但均未奏效

第三次

程序员

我提供了Microsoft官方文档,但是并不奏效

直到我提出如下指令

程序员

以下是分类格式
保留关键字:class,int,float,double
上下文关键字:add,and
要知道,上下文关键字用于在代码中提供特定含义,但它不是 C# 中的保留字。
现在根据以上我给出的格式,对以下16个关键字重新分类

以下是根据您提供的格式重新归类的16个关键字:

保留关键字:classintfloatdouble
上下文关键字:addand

人工智能?

人工使其智能
程序员

你数数看,上面你归类的关键字有16个吗?

非常抱歉,我之前的回答有误。根据您的要求,以下是重新归类的16个关键字:

保留关键字:classintfloatdouble
上下文关键字:charstringboolvoidpublicprivateprotectedstaticnewifelseswitch

为了确保我没有冤枉他,我再次做了如下测试
程序员

char,string,bool,void,public,private,protected,static,new,if,else,switch这些都是保留关键字,而非上下文关键字,将他们重新归类

非常抱歉,我之前的回答有误。以下是重新归类的16个关键字:
保留关键字:classintfloatdoublecharstringboolvoidpublicprivateprotectedstaticnewifelseswitch
上下文关键字:无

阶段总结

我现在使用的这个AI不足以支撑C#基础教学的实现,如果要匹配现有的知识点,反而是需要我提供数据,我们接着往下看
程序员

小A,你列出了16个关键字,我一下子记不住那么多,可以把他们分个类吗?
比如:
类别 --------------关键字
选择语句--------- if,switch

类别关键字
条件语句if,else
循环语句for,while
跳转语句break,continue,return
访问修饰符public,private,protected
其他var,let,static,void

程序员

小A,你将“ varletstaticvoid”这四个关键字列到了同一类,他们是不是有什么共同点呢?

A:是的,这四个关键字在C#中都属于其他类别,它们具有一些共同点:
1var:用于声明变量时自动推断其类型。它可以用于声明局部变量或匿名类型。
2let:用于声明只能在代码块内访问的局部变量。它主要用于循环和迭代语句中。
3static:表示属于类的成员,而不是类的实例。静态成员可以在没有创建类的实例的情况下被访问。
4void:表示无返回值的方法。它用于定义不返回任何值的方法。
这些关键字在编程中有不同的用途,但它们都是用来控制程序的行为和数据的作用域。

知识拓展

1、Ecma和ISO是什么?

  • Ecma是欧洲计算机制造商协会(European Computer Manufacturers Association)的简称,是一家国际性会员制度的信息和电信标准组织。1994 年之后,由于组织的标准牵涉到很多其他国家,为了体现其国际性,更名为 Ecma 国际(Ecma International)
  • ISO:国际标准化组织(International Organization for Standarization,简称ISO),成立于1947年2月23日,指定全世界工商业国际标准的国际标准建立机构。

2、System,dllhost.exe,taskmgr.exe是什么进程?能删吗?

1、taskmgr.exe: Windows任务管理器
2、dllhost.exe:dllhost.exe进程是微软为其Windows系统定义的重要的系统进程,系统描述为:COM Surrogate
3、System:Windows页面内存管理进程,使用Ctrl+Alt+Del打开,不能轻易删除,删除容易导致蓝屏!

总结

AI在辅助编写代码方面确实是有一定作用,但是如果需要进行C#的学习,选择AI极有可能误入歧途,因为AI很有可能为了提供更精确的语言解析和错误检查。通过识别上下文关键字,编译器可以更好地理解代码的意图,并能够检测到潜在的语法错误或语义错误。这样可以帮助开发人员编写更准确、可靠的代码。这样的目的去选择性的修改答案,也就是说,还得调教。

那么,ladies and 乡亲们,今天的分享就到此结束了,喜欢本文的朋友,给博主点个免费的赞吧,感谢诸位道友的支持,爱你们!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1364042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务器磁盘挂载及格式化

一边学习,一边总结,一边分享! 写在前面 最近一直折腾组装的电脑,来回折腾了很久关于我花费六千多组了台window+Linux主机,目前基本是可以使用了。对于Windows主机配置基本是没问题,一直在使用,以及桌面化软件,都可以自己安装,只是说这台主机有些软件可能一时半会安装…

《数字图像处理》课程设计

第1题:感兴趣目标提取 主要内容: 对输入的自然图像进行感兴趣目标提取,给出所有10副图的结果(图像教师提供)。 参考步骤: 对图像进行初始分割,可选择的初始分割方法包括分水岭方法&#xff0…

Unity中Shader面片一直面向摄像机(个性化修改及适配BRP)

文章目录 前言一、个性化修改面向摄像机效果1、把上一篇文章中求的 Z轴基向量 投影到 XoZ平面上2、其余步骤和之前的一致3、在属性面板定义一个变量,控制面片面向摄像机的类型4、效果 二、适配BRP三、最终代码 前言 在上一篇文章中,我们用Shader实现了面…

Cannot resolve property ‘driverClassName‘

已解决 Cannot resolve property 错误 最近在学习spring时遇到了下面的问题: spring读取不到property的name属性,报红,编译不通过,上网查到了两种解决方案,如下: 1、重新加载spring文件就可以解决问题了&a…

1870_使用flx来增强counsel-M-x的模糊匹配功能

Grey 全部学习内容汇总: https://github.com/GreyZhang/editors_skills 1870_使用flx来增强counsel-M-x的模糊匹配功能 这一次算是趁热打铁,把之前优化掉了的counsel-M-x的匹配功能再推进一步。虽然还是没有达到spacemacs中的乱序匹配效果&#xff0c…

Mybatis入门源码二:sql执行

后面开始分析sql执行的源码流程也就是这一部分 一、factory.openSession() 重点关注configuration.newExecutor这个方法,获取事务处理器比较简单,就是获取一个jdbc的事务管理器。 这个方法通过传入的执行器类型来创建不同的执行器,有simp…

学习笔记——C++中数据的输入 cin

作用:用于从键盘中获取数据 关键字:cin 语法:cin>>变量 类型:C中数据的输入主要包含:整形(int)浮点型(float,double float),字符型&…

[C#]使用DlibDotNet人脸检测人脸68特征点识别人脸5特征点识别人脸对齐人脸比对FaceMesh

【官方框架地址】 https://github.com/takuya-takeuchi/DlibDotNet 【算法介绍】 DlibDotNet是一个开源的.NET库,用于实现机器学习和计算机视觉应用。它基于C库dlib,通过C/CLI封装了dlib的所有功能,为.NET开发者提供了简单易用的API。以下是…

爬虫网易易盾滑块案例:某乎

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 一、滑块初步分析 js运行 atob(‘aHR0cHM6Ly93d3cuemhpaHUuY29tL3NpZ25pbg’) 拿到网址,浏览器打开网站&#xff0…

Android学习(一):Android Studio安装与配置

Android学习(一):Android Studio安装与配置 一、安装 下载地址 下载zip文件,免安装。 二、下载资源 启动后,出现该弹框,点击Cancel。 点击Next 默认,点击Next。 点击Next。 点击Finish 开始…

liunx 巡检命令

top 查看cup使用率 - top 查看cup使用率 退出输入q 第一行top 1.当前系统时间 2.up 运行时间 3.users当前连接的终端数量 4.load average 负载的平均值 第二行 tasks 任务 1. 128 total #为当前系统进程总数 2. 1 running #为当前系统进程总…

前端--基础 常用标签-超链接标签 外部链接( herf 和 target)

目录 超链接标签 &#xff1a; 超链接的语法格式 &#xff1a; 超链接的属性 &#xff1a; 超链接的分类 &#xff1a; 外部链接 &#xff1a; 超链接标签 &#xff1a; # 在 HTML 标签中&#xff0c;<a> 标签用于定义超链接&#xff0c;作用是从一个页面…

屏幕截图--Snagit

Snagit是一款优秀的屏幕、文本和视频捕获、编辑与转换软件。它不仅可以捕获静止的图像&#xff0c;还能获得动态的图像和声音。软件界面干净清爽&#xff0c;功能板块一目了然&#xff0c;为用户提供专业的屏幕录制方案。可以根据自己的需求调整录制视频的分辨率、帧数、输出格…

HNU-数据库系统-讨论课2

第二次小班讨论课安排如下: 主题: 数据库系统设计与应用开发。 目的&#xff1a;让学生通过练习和讨论充分掌握数据库系统的设计与应用开发。 内容: 设计和实现一个数据库及应用系统。设计内容包括系统分析、系统设计、 数据库设计&#xff08;需求分析、概念结构设计、逻辑…

图神经网络|9.3 邻接矩阵的变换

由于邻接矩阵中一般不会&#xff08;i,i&#xff09;等于1&#xff0c;除非第i个点上有自环。 而如果用邻接矩阵去乘上特征矩阵&#xff0c;那么将丢失自身向自身的贡献。 此时可以再邻接矩阵的基础上&#xff0c;再加上一个单位阵&#xff0c;从而使得最终的结果包含自身对整体…

P4994 终于结束的起点————C

目录 终于结束的起点题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示样例 1 解释数据范围提示 解题思路Code运行结果 终于结束的起点 题目背景 终于结束的起点 终于写下句点 终于我们告别 终于我们又回到原点 …… 一个个…

RK3399平台入门到精通系列讲解(实验篇)lseek 函数进行读写位置的调整

🚀返回总目录 文章目录 一、lseek 函数的使用二、信号驱动 IO 实验源码2.1、Makefile2.2、驱动部分代码2.3、测试应用代码lseek() 是一个用于文件定位的系统调用函数,用于在文件中移动读写位置指针。在 Linux 中,它常常被用来修改文件读写的位置。lseek() 可以被用于随机存…

[嵌入式C][入门篇] 快速掌握基础4 (普通函数,递归函数,函数指针,弱函数)

开发环境&#xff1a; 网页版&#xff1a;跳转本地开发(Vscode)&#xff1a;跳转 文章目录 一、简介二、普通函数&#xff08;1&#xff09;定义函数&#xff08;2&#xff09;调用函数1. 传值调用2. 传地址调用 三、递归函数&#xff08;套娃&#xff09;(1) 示例代码 四、函…

记.backward()报错

最近我在模型训练损失里加入了LPIPS深度感知损失&#xff0c;训练的时候就出现了如上的报错&#xff0c;具体解释为&#xff1a;调用梯度反向传播loss.backward()时&#xff0c;我们计算梯度&#xff0c;需要一个标量的loss(即该loss张量的维度为1,只包含一个元素&#xff09;&…

计算机科学速成课【学习笔记】(2)——电子计算机

本集课程B站链接 2. 电子计算机-Electronic Computing_哔哩哔哩_bilibili2. 电子计算机-Electronic Computing是【计算机科学速成课】[40集全/精校] - Crash Course Computer Science的第2集视频&#xff0c;该合集共计40集&#xff0c;视频收藏或关注UP主&#xff0c;及时了…