• 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;
            }
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

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

    在这里插入图片描述

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

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

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

    例如:

    // 构造函数
        public 你的构造方法()
        {
            displayText = "电力曲线图";
    
            sidebarText = "EVADA";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    3.返回值问题 语法(get => value;
    get => curveEntity._dataSource;
    
    • 1

    以上代码是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; }
    
    • 1
    4.条件成员访问表达式(null 条件运算符 ?.
    if (data?.Count > 1)
    
    • 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)
    
    • 1

    再例如:

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

    修改为:

    if (DataRefreshed != null)
    {
        DataRefreshed(this, EventArgs.Empty);
    }
    
    • 1
    • 2
    • 3
    • 4

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

  • 相关阅读:
    Eclipse+Java+Swing实现学生信息管理系统-TXT存储信息
    1028 List Sorting
    Java工厂设计模式
    iso9001认证申请条件
    1022 Digital Library
    springboot基于web的摩托车销售系统的设计与实现毕业设计源码031706
    Cadence 设计快速入门
    医学心脏数据集分割建模实战
    华为OD 身高体重排序(100分)【java】A卷+B卷
    [大家的项目] cargo-offline 命令
  • 原文地址:https://blog.csdn.net/letterljhx/article/details/133342252