C#中结构(struct)的部分初始化和完全初始化实例分析

作者:shichen2014 时间:2021-11-01 16:33:36 

本文实例分析了C#中结构(struct)的部分初始化和完全初始化,分享给大家供大家参考。具体分析如下:

假设有这样一个值类型struct,如下所示:


public struct Size
{
   public int Length;
   public int Width;
   public int Area()
   {
     return Length*Width;
   }
}

一、客户端,给所有struct字段初始化后调用方法


class Program
{
   static void Main(string[] args)
   {
     Size size;
     size.Length = 10;
     size.Width = 5;
     Console.WriteLine(size.Area());
     Console.ReadKey();
   }
}

结果:50

二、客户端,给部分struct字段初始化


class Program
{
   static void Main(string[] args)
   {
     Size size;
     size.Length = 10;
     Console.WriteLine(size.Area());
     Console.ReadKey();
   }
}

结果:报错,使用了未赋值的局部变量。 
可见:如果想调用struct实例的任何方法,需要给struct的所有字段初始化。

三、客户端,通过构造函数初始化struct


class Program
{
   static void Main(string[] args)
   {
     Size size = new Size();
     Console.WriteLine(size.Area());
     Console.ReadKey();
   }
}

结果:0
在这里:通过struct构造函数创建实例,实际上是给struct的所有字段赋上了初值0。

总结:

在调用struct实例方法之前,必须给struct的所有字段赋上初值,即要求完全初始化,部分初始化是不允许的。要么通过"struct实例.字段名"给所有字段显式赋值,要么通过struct构造函数,给所有字段赋上默认值。

希望本文所述分析对大家C#程序设计的学习有所帮助。

标签:C#,结构,初始化
0
投稿

猜你喜欢

  • 将文件夹下所有文件输出到日志文件中 c#递归算法学习示例

    2023-04-08 20:36:22
  • 详解spring cloud ouath2中的资源服务器

    2022-09-24 15:36:43
  • mybatis-plus自动填充插入更新时间有8小时时差

    2021-07-26 07:18:40
  • Maven管理SpringBoot Profile详解

    2022-03-20 09:57:45
  • Maven的安装配置详解

    2023-11-24 08:52:05
  • Java concurrency线程池之线程池原理(二)_动力节点Java学院整理

    2023-11-28 23:43:18
  • MyBatis中使用$和#所遇到的问题及解决办法

    2023-03-25 12:27:55
  • IDEA中的.iml文件和.idea文件夹

    2023-11-23 11:47:19
  • java中获取json的所有key方法

    2023-10-15 06:15:26
  • Java代码块与代码加载顺序原理详解

    2023-06-03 12:56:42
  • SpringBoot整合Echarts实现用户人数和性别展示功能(详细步骤)

    2023-02-22 00:31:59
  • 浅谈Java中各种修饰符与访问修饰符的说明

    2022-10-07 00:49:52
  • Java的RxJava库操作符的用法及实例讲解

    2021-12-14 22:31:41
  • Java Swing实现简单的体重指数(BMI)计算器功能示例

    2022-12-16 09:34:56
  • 关于Maven的使用,这些你都真的了解么

    2022-01-02 14:19:08
  • 微信公众号 网页授权登录及code been used解决详解

    2023-02-06 18:49:00
  • springboot集成swagger3与knife4j的详细代码

    2023-11-27 18:22:58
  • IDEA与模拟器安装调试失败的处理方法:INSTALL_PARSE_FAILED_NO_CERTIFICATES

    2022-08-25 13:57:53
  • 解析Mybatis SqlSessionFactory初始化原理

    2022-07-09 04:24:05
  • Java数据结构超详细分析二叉搜索树

    2022-12-01 01:34:20
  • asp之家 软件编程 m.aspxhome.com