首页 > 其他 > 详细

C#:结构

时间:2014-04-09 14:43:15      阅读:433      评论:0      收藏:0      [点我收藏+]

1. 简单示例

// 定义结构
public struct Person
{
    public string name;
    public int age;
}

class Program
{
    static void Main(string[] args)
    {
        Person p = new Person();    // 实例化结构
        p.name = "Rain Man";
        p.age = 26;
        Console.WriteLine(p.name + ", " + p.age.ToString());    // 输出: Rain Man, 26
    }
}

2. 结构的构造函数

结构同样可以拥有构造函数,例如上例可以使用下面的程序实现;

public struct Person
{
    public string name;
    public int age;
    public Person(string n, int a)
    {
        this.name = n;
        this.age = a;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Person p = new Person("Rain Man", 26);            // 实例化并调用构造函数
        Console.WriteLine(p.name + ", " + p.age.ToString());    // 输出: Rain Man, 26
    }
}

3. 结构的实例化可以不使用 new 关键字

public struct Person
{
    public string name;
    public int age;
    public Person(string n, int a)
    {
        this.name = n;
        this.age = a;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Person p;    // 由于未使用new关键字,因此不会调用Person的构造函数
        p.name = "Rain Man";
        p.age = 26;

        Console.WriteLine(p.name + ", " + p.age.ToString());    // 输出: Rain Man, 26
    }
}

4. 结构的运算符重载

public struct Person
{
    public string name;
    public int age;
    public Person(string n, int a)
    {
        this.name = n;
        this.age = a;
    }

    // 运算符重载必须为:static
    // 函数的返回类型为: Person
    // 函数的参数类型为: Person
    public static Person operator +(Person p1, Person p2)
    {
        Person p;
        p.name = p1.name + " and " + p2.name;
        p.age = p1.age + p2.age;
        return p;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Person p1 = new Person("Tom", 26);
        Person p2 = new Person("Jerry", 10);

        Person p = p1 + p2;   // 使用运算符(+)重载
        Console.WriteLine(p.name + ", " + p.age.ToString());    // 输出: Tom and Jerry, 36
    }
}

5. 结构与类的区别

从上面的示例可以看出结构和类很相似,一般来讲结构能够实现的功能,类都可以实现。 结构体作为一种自定义的数据类型,具有以特点:

  • 值类型,相比“类”而言对内存开销较小;
  • 不能够继承,不能够作为一个类的“基类”;
  • 结构体继承自object类。

C#:结构,布布扣,bubuko.com

C#:结构

原文:http://www.cnblogs.com/rainman/p/3652943.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!