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.mfbz.cn/a/300299.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣:438. 找到字符串中所有字母异位词 题解

Problem: 438. 找到字符串中所有字母异位词 438. 找到字符串中所有字母异位词 预备知识解题思路复杂度Code其它细节推荐博客或题目博客题目滑动窗口哈希表 预备知识 此题用到了双指针算法中的滑动窗口思想,以及哈希表的运用。c中是unordered_map。如果对此不了解的u…

江科大STM32

目录 STM32简介 STM32简介 我们主要学习的就是STM32的外设。 NVIC:内核里面用于管理中断的设备,比如配置中断优先级这些东西SysTick:内核里面的定时器,主要用来给操作系统提供定时服务的,STM32是可以加入操作系统的&am…

FlinkSQL中【FULL OUTER JOIN】使用实例分析(坑)

Flink版本:flink1.14 最近有【FULL OUTER JOIN】场景的实时数据开发需求,想要的结果是,左右表来了数据都下发数据;左表存在的数据,右表进来可以关联下发(同样,右表存在的数据,左表进…

计算机毕业设计------SSM二手交易网站

项目介绍 该项目分为前后台,前台普通用户角色,后台管理员角色。 管理员主要功能如下: 登陆,商品分类管理,商品管理,商品订单管理,用户管理等功能。 用户角色主要功能如下: 包含以下功能:查看所有商品,用户登陆注册…

2023.12.30周报

目录 摘要 ABSTRACT 一、文献阅读 1、题目 2、摘要 3、创新点 4、文章解读 1、Introduction 2、时间序列的季节趋势表征 3、 季节趋势对比学习框架 4、实验 5、结论 二、ARIMA 一、ARIMA模型的基本思想 二、ARIMA模型的数学表达式 三、差分过程 1、什么是差分…

循环队列的队空队满情况

有题目: 循环队列放在一维数组A[0....M-1]中,end1指向队头元素,end2指向队尾元素的后一个位置。假设队列两端均可进行入队和出队操作,队列中最多能容纳M-1个元素。初始时为空。下列判断队空和队满的条件中,正确的是 …

计算机毕业设计 基于Javaweb的城乡居民基本医疗信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

逆置算法和数组循环移动算法

元素逆置 概述:其实就是将 第一个元素和最后一个元素交换,第二个元素和倒数第二个元素交换,依次到中间位置。用途:可用于数组的移动,字符串反转,链表反转操作,栈和队列反转等操作。 逆置图解 …

Cadence Editor 关于画PCB相关内容

目录 一 新建PCB文件 二 指定封装库 三 导入网表 四 放置器件 五 绘制板框 六 精准定位 七 原理图与PCB的交互 八 飞线设置 九 层管理 布局布线阶段需要显示的层 十 器件位置相关 1 器件选取的基准点 2 旋转 3 对齐 4 把器件移动到底层或顶层 5 锁定与解锁 6…

【MySQL】事务管理

文章目录 什么是事务为什么会出现事务事务的版本支持事务的提交方式事务的相关演示事务的隔离级别查看与设置隔离级别读未提交(Read Uncommitted)读提交(Read Committed)可重复读(Repeatable Read)串行化&a…

IDEAVsCode常用插件

IDEA&VsCode常用插件 IDEA lombok、mybatisx 插件 Vscode Vetur —— 语法高亮、智能感知、Emmet 等,包含格式化功能, AltShiftF (格式化全文),CtrlK CtrlF(格式化选中代码,两个 Ctrl需…

区间预测 | Matlab实现CNN-LSTM-KDE的卷积长短期神经网络结合核密度估计多变量时序区间预测

区间预测 | Matlab实现CNN-LSTM-KDE的卷积长短期神经网络结合核密度估计多变量时序区间预测 目录 区间预测 | Matlab实现CNN-LSTM-KDE的卷积长短期神经网络结合核密度估计多变量时序区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.CNN-LSTM-KDE多变量时间序列区…

Ubuntu无网络解决办法

1.进入root并输入密码 sudo su 2.更新NetworkManager的配置 用vim打开NetworkManager.conf vim /etc/NetworkManager/NetworkManager.conf 将第五行 managedFalse 改为 managedTrue 。 如果本身就是True就不用改了。 3.删除NetworkManager配置 service NetworkManager st…

el-date-picker日期时间选择器限制可选的日期范围

业务场景&#xff1a;需要限制日期时间选择器可选择的日期&#xff0c;有两种模式&#xff0c; 一种是已知范围&#xff0c;只能选已知范围内的日期&#xff0c; 另一种是知道最近天数&#xff0c;只能选今天往前的天数内的日期&#xff0c;超出不能选。 <el-date-picker v-…

Redis反序列化的一次问题

redis反序列化的一次问题 1. 问题描述 springbootredis不少用&#xff0c;但是一直没遇到什么问题&#xff0c;直接代码拷贝上去就用了。这次结合spring-security&#xff0c;将自定义的spring-security的UserDetails接口的实现类SecurityUser&#xff0c;反序列化取出时报错…

【解决】hosts文件无修改权限问题

1. 以管理员身份运行命令提示符&#xff08;cmd&#xff09;&#xff1a; 2. 在cmd中输入notepad进入记事本&#xff1a; 3. 通过记事本打开hosts文件&#xff1a; 4. 修改并保存&#xff1a;

系列六、MindManager取消首字母自动大写

一、MindManager取消首字母自动大写 1.1、步骤 主页>字体>设置字体样式>格式字体>文本和大写>文本大写>无 1.2、参考 https://tieba.baidu.com/p/3752136361

UI动效设计师通往高薪之路,AE设计从基础到进阶教学

一、教程描述 UI动效设计&#xff0c;顾名思义即动态效果的设计&#xff0c;用户界面上所有运动的效果&#xff0c;也可以视其为界面设计与动态设计的交集&#xff0c;或者可以简单理解为UI设计中的动画效果&#xff0c;是UI设计中不可或缺的组成部分。现在UI设计的要求越来越…

如何写html邮件 —— 参考主流outook、gmail、qq邮箱渲染邮件过程

文章目录 ⭐前言⭐outlook渲染邮件⭐gmail邮箱渲染邮件⭐qq邮箱渲染邮件 ⭐编写html邮件&#x1f496;table表格的属性&#x1f496;文本&#x1f496;图片&#x1f496;按钮&#x1f496;背景图片 ⭐总结⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享关于 …

PEFT: 在低资源硬件上对十亿规模模型进行参数高效微调

1 引言 最近&#xff0c;深度学习的研究中出现了许多大型预训练模型&#xff0c;例如 GPT-3、BERT 等&#xff0c;这些模型可以在多种自然语言处理任务中取得优异的性能表现。而其中&#xff0c;ChatGPT 模型因为在对话生成方面的表现而备受瞩目&#xff0c;成为了自然语言处理…