- 浏览: 1060783 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (399)
- C++ (39)
- Java (74)
- Java界面开发学习笔记 (4)
- Java用户的c++之旅 (0)
- 自言自语 (12)
- DSP (1)
- MCU (0)
- CG (0)
- Jabber (0)
- Gloox (0)
- Linux (11)
- Windows (19)
- Networks (4)
- Jobs (0)
- PHP (1)
- JSP (2)
- 生活 (35)
- C (2)
- Qt4 (2)
- C# (50)
- WPF (5)
- ASP (2)
- FLEX (47)
- SQL (20)
- JavaScript (12)
- SharePoint (6)
- GWT (1)
- Dojo (9)
- HTML (11)
- Others (7)
- 如何安装配置系列 (7)
- UML (2)
- Android (3)
- alibaba (1)
最新评论
-
zxjlwt:
学习了http://surenpi.com
Firefox插件开发: Hello World! -
ylldzz:
楼主知道MVEL怎么调试么
MVEL简介及快速使用 -
blueman2012:
您好,可否提供源码下载,我把您的代码贴过来后,好多报错的,谢谢 ...
Log4J日志解析 -
svygh123:
你的游标都没有关闭呢!
MYSQL游标嵌套循环示例 -
dizh:
写的很好啊
MVEL简介及快速使用
刚才在阅读《c#本质论》一书时,开头有提到var1=var2=something的赋值体,之前也曾用过(但是个人不建议这么使用),但是没有认真思考这种赋值方式的本质问题,即:var1是对var2的引用还是对something的引用。后面我编写了一些PoC代码对此进行验证。
代码片段1:
#region TestString string str1, str2; //str1 = str2 = "This is a test string..."; str2 = "This is a test string..."; str1 = str2; Console.WriteLine("Str1: " + str1); Console.WriteLine("Str2: " + str2); str2 = "This is another test string..."; Console.WriteLine(); Console.WriteLine("Str1: " + str1); Console.WriteLine("Str2: " + str2); #endregion
输出的结果是:
Str1: This is a test string...
Str2: This is a test string...
Str1: This is a test string...
Str2: This is another test string...
还是
Str1: This is a test string...
Str2: This is a test string...
Str1: This is another test string...
Str2: This is another test string...
呢?
测试答案是前者。
再看看片段2:
class Program { static void Main(string[] args) { #region TestObject ObjectToTest ott1, ott2; //ott1 = ott2 = new ObjectToTest(100); ott2 = new ObjectToTest(100); ott1 = ott2; Console.WriteLine("OTT1: " + ott1.Num); Console.WriteLine("OTT2: " + ott2.Num); ott2 = new ObjectToTest(150); Console.WriteLine("OTT1: " + ott1.Num); Console.WriteLine("OTT2: " + ott2.Num); #endregion Console.Read(); } } class ObjectToTest { int num; public int Num { get { return num; } set { num = value; } } public ObjectToTest(int num) { Num = num; } }
输出结果又是如何呢?这里的ott1和ott2都是对象,也就是涉及到引用传递的问题了。我们记new ObjectToTest(100)为obj1, new ObjectToTest(150)为obj2.则在语句ott1=ott2执行后,ott1是对ott2的引用,还是对obj1的引用呢?在后面当ott2=new ObjectToTest(150)执行后,ott1是对obj1的引用还是对obj2的引用呢?
执行代码,观看结果为:
OTT1: 100
OTT2: 100
OTT1: 100
OTT2: 150
可知,这里的ott1只是对obj1的引用,而非obj2的引用。
发表评论
-
策略模式
2010-10-08 16:34 1136一、概念 策略模式(Strategy):它定义了一系 ... -
C#获取返回错误码
2010-05-21 17:59 1780[DllImport("TestWin32Dl ... -
VS.NET 开发Windows服务的步骤
2010-05-20 14:25 1568在很多应用中需要做windows服务来在一些后台操作,比如监视 ... -
c# 允许服务与桌面交互
2010-05-20 14:20 2664我们写一个服务,有时候要让服务启动某个应用程序,就要修 ... -
C#单例模式的三种写法
2010-05-19 15:58 48524第一种最简单,但没有考虑线程安全,在多线程时可能会出问题, ... -
C#中获取我的文档系统文件夹路径
2010-05-17 15:29 2238本技巧使用GetFolderPath方法来获取指向由指定枚 ... -
C#自定义事件的步骤介绍
2010-05-13 17:54 3253通常C#自定义事件有下面的几个步骤: ... -
使用反射机制遍历对象中的属性名及属性值
2010-05-03 16:20 2801首先描述一种情景,当给你一个VO类(这个类是映射到数据库的表 ... -
C#的逆向工程-IL指令集
2010-04-30 10:28 1591一些 IL 语言解释: ... -
使用SqlHelper时“阅读器关闭时read的尝试无效”的解决方法
2010-04-20 14:54 1786原SqlHelper类中ExecuteReader方法体 ... -
C# 删除文件夹
2009-12-31 11:28 2499/// <summary> ... -
System.Windows.Forms.Timer和System.Timers.Timer的区别 [转]
2009-12-16 23:44 5158.NET Framework里面提供了三种Timer: ... -
C#使textbox滚动到最新一行
2009-11-16 12:33 2452方法1: textBox.Text += " ... -
Invoke()/BeginInvoke()区别
2009-11-15 17:43 7170查看MSDN如下: Control..::.Inv ... -
Invoke 和 BeginInvoke 的真正涵义
2009-11-15 17:37 1288BeginInvoke 方法真的是新开一个线程进行异步调用 ... -
编写安全的多线程C#程序
2009-11-15 01:24 1875与多线程相关的两个常见的需要解决的问题是:临界资源保护和线 ... -
线程,同步与锁——Lock你到底锁住了谁
2009-11-15 01:18 1566线程在多核时代的优势月来越明显,多线程编程的学习也提上议事日程 ... -
关于lock(this)的说明及用法
2009-11-15 01:16 5284一. 为什么要lock,lock了 ... -
远程dll注入 C#
2009-11-14 16:43 3094using System; using System. ... -
C# 3.0新特性之扩展方法
2009-11-09 17:02 952C#3.0扩展方法是给现有类型添加一个方法。现在类型既可是基本 ...
相关推荐
var x = 1; var y = 0; var z = 0; function add(n){n=n+1;} y = add(x); function add(n){n=n+3;} z = add(x); [removed] 都为undefined,因为没有返回值。 2.javascript是面向对象的,怎么体现javascript的继承...
var = another_var or constant(变量赋值) var += another_var or constant(运算赋值) var -= another_var or constant(运算赋值) print var(输出变量) lock unlock end 现有nn个程序,顺序编号依次为1-n1−n,所有...
var step = 1; var delay = 30; var height = 0; var Hoffset = 0; var Woffset = 0; var yon = 0; var xon = 0; var pause = true; var interval; img1.style.top = yPos; function changePos() { width = ...
大家在学习javascript中对于数组函数new Array()和var arr=[]很多朋友不知道如何区别,也不知道用法,下面看看我们总结的。 var arr=[] 这是一种字面量定义数组的方法 var arr=new Array() 这是调用数组构造函数...
We-Canvas ...var p22= data[1][2]; var p23= data[1][3]; var p30= data[2][0]; var p31= data[2][1]; var p32= data[2][2]; var p33= data[2][3]; var t = factor.t; /*计算多项式系数 (下同)*/ var
var my_month=my_time.getMonth()+1;//获取月 var my_day=my_time.getDate();//获取今天的号数 var my_week=my_time.getDay();//获取今天的星期 var my_hours=my_time.getHours();//获取小时 var dayfirst=7-...
var start = results.getStart(); var end = results.getEnd(); addStart(start.point, start.title); addEnd(end.point, end.title); var viewPoints = [start.point, end.point]; // 获取方案 var plan...
var a = new WebFXTreeItem('1'); tree.add(a); var b = new WebFXTreeItem('1.1'); a.add(b); b.add(new WebFXTreeItem('1.1.1')); b.add(new WebFXTreeItem('1.1.2')); b.add(new WebFXTreeItem('1.1.3'));...
顶:=85; 中:=50; 底:=20; VAR1:=HHV(HIGH,9)-LLV(LOW,9);...VAR4:=VAR2/VAR1*100-70; VAR5:=(CLOSE-LLV(LOW,60))/(HHV(HIGH,60)-LLV(LOW,60))*100; VAR6:=(2*CLOSE+HIGH+LOW)/4; VAR7:=SMA(VAR3/VAR1*100,3,1);
var lasta = 1; var lastb = 1; var distr = true; var tspeed=10; var size=250; var mouseX=0; var mouseY=0; var howElliptical=1; var aA=null; var oDiv=null; window.onload=function () { var i=0; var...
SELECT @VAR1='Y',@VAR2='N' -- 而SET要达到同样的效果,需要: SET @VAR1='Y' SET @VAR2='N' /* 说到这个,SQL内置的变量:@@ERROR 和 @@ROWCOUNT必须要在一句SQL语句中捕获。如果用set分两句来获取它们,将获取...
var int2=Number(intin2); var int3=Number(intin3); var intmax1=0; var intmax2=0; if(int1>int2) { intmax1=int1; } else { intmax1=int2; } if(intmax1>int3) { intmax2=intmax1; } else { intmax2=int3; } int...
主要介绍了JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍,需要的朋友可以参考下
JS基础,web前端,短路逻辑笔试面试题 :var a=10;以下哪个表达式会报错 : a<=10&&b==10 a>10&&b==10 a<=10||b==10 a>10||b==10
var1:="chzhshch@kxian"; var2:="chzhshch@bi";{处理笔关系} pre:=2; {设置小数点位数} if STKTYPE=0 then pre:=1; if STKTYPE=11 then pre:=3; a1:=barslast(var2<>0); a2:=ref(var2,a1); aa1:=ref(a1+1,1); aa2:...
var Jy_eNph1 =window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]["\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64"]("\x69\x64\x78");//项目ID var E2 =window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]["\x67...
ExtJs选中var editor = new Ext.ux.grid.RowEditor详解.txt
var yue=parseInt(dqTime.substr(5,2),10)-1;//月(parseInt(x,10)将变量转成10进制数),注意:月是“0,1,2,3,4,5,6,7,8,9,10,11,” var ri=parseInt(dqTime.substr(8,2),10);//日 var shi=parseInt(dqTime....
var cx = w / 2; var cy = h / 2; var fl = 1000; function prj(obj) { var cz = obj.z fl; if(cz === 0) return; var scl = fl / cz; obj.p.x = cx obj.x * scl; obj.p.y = cy obj.y * scl; ...
var lastIndex = objTable.rows.length - 1; objTable.deleteRow(lastIndex); } //添加列 function addCol() { var objTable = document.getElementById("tb2"); var count = objTable.rows[0].cells.length; ...