博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struct
阅读量:5308 次
发布时间:2019-06-14

本文共 1338 字,大约阅读时间需要 4 分钟。

学习了Struct后,简单尝试一下

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication4

{
public struct local
{
     private int xVal;
   private int yVal;

public local(int x, int y)

{
  xVal = x;
  yVal = y;
}

public int x

{
  get
  {
  r  eturn xVal;
  }
  set
  {
    xVal = value;
  }
}
public int y{
  get
  {
  return yVal;
  }
  set
  {
  yVal = value;
  }
}
public override string ToString()
{
  return (String.Format("{0},{1}",xVal,yVal));
}
}

}

struct中的变量默认是private的,所以如果想要引用的话,可以采用C#已经封装好的方式如下:

 

public int y{

  get
  {
  return yVal;
  }
  set
  {
  yVal = value;
  }
}

主程序:

简单输出x,y的值:

关于结构体需要注意的是:

(1)struct中的成员变量不可以赋值:

private int x = 50;

private int y = 100;

会报错 

(2)struct是值类型

在以上程序中,Writeline()的参数是一个对象,而local是一个结构体。为什么不会报错呢

原因是,编译器讲结构体自动封箱了(就像所有值类型一样),而且创递给Writeline的是封箱后得到的对象。

struct(隐式)地从object继承,可以多态的进行反应,重定义方法

 

可以将上面代码片段改为

console.Writeline("local location:{0}",local.ToString());避免装箱

 

但是,若在myFunc()中新值被赋给x,y后输出:

   local loc1 :50,100

当返回调用方法Main()并再次调用Writeline()时,原值并没有改变:

   locallocation :200,300

结构体是作为一个值对象传递的,myFunc()中只是一个副本

 

把声明类改为 : public class local

并再次运行程序,输出是:

local location : 200,100

in myFunc location:50,100

local location:50,100

这次location对象也有了引用语意,因此当值在myFunc()中发生改变时,main()中对象也发生了改变

 

转载于:https://www.cnblogs.com/tjuxiepeng/p/4396364.html

你可能感兴趣的文章
[Flex] flex手机项目如何限制横竖屏?只允许横屏?
查看>>
tensorflow的graph和session
查看>>
JavaScript动画打开半透明提示层
查看>>
Mybatis生成resulteMap时的注意事项
查看>>
jquery-jqzoom 插件 用例
查看>>
1007. Maximum Subsequence Sum (25)
查看>>
iframe的父子层跨域 用了百度的postMessage()方法
查看>>
图片生成缩略图
查看>>
动态规划 例子与复杂度
查看>>
查看oracle数据库的连接数以及用户
查看>>
【数据结构】栈结构操作示例
查看>>
中建项目环境迁移说明
查看>>
三.野指针和free
查看>>
activemq5.14+zookeeper3.4.9实现高可用
查看>>
TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
查看>>
简单【用户输入验证】
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>
CS0103: The name ‘Scripts’ does not exist in the current context解决方法
查看>>
20130330java基础学习笔记-语句_for循环嵌套练习2
查看>>
Spring面试题
查看>>