C#中结构(struct)的部分初始化和完全初始化
c# 结构 部分 初始化 完全 struct
2023-09-11 14:16:51 时间
假设有这样一个值类型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# Remoting的一个简单例子
- c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Async .net 多线程 Thread ThreadPool Task .Net 反射学习
- Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库 自定义日志记录功能,按日记录,很方便 C#常量和字段以及各种方法的语法总结 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法 asp.net webapi 自定义身份验证
- XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
- C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库
- 请求大神,C#如何截取字符串中指定字符之间的部分 按指定字符串分割 一分为二 c# 去除字符串中的某个已知字符
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取
- [C#基础]c#中的BeginInvoke和EndEndInvoke
- C# 字符串拼接性能探索 c#中+、string.Concat、string.Format、StringBuilder.Append四种方式进行字符串拼接时的性能
- C# (江湖小新)- Attribute(信息的传递者)
- C#中base关键字的几种用法:base()
- C#,入门教程(07)——软件项目的源文件与目录结构
- c#中结构体和类在队列中的引用类型问题
- 基于C#实现(WinForm)P2P聊天程序【100010737】
- 用c#开发微信 (8) 微渠道 - 推广渠道管理系统 3 UI设计及后台处理
- 【C#基础1-7】C#的枚举和结构体
- 《C#零基础入门之百识百例》(十四)循环结构 for语句 -- 打印乘法表
- 《C#零基础入门之百识百例》(八十一)泛型概念介绍 -- 泛型类/结构/接口/委托
- C#-String.Format数字格式化输出 {0:N2} {0:D2} {0:C2}
- C#-类和结构(C# 编程指南)
- C#四种深拷贝方法
- 【C#/WPF】键盘事件