• Struct


    学习了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()中对象也发生了改变

  • 相关阅读:
    jQuery遍历
    jQuery DOM
    jQuery表单事件
    jQuery事件对象
    jQuery绑定事物处理器
    jQuery事件
    JQuery基础选择器
    JQuery基础 接下来我将把我最近学习jQuery所做的笔记发布,希望对初学者有些许帮助,也方便自己以后复习
    C# 连接Oracle数据库 遇到“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本”的解决方案
    安装oracle11版本报错此先决条件将测试系统物理内存总量是否至少为 922MB
  • 原文地址:https://www.cnblogs.com/tjuxiepeng/p/4396364.html
Copyright © 2020-2023  润新知