AI智能
改变未来

C#学习遇到的问题


1.C#的几种注释方法

// 单行注释/**/ 块注释///说明注释,注释以后可以自动生成说明文档档#region  折叠注释,可以将代码折叠#endregion只是#region 所在行后面的文字是注释文字,而其它的#region和#endregion之内的行代码是有效的,仅仅起折叠作用

2.vs(visual studio 2019)如何恢复默认设置

流程如下:工具 -> 导入和导出设置 -> 重置所有设置

然后就可以重置vs2019 的布局了!

3.C#中using关键字的作用及用法

using的用途和使用技巧:
  1. 引用命名空间

引用命名空间,这样可以在程序中引用命名空间的类型而不必指定详细的命名空间.

a) 比如在程序中常用的using System.Text;

b) 引用命名空间,并不等于编译器编译时加载该命名空间所在的程序集,程序集的加载决定于程序中对该程序集是否存在调用操作,如果代码中不存在任何调用操作则编译器将不会加载using引入命名空间所在空间的程序集.因此,在源文件开头,引入多个命名空间,并非加载多个程序集,不会造成’过度引用’的弊端

  1. 为命名空间或类型创建别名

​ 为命名空间或类型创建别名

创建别名的原因在于同一个文件中引入不同的命名空间中包括了相同名称的类型。为了避免出现名称冲突,可以通过设定别名来解决.

例:using SGPoint = ShapMap.Geometries.Point

Using SGPoint = System.Drawing.Point

其实也可以通过类型全名称来加以区分,但是最佳解决方案还是使用using

  1. 使用using语句

​ using语句允许程序员指定使用资源的对象应当何时释放资源.using语句中使用的对象必须实现IDisposable接口.此接口提供了Dispose方法,该方法将释放此对象的资源

使用规则:

a) using语句只能用于实现了IDisposable接口的类型,禁止为不支持IDisposable接口类型使用using语句,否则会出现编译错误

b) using语句适用于清理单个非托管资源的情况,而多个非托管对象的清理最好以try-finaly来实现,因为嵌套using语句可能存在隐藏的Bug.内层using块引发异常时,将不能释放外层using块的对象资源

using实质:

​ 在程序编译阶段,编译器会自动将using语句生成try-finally语句,并在finally块中调用对象的Dispose方法,来清理资源.所以,using语句等效于try-finally语句

4.C#关键字之overload、override、new详解。

重载、重写、覆写,分别指的是overload、override、new。

一、override重写:

是在子类中重写父类中的方法,两个函数的函数特征(函数名、参数类型与个数)相同。用于扩展或修改继承的方法、属性、索引器或事件的抽象或虚拟实现。提供从基类继承的成员的新实现,而通过override声明重写的方法称为基方法。

注意事项:

1.重写基方法必须具有与override方法相同的签名。
2.override声明不能更改virtual方法的可访问性,且override方法与virtual方法必须具有相同级别访问修饰符。
3.不能用new、static、virtual修饰符修改override方法。
4.重写属性声明必须指定与继承的属性完全相同的访问修饰符、类型和名称。
5.重写的属性必须是virtual、abstract或override。
6.不能重写非虚方法或静态方法。
7.父类中有abstract,那么子类同名方法必定有override,若父类中有 virtual方法,子类同名方法不一定是override,可能是overload。
8.override必定有父子类关系。

二、overload重载:

在同一个类中方法名相同、参数或返回值不同的多个方法即为方法重载。

注意事项:

1.出现在同一个类中。
2.参数列表不同或返回类型和参数列表都不同,只有返回类型不同不能重载。(参数列表包括参数个数和参数类型)

三、overwrite覆写:

用new实现。在子类中用 new 关键字修饰定义的与父类中同名的方法,也称为覆盖,覆盖不会改变父类方法的功能。

四、 C#关键字之重写,重载,覆盖的实例:
//代码实例演示class Parent{public void F(){Console.WriteLine(\"Parent.F()\");}public virtual void G() //抽象方法{Console.WriteLine(\"Parent.G()\");}public int Add(int x, int y){return x + y;}public float Add(float x, float y) //重载(overload)Add函数{return x + y;}}class ChildOne:Parent //子类一继承父类{new public void F() //覆写(overwrite)父类函数{Console.WriteLine(\"ChildOne.F()\");}public override void G() //重写(override)父类虚函数,主要实现多态{Console.WriteLine(\"ChildOne.G()\");}}class ChildTwo:Parent //子类二继承父类{new public void F(){Console.WriteLine(\"ChildTwo.F()\");}public override void G(){Console.WriteLine(\"ChildTwo.G()\");}}class Program{static void Main(string[] args){Parent childOne = new ChildOne();Parent childTwo = new ChildTwo();//调用Parent.F()childOne.F();childTwo.F();//实现多态childOne.G();childTwo.G();Parent load = new Parent();//重载(overload)Console.WriteLine(load.Add(1, 2));Console.WriteLine(load.Add(3.4f, 4.5f));Console.Read();}}

5.c#之vs2019的重新生成解决方案”和\”生成解决方案\”的学习

解决方案是什么:

解决方案是来若干个有联系的项目的组合。你生成解决方案,就会把所有自的项目都百给bulid了,省的你一个一个去生成。

比如解决方案里有3个项目,a,b,c,a项目用到度b项目,b项目用到c项目,它会按顺序问给你生成c->b-a,然后把c,b的答dll都放到a的bin目录下。

重新生成解决方案:

重新生成解决方案顾名思义就是重新编译每个文件,这样速度要满些,但可靠度高一些。“重新生成”是对所有的文件都重新生成你在解决方案上右键,选择重新生成解决方案的话。VS会自动帮你都生成一遍的。也就是Bin目录里的东西。

生成解决方案:

而生成解决方案则在上次编译的基础上编译那些修改过了的文件,而没有修改的文件不编译,类似于数据库里的增量备份。“生成”的时候,只对你改动过的文件重新生成,没有改动过的文件不会重新生成;

清理解决方案:

最后提一下“清理解决方案”,这是在“重新生成解决方案”和“生成解决方案”下面的一个选项,选择“清理解决方案”将删除所有中间文件和输出文件,只留下项目文件和组件文件,以后可以从这些文件生成中间文件和输出文件的新实例。其实“清理解决方案”这个过程是在“重新生成解决方案”之前要执行的一个步骤,至此,这三者分别的作用的概念就了解完成了。

总结:

这个MSDN上有介绍,简单地说:
生成解决方案:已经是最新的就跳过。
重新生成解决方案:先把已经生成好的全部删掉,然后再生成一遍。

6.VS2019下C#解决方案生成的文件都是什么作用?(bin文件、obj文件、properties文件、.cs文件、 .csproj文件、.config文件等)

文件/文件夹 作用 介绍
Bin目录 用来存放编译的结果 bin是二进制binrary的英文缩写,因为最初C编译的程序文件都是二进制文件,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。
obj 用于存放编译过程中生成的中间临时文件 obj是object的缩写,其中都有debug和release两个子目录,分别对应调试版本和发行版本,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置.
Properties文件夹 定义程序集的属性 项目属性文件夹 一般只有一个 AssemblyInfo.cs 类文件,用于保存程序集的信息,如名称,版本等,这些信息一般与项目属性面板中的数据对应,不需要手动编写。
.config文件 Web.config文件向它们所在的目录和所有子目录提供配置信息
.cs文件 类模块代码文件 源代码都写在这里,主要就看这里的代码。
.csproj文件 C#项目文件 创建应用程序所需的引用、数据连接、文件夹和文件的信息。用VS打开这个文件就可以直接打开这个项目,自动生成,不需要看。
.sln 在开发环境中使用的解决方案文件 它将一个或多个项目的所有元素组织到单个的解决方案中。此文件存储在父项目目录中.解决方案文件,他是一个或多个.proj(项目)的集合
.aspx .aspx 是网页文件,HTML代码写在这里面 Web窗体页由两部分组成:视觉元素(HTML、服务器控件和静态文本)和该页的编程逻辑。VS将这两个组成部分分别存储在一个单独的文件中,视觉元素在.aspx文件中创建。
.aspx.cs Web窗体页的编程逻辑位于一个单独的类文件中 该文件称作代码隐藏类文件(.aspx.cs)
.aspx.resx/.restx 资源文件 资源是在逻辑上有应用程序部署的任何非可执行数据,通过在资源文件中存储数据,无需重新编译整个应用程序即可更改数据。
.pdb PDB (程序数据库) 文件保持着调试和项目状态信息,从而可以对程序的调试配置进行增量链接。
.suo 解决方案用户选项 记录所有将与解决方案建立关联的选项,以便在每次打开时,它都包含您所做的自定义设置。

后记:

文章持续更新,如果喜欢,请拿起你们可爱的小手,给我点个赞吧!

PDB (程序数据库)                    | 文件保持着调试和项目状态信息,从而可以对程序的调试配置进行增量链接。 |

| .suo | 解决方案用户选项 | 记录所有将与解决方案建立关联的选项,以便在每次打开时,它都包含您所做的自定义设置。 |

后记:

文章持续更新,如果喜欢,请拿起你们可爱的小手,给我点个赞吧!

点赞是一种积极的生活态度,赞一个吧!

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » C#学习遇到的问题