C#:接口中如何将某个值类型的字段传null?

在实际对接第三方接口时,偶尔会有一些字段在某些情况下是不需要传值的。那如何处理呢?

有两种方法:

1、将值类型改为可空类型;

2、定义基类,基类包含所有必须要传的字段,子类则加入偶尔需要传的字段。

下面以某个场景为例来说明:

有一个接口,传 x  和  y 两个int参数。 x 有时可不传,y 必须要传。在不传x的情况下如何处理?
 

using System;
using System.IO;

namespace Study
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //有一个接口,传 x  和  y 两个int参数。 x 可传可不传,y 必须要传。在不传x的情况下如何处理
            var orginal = new ParaOrginal() { x = 0, y = 1 };
            var way1 = new ParaWay1() { y = 1 };
            var way2 = new ParaWay2Base() { y = 1 };

            Console.WriteLine("原 始  类:\n{0}\n", Newtonsoft.Json.JsonConvert.SerializeObject(orginal));
            Console.WriteLine("第1种方法:将 x 改为可空类型:\n{0}\n", Newtonsoft.Json.JsonConvert.SerializeObject(way1));
            Console.WriteLine("第2种方法:设计基类:\n{0}", Newtonsoft.Json.JsonConvert.SerializeObject(way2));

            Console.Read();
        }
    }

    /// <summary>
    /// 原始类
    /// </summary>
    public class ParaOrginal
    {
        public float x { get; set; }

        public float y { get; set; }
    }

    /// <summary>
    /// 第1种方法:将 x 改为可空类型
    /// </summary>
    public class ParaWay1
    {
        public float? x { get; set; }

        public float y { get; set; }
    }

    /// <summary>
    /// 第2种方法:设计基类。包含所有必须要传的字段
    /// </summary>
    public class ParaWay2Base
    {
        public float y { get; set; }
    }

    /// <summary>
    /// 偶尔要传的字段
    /// </summary>
    public class ParaWay2: ParaWay2Base
    {
        public float x { get; set; }
    }
}

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-19 15:56:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-19 15:56:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-19 15:56:02       82 阅读
  4. Python语言-面向对象

    2024-01-19 15:56:02       91 阅读

热门阅读

  1. mysql 自动生成随机数

    2024-01-19 15:56:02       60 阅读
  2. Mysql 报错Parameter ‘@xxx‘ must be defined

    2024-01-19 15:56:02       50 阅读
  3. Echarts 图表自适应

    2024-01-19 15:56:02       51 阅读
  4. User表设计

    2024-01-19 15:56:02       50 阅读
  5. 算法-排序

    2024-01-19 15:56:02       42 阅读
  6. Mysql旧数据处理常用sql模板·持续更新...

    2024-01-19 15:56:02       52 阅读
  7. 中文论文写作过程中的-GPT命令----未完待续

    2024-01-19 15:56:02       52 阅读
  8. 生成指定位数的编号,不够的在左边补0

    2024-01-19 15:56:02       48 阅读
  9. 如何学习一些需要算法的程序

    2024-01-19 15:56:02       54 阅读
  10. Js面试之防抖与节流

    2024-01-19 15:56:02       50 阅读
  11. 前端实现汉堡菜单

    2024-01-19 15:56:02       52 阅读
  12. 编写递归算法,计算二叉树T中叶子结点的数目。

    2024-01-19 15:56:02       49 阅读