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#中结构(struct)的部分初始化和完全初始化的更多相关文章
- go语言中结构struct
package main; import "fmt" //结构struct //定义Person结构 type Person struct { name string; age i ...
- C#中结构struct的使用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- c#中结构体(struct)和类(class)的区别
一.类与结构的示例比较: 结构示例: public struct Person { string Name; int height; int weight public bool overWeight ...
- C/C++中结构体struct 的使用
结构(struct) 结构是由基本数据类型构成的.并用一个标识符来命名的各种变量的组合. 结构中可以使用不同的数据类型. 1. 结构说明和结构变量定义 在Turbo C ...
- C++中结构体与类的区别(struct与class的区别)
转载来源:http://blog.sina.com.cn/s/blog_48f587a80100k630.html C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据 ...
- C/C++中结构体(struct)
c++ 里面struct可以new,另外: C++中,struct关键字与Class关键字基本是一样的,但是,有两点不同 1 struct定义的数据类型里面所有成员默认级别都是共有的,而class里面 ...
- 《挑战30天C++入门极限》C/C++中结构体(struct)知识点强化
C/C++中结构体(struct)知识点强化 在上一个教程中我们已经简单的阐述了什么是结构体了,为了进一部的学习结构体这一重要的知识点,我们今天来学习一下链表结构. 结构体可以看做是一种自定义 ...
- C语言中结构体的初始化
直接上例子: struct point { int x; int y; int z; } //常规写法 struct point pt1 = {100, 300, 200}; //初始化个数少于实际个 ...
- C#中结构与类的区别
一.类与结构的示例比较: 结构示例: public struct Person { string Name; int height; int weight public bool overWeight ...
随机推荐
- 追MM与设计模式
1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了.麦当劳和肯德基就是生产鸡翅 ...
- hdu 4006 第K大的数(优先队列)
N次操作 I是插入一个数 Q是输出第K大的数 Sample Input8 3 //n kI 1I 2I 3QI 5QI 4Q Sample Output123 # include <iostre ...
- AutoCompleteTextView,Spinner,消息提示
package com.example.wang.testapp2; import android.app.Notification; import android.app.NotificationM ...
- Java开发工程师学习路线
贴一个比较出名的Java开发工程师学习路线图 好好学习提升中 这个貌似也不是特别全,算法,设计模式,架构好像都没有
- Linux信号量同步共享内存实验.
Linux信号量同步共享内存实验. Linux信号量同步共享内存实验. 简述 程序流程 信号量和共享内存的系统函数 信号量系统函数及接口 共享内存系统函数及接口 写程序 读程序 简述 本文主要内容是自 ...
- 300万大奖:欢迎参加美团联合主办的全球AI挑战赛
2018年8月29日,由美团.创新工场.搜狗.美图联合主办的“AI Challenger 2018全球AI挑战赛”正式启动.美团CTO罗道峰.创新工场CEO李开复.搜狗CEO王小川和美图CEO吴欣鸿共 ...
- <泛> C++3D数学库设计详解 向量篇
// 注:本内容为作者原创,禁止在其他网站复述内容以及用于商业盈利,如需引用,请标明出处:http://www.cnblogs.com/lv_anchoret/ Preface 为了支持光线追踪的学习 ...
- Java 异常处理之 论 finally块何时候不走
一. exit退出异常: import java.util.Scanner; public class Test3exit { /** * @param 房山的猫 * finally什么时候不走 * ...
- .Net中的IO
C#中的IO 本文环境为: Win 10 VS 2015 .net Framework 版本 4.0 File 类 File 类是一个工具类,可以用来判断文件是否存在和方便的创建文件, 读取.写入等操 ...
- 【CF 585E】 E. Present for Vitalik the Philatelist
E. Present for Vitalik the Philatelist time limit per test 5 seconds memory limit per test 256 megab ...