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 ...
随机推荐
- 怎么区分MSSQL中nvarchar和varchar的区别?
怎么区分MSSQL中nvarchar和varchar的区别呢?下面两段代码可以帮你看到他们的区别. declare @s Nvarchar(10) set @s='那么相当于abcd可以存储多少个汉字 ...
- #NodeJS 服务器基本模板
基本server配置 cookie / session / get数据 / post数据 / 请求方法 const express=require('express'); const static=r ...
- C++ 内存分配(new,operator new)详解
参考:C++ 内存分配(new,operator new)详解 如何限制对象只能建立在堆上或者栈上 new运算符和operator new() new:指我们在C++里通常用到的运算符,比如A* a ...
- HTTP Status 500 - Request processing failed; nested exception is org.apache.ibatis.binding.BindingException
在使用Maven工程管理工具整合SSM框架时,Mybatis使用逆向工程生成的pojo,mapper接口及映射文件,把mapper接口和映射文件放在DAO工程的同一级src/main/java目录下. ...
- hdoj1233 还是畅通工程(Prime || Kruskal)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1233 思路 最小生成树问题,使用Prime算法或者Kruskal算法解决. 代码 Prime算法: # ...
- CLR基础
一.各个语言的长处 ①非托管C/C++可对系统进行低级控制.可完全按照自己的想法管理内存,必要时方便地创建线程②使用Microsoft Visual Basic 6.0可以快速生成UI应用程序,并可以 ...
- mysql store procedure 存储过程
参考资料: 1.http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html 2.https://dev.mysql.com/doc/refman/5.7/ ...
- Mac 上关于TFTP Server 软件的使用
软件下载地址 http://ww2.unime.it/flr/tftpserver/ 软件下载后进行安装,打开软件, 如果出现如下图所示情况 然后当你点击蓝色的Fix 按钮时,如果又出现如下提示 这时 ...
- 安装部署VMware vSphere 5.5文档 (6-4) 安装配置DB数据库
部署VMware vSphere 5.5 实施文档 ########################################################################## ...
- 利用python实现新浪微博爬虫
第一个模块,模拟登陆sina微博,创建weiboLogin.py文件,输入以下代码: #! /usr/bin/env python # -*- coding: utf-8 -*- import sys ...