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.hqwc.cn/news/328093.html

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

相关文章

基于神经网络的手写汉字提取与书写评分系统研究

相关源码和文档获取请私聊QQ:3106089953 论文目录结构 目 录 摘 要 I Abstract II 目 录 IV 第1章 绪论 1 1.1. 研究背景与意义 1 1.2. 国内外研究现状 2 1.2.1. 文本定位技术研究现状 2 1.2.2. 手写汉字识别研究现状 3 1.2.3. 汉字书写质量评价方法研究现状 4 1.3. 本文所做工…

SpringBoot配置Swagger2与Swagger3

swagger是什么? 在平时开发中,一个好的API文档可以减少大量的沟通成本,还可以帮助新加入项目的同事快速上手业务。大家都知道平时开发时,接口变化总是很多,有了变化就要去维护,也是一件比较头大的事情。尤…

IDEA TODO

今天记录一个 IDEA 工具的小技巧, TODO。比如下班前有一个小功能没完善好,此时可以在响应代码上加上 TODO 注解, //密码比对 // TODO 后期需要进行md5加密,然后再进行比对 password DigestUtils.md5DigestAsHex(password.getByt…

LeetCode 42:接雨水

一、题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,…

OpenSSL——升级

OpenSSL(Open Secure Sockets Layer)是一个开源的软件库,提供了SSL和TLS协议的实现,用于加密通信。它广泛用于安全连接,例如在网站上通过HTTPS协议进行安全的数据传输. 但是从openssl申请道德证书是不安全的。对于网站…

SpringBoot学习(二)-SpringBoot Web 开发

注:此为笔者学习狂神说SpringBoot的笔记,其中包含个人的笔记和理解,仅做学习笔记之用,更多详细资讯请出门左拐B站:狂神说!!! SpringBoot Web 开发 1、静态资源 1)创建项目 2)做项目都先测试一…

关于“Python”的核心知识点整理大全64

目录 20.2.15 确保项目的安全 settings.py 20.2.16 提交并推送修改 20.2.17 创建自定义错误页面 1. 创建自定义模板 500.html settings.py settings.py 注意 views.py 20.2.18 继续开发 往期快速传送门👆(在文章最后)&#xff1a…

【Redis】非关系型数据库之Redis的介绍及安装配置

目录 前言 一、关系型数据库与非关系型数据库 1.1关系型数据库 1.2非关系型数据库 1.3两者的区别 1.4非关系型数据库产生的背景 1.5总结 二、Redis介绍 2.1Redis是什么 2.2Redis的优点 2.3Redis的使用场景 2.4那些数据适合放在缓存中 2.5Redis为什么那么快&#xf…

学习笔记——C++运算符之逻辑运算符

作用&#xff1a;用于根据表达式的真值返回真值或假值 逻辑运算符有以下符号&#xff1a; #include<bits/stdc.h> using namespace std; int main(){// 逻辑运算符 非 !int a10;//在c中&#xff0c;除了0均是真 cout<<!a<<endl;//0 cout<<!!a<<…

基于多目标粒子群算法的支配解求解,基于多目标粒子群的帕累托前沿求解,基于mopso的多目标求解,基于多目标粒子群的模糊优化算

目录 摘要 测试函数shubert 粒子群算法的原理 粒子群算法的主要参数 粒子群算法原理 基于多目标粒子群算法的支配解求解,基于多目标粒子群的帕累托前沿求解,基于mopso的多目标求解,基于多目标粒子群的模糊优化算 代码 结果分析 展望 代码下载:基于多目标粒子群算法的支配解…

OS_lab——bochs源码的编译与安装

1. 实验环境VMware station 15 Ubuntu 14.04.6 32位。2. 实验步骤2.1 安装虚拟机&#xff0c;并在虚拟机根目录下编译并安装bochs环境。 2.2 使用bochs自带工具bximage创建虚拟软驱。 2.3 编写引导程序boot.asm并用nasm编译得到引导文件boot.bin和boot.com。 2.4 修改bochs…

使用sentinel作为熔断器

什么是sentinel Sentinel&#xff0c;中文翻译为哨兵&#xff0c;是为微服务提供流量控制、熔断降级的功能&#xff0c;它和Hystrix提供的功能一样&#xff0c;可以有效的解决微服务调用产生的“雪崩”效应&#xff0c;为微服务系统提供了稳定性的解决方案。随着Hytrxi进入了维…