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

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

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

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

原始的代码和错误如下:

C#开发 降.NET版本问题解决笔记_第1张图片

如果在具有自动属性的结构上看到此错误,只需通过执行以下: 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是所有结构的基类。

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

C#开发 降.NET版本问题解决笔记_第2张图片

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

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

你可能感兴趣的:(C#,c#,.net,笔记)