结构与类的区别

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 07:31 点击:

不能为结构声明默认构造函数(一个无参数的构造函数).因为编译器始终会帮我们生成一个.在类中只有在没有自己写一个构造函数的前提下,编译器才会帮我们生成一个默认构造函数.在编译器为结构生成的默认构造函数中,总是将字段设为0,false或者null,这和类是一样的.然而,在自己写的一个构造函数中(再次提醒,这必须是一个非默认的构造函数),必须自己负责初始化所有字段,编译器不会再帮我们初始化它.这意味着必须在结构的所有非默认构造函数中显式地初始化所有字段,否则会造成编译时错误.例如,假定把Time换成一个类,那么下面的例子是能通过编译的,而且seconds会被悄悄地初始化为0.但是,由于Time是一个结构,所以它无法通过编译:
struct Time
            {
                public Time(int hh, int mm)
                {
                    hours = hh;
                    minutes = mm;
                    //seconds = 0;
                }
                public int hours, minutes, seconds;
 
            }
修改:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                Time time0 = new Time();
                Console.WriteLine("{0}:{1}:{2}", time0.hours, time0.minutes, time0.seconds);
                Time time1 = new Time(6, 25);
                Console.WriteLine("{0}:{1}:{2}", time1.hours, time1.minutes, time1.seconds);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
 
 
 
            struct Time
            {
                public Time(int hh, int mm)
                {
                    hours = hh;
                    minutes = mm;
               

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 浅析.NET下XML数据访问新机制
    • asp.net 面试+笔试题目第1/2页
    • C# 邮件地址是否合法的验证
    • C#高级编程:数据库连接[1]
    • asp.net 设置GridView的选中行的实现代码
    • 经典C++程序1
    • IIS 自动回收导致后台定时器失效的问题解决
    • ASP.NET GridView列表代码示例
    • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1