您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。
- 内容介绍
- 文章标签
- 相关推荐
本文共计1321个文字,预计阅读时间需要6分钟。
谜题+在C语言中如何实现+具体功能或算法
谜题
在C#中,用virtual关键字修饰的方法(属性、事件)称为虚方法(属性、事件),表示该方法可以由派生类重写(override)。虚方法是.NET中的重要概念,可以说在某种程度上,虚方法使得多态成为可能。
然而虚方法的使用却存在着很大学问,如果滥用的话势必对程序产生很大的负面影响。比如下面这个例子:
public class Puzzle { public Puzzle() { Name = "Virtual member call in constructor"; Solve(); } public virtual string Name { get; set; } public virtual void Solve() { } }
如果您的Visual Studio没有安装ReSharper,那么上面的代码不会有任何异常。但如果安装了,在构造函数内部给Name赋值和调用Solve时就会在下面产生一个波浪线,即警告:virtual member call in constructor。
这是什么原因呢?我们在构造函数中调用虚方法,碍着ReSharper什么事儿了?
其实这个警告就是提醒我们不要在非封闭类型的构造函数内调用虚方法或虚属性。但为什么这样做不合适呢?在解惑之前,我们先来了解两个概念。
本文共计1321个文字,预计阅读时间需要6分钟。
谜题+在C语言中如何实现+具体功能或算法
谜题
在C#中,用virtual关键字修饰的方法(属性、事件)称为虚方法(属性、事件),表示该方法可以由派生类重写(override)。虚方法是.NET中的重要概念,可以说在某种程度上,虚方法使得多态成为可能。
然而虚方法的使用却存在着很大学问,如果滥用的话势必对程序产生很大的负面影响。比如下面这个例子:
public class Puzzle { public Puzzle() { Name = "Virtual member call in constructor"; Solve(); } public virtual string Name { get; set; } public virtual void Solve() { } }
如果您的Visual Studio没有安装ReSharper,那么上面的代码不会有任何异常。但如果安装了,在构造函数内部给Name赋值和调用Solve时就会在下面产生一个波浪线,即警告:virtual member call in constructor。
这是什么原因呢?我们在构造函数中调用虚方法,碍着ReSharper什么事儿了?
其实这个警告就是提醒我们不要在非封闭类型的构造函数内调用虚方法或虚属性。但为什么这样做不合适呢?在解惑之前,我们先来了解两个概念。

