C#结构体特性实例分析

 更新时间:2015年09月28日 17:22:22   作者:清清飞扬  
这篇文章主要介绍了C#结构体特性,以实例形式较为详细的分析了C#结构体的功能、定义及相关特性,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C#结构体特性。分享给大家供大家参考。具体如下:

结构体的定义:

结构体也可以象类一样可以单独定义.

class a{};
struct a{};

结构体也可以在名字前面加入控制访问符.

public struct student{};
internal struct student{};

如果结构体student没有publice或者internal的声明 类program就无法使用student结构定义 obj对象

如果结构体student的元素没有public的声明,对象obj就无法调用元素x
因为默认的结构体名和元素名是*******类型

程序:

using System;
public struct student
{
  public int x;
};
class program
{
 public static void Main()
 {
  student obj=new student();
  obj.x=100;  
 }
};

在结构体中也可以定义静态成员与类中一样,使用时必须用类名,或结构名来调用不属于实例,声明时直接定义.

程序:

using System;
public struct student
{
  public static int a = 10;
};
class exe
{
 public static void Main()
 {
  Console.WriteLine( student.a = 100);
 }
};

或:

using System;
class base
{
 public struct student
 {
  public static int a = 10;
 };
}
class exe
{
 public static void Main()
 {
  Console.WriteLine( base.student.a = 100);
 }
};

在结构体中可以定义构造函数以初始化成员,但不可以重写默认无参构造函数和默认无参析构函数

程序:

public struct student
{
  public int x;
  public int y;
  public static int z;
  public student(int a,int b,int c)
  {
   x=a;
   y=b;
   student.z=c;
  }
};

在结构体中可以定义成员函数。

程序:

public struct student
{
  public void list()
  {
   Console.WriteLine("这是构造的函数");
  }
};

结构体的对象使用new运算符创建(obj)也可以直接创建单个元素赋值(obj2)这是与类不同的因为类只能使用new创建对象

程序:

public struct student
{
  public int x;
  public int y;
  public static int z;
  public student(int a,int b,int c)
  {
   x=a;
   y=b;
   student.z=c;
  }
};
class program
{
 public static void Main()
 {
 student obj=new student(100,200,300);
 student obj2;
 obj2.x=100;
 obj2.y=200;
 student.z=300;
 }
}

在使用类对象和函数使用时,使用的是引用传递,所以字段改变
在使用结构对象和函数使用时,是用的是值传递,所以字段没有改变

程序:

using System;
class class_wsy
{
 public int x;
}
struct struct_wsy
{
 public int x;
}
class program
{
 public static void class_t(class_wsy obj)
 {
  obj.x = 90;
 }
 public static void struct_t(struct_wsy obj)
 {
  obj.x = 90;
 }
 public static void Main()
 {
  class_wsy obj_1 = new class_wsy();
  struct_wsy obj_2 = new struct_wsy();
  obj_1.x = 100;
  obj_2.x = 100;
  class_t(obj_1);
  struct_t(obj_2);
  Console.WriteLine("class_wsy obj_1.x={0}",obj_1.x);
  Console.WriteLine("struct_wsy obj_2.x={0}",obj_2.x);
  Console.Read();
 }
}

结果为:

class_wsy obj_1.x=90
struct_wsy obj_2.x=100

希望本文所述对大家的C#程序设计有所帮助。

相关文章

  • C#适用于like语句的SQL格式化函数

    C#适用于like语句的SQL格式化函数

    这篇文章主要介绍了C#适用于like语句的SQL格式化函数,可实现对字符串进行sql格式化,并且符合like查询的格式,非常实用,需要的朋友可以参考下
    2014-10-10
  • WPF调用ffmpeg实现屏幕录制

    WPF调用ffmpeg实现屏幕录制

    这篇文章主要为大家详细介绍了WPF如何调用ffmpeg实现屏幕录制,文中的示例代码讲解详细,对我们学习或工作有一定帮助,感兴趣的小伙伴可以了解一下
    2023-05-05
  • C#实现数独解法

    C#实现数独解法

    这篇文章介绍了C#实现数独解法的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • c# 实现位图算法(BitMap)

    c# 实现位图算法(BitMap)

    这篇文章主要介绍了c# 如何实现位图算法(BitMap),文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • C#获得MAC地址(网卡序列号)的实现代码

    C#获得MAC地址(网卡序列号)的实现代码

    这篇文章主要介绍了C#获得MAC地址的实现代码,需要的朋友可以参考下
    2014-02-02
  • C#生成随机数实例

    C#生成随机数实例

    这篇文章主要介绍了C#生成随机数的方法,实例分析了随机数的生成原理与使用技巧,需要的朋友可以参考下
    2015-01-01
  • C#中if语句使用概述

    C#中if语句使用概述

    这里介绍C#使用if语句,C#使用if语句中的表达式必须放在一对圆括号中。除此之外,表达式必须是布尔表达式
    2014-03-03
  • C#从命令行读取参数的方法

    C#从命令行读取参数的方法

    这篇文章主要介绍了C#从命令行读取参数的方法,实例分析了C#命令行读取参数的实现技巧与操作流程,需要的朋友可以参考下
    2015-04-04
  • Unity3D实现NavMesh导航网格寻路

    Unity3D实现NavMesh导航网格寻路

    这篇文章主要为大家详细介绍了Unity3D实现NavMesh导航网格寻路,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • C#画笔使用复合数组绘制单个矩形的方法

    C#画笔使用复合数组绘制单个矩形的方法

    这篇文章主要介绍了C#画笔使用复合数组绘制单个矩形的方法,涉及C#使用画笔绘制图形的相关技巧,需要的朋友可以参考下
    2015-06-06

最新评论