2021-06-21

C# 关于Struct的思考

Struct的理论看过好一些,可是工作上基本没有应用过,Class倒处处都有。难道Struct就没有什么使用价值吗?搜了一下如何在类和结构中做出选择?

✔️ 如果类型的实例很小且通常寿命很短或通常嵌入其他对象中,请考虑定义结构而不是类。

❌ 避免定义结构,除非该类型具有以下所有特征:

  • 它在逻辑上表示单个值,类似于原始类型(intdouble等)。

  • 它的实例大小低于 16 字节。

  • 它是不可变的。

  • 它不必经常装箱。

 在开发软件时,常常会有页面弹窗,而主页面经常需要传一些参数到窗体里面,窗体也只是用这些参数来搜出其他数据展示,或进行数据保存时使用,也就是只读那些入参。虽然通过构造函数传参,可以传多个参数,但一般多个参数还是封装为一个整体较好,如果这些参数在业务上可以看成一个小的逻辑单元,封装成Struct应该更好。

eg:函数传参,struct会多复制一遍,所以加上ref。

using System;using System.Windows.Forms;namespace WindowsFormsApp1{ public partial class Form1 : Form {  private FundStruct s_fundStruct;  public Form1()  {   InitializeComponent();  }    public Form1(ref FundStruct fundStruct)  {   InitializeComponent();   s_fundStruct = fundStruct;  }  private void Form1_Load(object sender, EventArgs e)  {   this.textBox1.Text = s_fundStruct.Code;   this.textBox2.Text = s_fundStruct.ShortName;   ...  } } public struct FundStruct {  /// <summary>  /// 编码  /// </summary>  internal readonly string Code;  /// <summary>  /// 内码编号  /// </summary>  internal readonly int Number;  /// <summary>  /// 简称  /// </summary>  internal readonly string ShortName;  /// <summary>  /// 全称  /// </summary>  internal readonly string LongName;  internal FundStruct(string code, int number, string shortName, string longName)  {   Code = code ?? throw new ArgumentNullException(nameof(code));   Number = number;   ShortName = shortName ?? throw new ArgumentNullException(nameof(shortName));   LongName = longName ?? throw new ArgumentNullException(nameof(longName));  } }}

 









原文转载:http://www.shaoqun.com/a/818642.html

跨境电商:https://www.ikjzd.com/

总裁桌子底下吸允花蜜 他埋头她腿间吮嫩软:http://www.30bags.com/m/a/249809.html

一位少妇口述她换偶经历:http://lady.shaoqun.com/a/83932.html

prime day:https://www.ikjzd.com/w/131.html

口述实录:刺激!我沉迷在换妻游戏中不可自拔:http://lady.shaoqun.com/a/250697.html


Struct的理论看过好一些,可是工作上基本没有应用过,Class倒处处都有。难道Struct就没有什么使用价值吗?搜了一下如何在类和结构中做出选择?✔️如果类型的实例很小且通常寿命很短或通常嵌入其他对象中,请考虑定义结构而不是类。❌避免定义结构,除非该类型具有以下所有特征:它在逻辑上表示单个值,类似于原始类型(int,double等)。它的实例大小低于16字节。它是不可变的。它不必经常装箱。在开
男生强迫女生把震动棒放裤子里 在教室捡到校花遥控器:http://lady.shaoqun.com/a/246925.html
浙江一对男女正准备在车上发生性关系,突然被"抓住并强奸":http://www.30bags.com/a/446882.html
在亚马逊之外,2021年最应该打入的 4 个美国电商市场:https://www.ikjzd.com/articles/145885
蜜芽宝贝官网:https://www.ikjzd.com/w/1320
来这3个日本高频消费场景转一圈,你就知道他们在亚马逊到底爱买啥! :https://www.ikjzd.com/articles/122009
亚马逊折扣码有哪些你容易忽略的?:https://www.ikjzd.com/articles/122008
关于listing被封:冻结原因、解封做法、变体滥用……:https://www.ikjzd.com/articles/121750
三亚秀都魔幻门票多少钱?团购票价优惠吗:http://www.30bags.com/a/219381.html
男人10句狠话表明你已是爱情过去式男人狠话爱情:http://lady.shaoqun.com/a/34754.html
手机扫描条形码不能辨商品真伪:http://lady.shaoqun.com/m/a/50657.html
强壮的公么让我次次高潮 口述我和公忍不住发生了关系:http://lady.shaoqun.com/m/a/247590.html
亚马逊加拿大站点将于7月1日收取销售税:https://www.ikjzd.com/articles/145886

No comments:

Post a Comment