C#开发 降.NET版本问题解决笔记

C#开发 降.NET版本问题记录

以下都是我在使用.NET4.7.2版本开发控件完成后又将控件代码降位使用.NET4.5时所遇到的问题,和解决方式

  1. Struct构造函数:“必须将字段完全分配,然后控制权才能返回给调用者。”

原始的代码和错误如下:

在这里插入图片描述

如果在具有自动属性的结构上看到此错误,只需通过执行以下: this()示例从已参数化的结构中调用无参数构造函数:

public struct MyPoint
    {
        public decimal X { get; set; }

        public decimal Y { get; set; }

        public MyPoint(decimal x, decimal y) : this()
        {
            X = x;
            Y = y;
        }

    }

通过从构造函数声明中调用:this(),您可以让ValueType基类初始化自动属性的所有后备字段。我们无法在构造函数上手动执行此操作,因为我们无权访问自动属性的后备字段。
ValueType是所有结构的基类。

如此问题便可以得到解决。

在这里插入图片描述

2.赋值问题
	public string displayText { get; set; } = "电力曲线图";

    public string sidebarText { get; set; } = "EVADA";

像以上代码这样给变量赋值,在低版本中是不支持的,所以我们将全部改为在构造方法中赋值。

在.NET Framework 4.5 中,使用属性初始化器(Property Initializers)是不支持的,因此需要在构造函数中初始化这些属性。

例如:

// 构造函数
    public 你的构造方法()
    {
        displayText = "电力曲线图";

        sidebarText = "EVADA";
    }
3.返回值问题 语法(get => value;
get => curveEntity._dataSource;

以上代码是C# .NET4.7.2版本下的代码,【 get => curveEntity._dataSource;】在.NET 4.5版本编译无法通过

在.NET Framework 4.5 版本中,使用 C# 6.0 引入的简化属性(Expression-bodied property)语法(get => value;)是不支持的。需要使用传统的 get 语法。以下是.NET Framework 4.5 兼容的代码:

get { return curveEntity._dataSource; }
4.条件成员访问表达式(null 条件运算符 ?.
if (data?.Count > 1)

以上代码是C# .NET4.7.2版本下的代码,【if (data?.Count > 1)】在.NET 4.5版本编译无法通过

在.NET Framework 4.5 中,不支持条件成员访问表达式(null 条件运算符 ?.)。可以使用传统的条件判断语句来替代。以下是.NET Framework 4.5 兼容的代码:

if (data != null && data.Count > 1)

再例如:

DataRefreshed?.Invoke(this, EventArgs.Empty);

修改为:

if (DataRefreshed != null)
{
    DataRefreshed(this, EventArgs.Empty);
}

我是将军,我一直都在,。!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值