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

前言

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

重点先知

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

关键字分类

保留字

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

abstract as base bool break
byte case catch char checked
class const continue decimal default
delegate do double else enum
event explicit extern false finally
fixed float for foreach goto
if implicit in int interface
internal is lock long namespace
new null object operator out
override params private protected public
readonly ref return sbyte sealed
short sizeof stackalloc static string
struct switch this throw true
try typeof uint ulong unchecked
unsafe ushort using virtual void
volatile while

上下文关键字

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

add and alias ascending args
async await by descending dynamic
equals from get global group
init into join let 托管(函数指针调用约定)
nameof nint not notnull nuint
on or orderby partial(类型) partial(方法)
record remove select set 非托管(函数指针调用约定)
unmanaged(泛型类型约束) value var when(筛选条件) where(泛型类型约束)
where(查询子句) with yield

对话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)
int class
float int
double float
char double
string char
bool string
void bool
public void
private public
protected private
static protected
new static
if new
else if
switch else
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 乡亲们,今天的分享就到此结束了,喜欢本文的朋友,给博主点个免费的赞吧,感谢诸位道友的支持,爱你们!

相关推荐

  1. c++中级篇——面向切片编程

    2024-01-07 18:48:01       42 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-07 18:48:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-07 18:48:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-07 18:48:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-07 18:48:01       20 阅读

热门阅读

  1. lambda表达式使用和示例

    2024-01-07 18:48:01       31 阅读
  2. QT 的信号和槽机制实现原理的常见问题问答

    2024-01-07 18:48:01       40 阅读
  3. 【SQL】delete 与 truncate 命令的区别

    2024-01-07 18:48:01       38 阅读
  4. Spring Security之授权

    2024-01-07 18:48:01       36 阅读
  5. socket在两个线程之间进行通信

    2024-01-07 18:48:01       37 阅读
  6. 软件工程_复习

    2024-01-07 18:48:01       30 阅读
  7. LeetCode 第379场周赛个人题解

    2024-01-07 18:48:01       37 阅读
  8. vue3 里的 ts 类型工具函数

    2024-01-07 18:48:01       40 阅读
  9. SQL注入总结

    2024-01-07 18:48:01       45 阅读