C#不建议在构造函数中调用虚方法或虚属性
类别:编程学习 浏览量:671
时间:2017-6-11 C#不建议在构造函数中调用虚方法或虚属性
C#不建议在构造函数中调用虚方法或虚属性Visual Studio 中安装了Resharper插件时,如果在构造函数中调用虚方法或虚属性时,编辑器会出现如下警告:
下面通过一个实例说明
1、实例代码
using System;
namespace VirtualDemo
{
class Program
{
static void Main(string[] args)
{
var test = new SubClass();
Console.ReadKey();
}
}
class BaseClass
{
protected virtual string VirtualProperty { get; set; }
public BaseClass()
{
var p = VirtualProperty;
VirtualMethod();
}
protected virtual void VirtualMethod()
{
}
}
class SubClass : BaseClass
{
private MockClass _mockClass;
public SubClass()
{
_mockClass = new MockClass();
}
protected override string VirtualProperty
{
get { return _mockClass.MockProperty; }
set { _mockClass.MockProperty = value; }
}
protected override void VirtualMethod()
{
var p = _mockClass.MockProperty;
}
}
class MockClass
{
public string MockProperty { get; set; }
}
}
2、运行时, 在构造SubClass时会报空引用的错误。
3、报错原因
因为基类构造函数先于子类构造函数运行,而子类构造函数中初始化了一个成员类,但是基类构造函数访问虚成员时子类还没构造,所以出现了空引用报错。
您可能感兴趣
- C#不建议在构造函数中调用虚方法或虚属性
- python继承重写构造函数(Python子类继承父类构造函数详解)
- ASP.NET私有构造函数作用
- python内置函数一览表(Python面向对象程序设计构造函数和析构函数用法分析)
- 今日菜价 芥兰涨幅最高 1.33 ,花菜降幅最高 3.10(今日菜价芥兰涨幅最高)
- 今日菜价 椰菜涨幅最高 3.25 ,水空心菜降幅最高 2.58(今日菜价椰菜涨幅最高)
- 今日菜价 红三鱼涨幅最高 4.41 ,黄鳝降幅最高 5.06(红三鱼涨幅最高)
- 今日菜价 西生菜涨幅最高 6.19 ,生菜降幅最高 5.38(西生菜涨幅最高)
- 今日菜价 青豆角涨幅最高 0.70 ,菜心降幅最高 5.55(青豆角涨幅最高)
- 农村植物,龙芽草若长在您家路旁,请珍惜,它对抗癌有特效(龙芽草若长在您家路旁)
热门推荐
- python设置微信(利用python实现在微信群刷屏的方法)
- uni-app项目开发教程学习(分析uniapp如何动态获取接口域名)
- linux系统的pwd命令单词全称(WDCP是什么?Linux服务器管理系统WDCP有什么用?)
- windows下nginx 命令(win10安装配置nginx的过程)
- css鼠标点击效果怎么样(CSS实现鼠标滑过鼠标点击代码写法)
- docker配置文件详解(Docker中搭建FastDFS文件系统多图教程)
- laravel线上如何调试(解决Laravel 不能创建 migration 的问题)
- css3右侧栏伸缩效果(使用CSS3实现环形进度条效果)
- dockergitlab自动化教程(docker+gitlab+jenkins从零搭建自动化部署)
- css渐变有几种(CSS 还能这样玩?奇思妙想渐变的艺术)