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);

修改为:文章来源地址https://www.uudwc.com/A/Y63dk/

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

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

原文地址:https://blog.csdn.net/letterljhx/article/details/133342252

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年10月12日 20:51
智算创新,美格智能助力智慧支付加速发展
下一篇 2023年10月12日 21:51