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

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.mzph.cn/news/606637.shtml

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

相关文章

7个Pandas绘图函数助力数据可视化

大家好,在使用Pandas分析数据时,会使用Pandas函数来过滤和转换列,连接多个数据帧中的数据等操作。但是,生成图表将数据在数据帧中可视化,通常比仅仅查看数字更有帮助。 Pandas具有几个绘图函数,可以使用它…

软件测试|Linux基础教程:ln命令与软链接和硬链接

简介 在Linux系统中,ln命令是一个非常有用的工具,用于创建链接(link),将一个文件或目录链接到另一个位置。链接允许一个文件或目录可以同时存在于多个位置,而不会占用额外的磁盘空间。ln命令支持创建硬链接…

202312 青少年软件编程等级考试Scratch一级真题(电子学会)

2023年12月 青少年软件编程等级考试Scratch一级真题(电子学会) 试卷总分数:100分 试卷及格分:60 分 考试时长:60 分钟 第 1 题 单选题 观察下列每个圆形中的四个数,找出规律,在括…

用通俗易懂的方式讲解:2024 检索增强生成技术(RAG)研究进展

本篇内容1w字左右,稍微有点长,相对不容易理解,喜欢可以收藏、关注、点赞。 一、前言 在过去的一两年里,人工智能领域目睹了检索增强生成技术(RAG)的迅猛发展,这种技术结合了强大的语言模型与信…

程序员副业之AI情侣头像(手把手超详细完整全流程)

项目介绍 小黑今天给咱们分享个轻松简单的项目,每天不会超过半小时,就是用AI制作情侣头像,在抖音上变现。听起来是不是很科幻?但实际上效果杠杠的! 最关键的是,收入方面,一单9块9,…

深入了解性能测试工具:优化应用性能的关键步骤

在当今数字化时代,应用程序性能是保持用户满意度和业务成功的关键因素之一。性能测试工具是开发和测试团队的宝贵资源,可以帮助识别和解决潜在的性能瓶颈,确保应用程序在各种负载条件下都能表现出色。本文将介绍性能测试工具的重要性、及它们…

计算机缺失vcomp120.dll文件怎么办?总结多种解决方法分享

在使用电脑过程中,难免会遇到各种问题,其中vcomp120.dll丢失问题就是其中之一。这个问题可能会给用户带来诸多不便,导致某些应用程序无法正常运行。在这篇文章中,我们将详细介绍vcomp120.dll文件的重要性,以及遇到丢失…

点灯大师的第一步 -imx6ull

实验目的 编写linux 的驱动程序,并移植到IMX6ULL -MINI开发板上,实现将 LED灯点亮,并周期性闪烁,周期间隔可调节的功能。出现的问题 2.1 点灯 2.1.1 设备加入到设备树中 设置pin 功能与 GPIO功能 PIN功能(PAD功能)又分为电气特性(…

TS 36.211 V12.0.0-下行(6)-同步信号

本文的内容主要涉及TS 36.211,版本是C00,也就是V12.0.0。

腾讯云服务器(免费1个月)申请流程

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM,轻量配置可选2核2G3M、2核8G7M和4核8G12M,CVM云服务器可选2核2G3M和2核4G3M配置,腾讯云百科txybk.com分享2024年最新腾讯云免费服务器…

如何利用ssh将手机连接电脑

首先我们需要下载ssh,因为我们没有安装 sshd 命令意思是开启ssh 下载完以后要设置密码,我设置得是 123456 开启服务,查看ip 电脑连接 ssh 刚刚得ip -p 8022 后面就连接上了 我可以在这里启动我手机上的vnc

UG装配-爆炸图

当我们将零件装配成总成的时候,通常需要绘制爆炸图来说明总成零件组成,需要用到爆炸图命令,首先点击新建爆炸,然后为爆炸图命名 然后我们可以选择编辑爆炸或者自动爆炸: 编辑爆炸是通过手动的方式选择部件&#xff0c…

计算机网络学习笔记(四)

文章目录 1.介绍一下HTTPS的流程。2.介绍一下HTTP的失败码。3.说一说你知道的http状态码。4. 301和302有什么区别?5.302和304有什么区别?6. 请描述一次完整的HTTP请求的过程。7.什么是重定向?8. 重定向和请求转发有什么区别?9.介绍…

Java研学-Servlet3.0文件上传下载

一 文件上传 1 介绍 用户选择本地文件资源保存到服务器上,Servlet需要将二进制数据以文件保存到服务器磁盘中,再将磁盘路径保存到数据库中 2 项目搭建 创建web项目,并添加对应jar包(JSTL) 3 API HttpServletRequest 方法–从请求中解析上…

DeepPurpose 生物化学深度学习库;蛋白靶点小分子药物对接亲和力预测虚拟筛选

参考: https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/107649770 https://github.com/kexinhuang12345/DeepPurpose ##安装 pip install DeepPurpose rdkitDeepPurpose包括: 数据: 关联TDC库下载,是同一作者开发的 https://blog.csdn.net/weixin_42357472/artic…

ARM CCA机密计算架构软件栈之软件组件介绍

在本节中,您将了解Arm CCA的软件组件,包括Realm World和Monitor Root World。以下图表展示了Arm CCA系统中的软件组件: 在这个图表中,世界之间的边界显示为粗虚线。由较高权限的软件强制执行的较低权限软件组件之间的边界显示为细虚线。例如,非安全EL2处的虚拟机监视器强制…

【win11 绕过TPM CPU硬件限制安装】

Qt编程指南 VX:hao541022348 ■ 下载iso文件■ 右键文件点击装载出现如下问题■ 绕过TPM CPU硬件限制安装方法■ 虚拟机安装win11 ■ 下载iso文件 选择Windows11 (multi-edition ISO)在选择中文 ■ 右键文件点击装载出现如下问题 ■ 绕过T…

Ubuntu下Lighttpd服务器安装,并支持PHP

1、说明 Lighttpd 是一个德国人领导的开源Web服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销、cpu占用率低、效能好以及丰富的模块等特点。 Lighttpd是众多OpenSource轻量级…

New!2024最新ChatGPT提示词开源项目:GPT Prompts Hub - 专注于深化对话质量和探索更复杂的对话结构

🌟 GPT Prompts Hub 🌟 欢迎来到 “GPT Prompts Hub” 存储库!探索并分享高质量的 ChatGPT 提示词。培养创新性内容,提升对话体验,激发创造力。我们极力鼓励贡献独特的提示词。 在 “GPT Prompts Hub” 项目中&#…

Docker安装sentinel控制台

1、拉取镜像,直接使用run命令,如果说本地没有镜像就会直接去远程仓库拉取: docker run -d \ -p 8858:8858 \ --name sentinel-dashboard \ --network demo \ -e AUTH_USERNAMEsentinel \ -e AUTH_PASSWORD123456 \ bladex/sentinel-dashboa…