最近踩了一个坑,为了优化代码,把class改为了struct,结果发现原来的初始化语句没有预期的运行,伪代码如下: public struct A { bool _isActive; public void Init(bool isActive) { _isActive = isActive; } } public A[] _arrayA; //调用如下 foreach A a in _arrayA) { a.Init(); } 看着是能达到预期的,但实际上不是的. 在fo…
举几个值类型和引用类型的内存配置: 值类型存储在栈中,引用类型堆里: 1,数组 数组是引用类型,但是数组的元素可以是值类型或引用类型 2. 结构 结构是值类型,简略的看个例子 struct sample { public int X; public int Y; } simple ss = new simple(); 3. 类 类是引用类型,简略看个例子: struct csample { public int X; public int Y; } csimple cs = new csimpl…
using System; using System.Collections.Generic; using System.Linq; using System.Text; using SimpleDelegate.Models; using System.Data.SqlClient; using System.Data; namespace SimpleDelegate { class Program { static void Main(string[] args) { ; Tools.Tr…
某年某月,笔者去面试招行的一个外包项目,辗转来到面试地点以后,面试官给了我一份试卷,试卷只有两道题目,其中一道是这样的: 阅读以下程序 class Program { struct Point { public int x; public int y; public Point(int x,int y) {9 this.x = x; this.y = y; } } static void Main(string[] args) { Point p1 = ,); Point p2 = p1; p1…
编程语言的基元类型 编译器直接支持的数据类型称为基元类型(primitive type).基元类型直接映射到framework类型(fcl)中存在的类型. 下表列出fcl类型 从另一个角度,可以认为C#编译器自动假定所有源代码文件都添加了一下using指令: c#编译器非常熟悉基元类型,会在编译代码时应用自己的特殊规则,具体地说,c#编译器支持与类型转换.字面值以及操作符有关的模式. Int32 i = ; Int64 l = i; //从int32隐式转换为int64 Single s = i…