- 浏览: 1078794 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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 1174一、概念 策略模式(Strategy):它定义了一系 ... -
C#获取返回错误码
2010-05-21 17:59 1813[DllImport("TestWin32Dl ... -
VS.NET 开发Windows服务的步骤
2010-05-20 14:25 1606在很多应用中需要做windows服务来在一些后台操作,比如监视 ... -
c# 允许服务与桌面交互
2010-05-20 14:20 2707我们写一个服务,有时候要让服务启动某个应用程序,就要修 ... -
C#单例模式的三种写法
2010-05-19 15:58 48576第一种最简单,但没有考虑线程安全,在多线程时可能会出问题, ... -
C#中获取我的文档系统文件夹路径
2010-05-17 15:29 2274本技巧使用GetFolderPath方法来获取指向由指定枚 ... -
C#自定义事件的步骤介绍
2010-05-13 17:54 3299通常C#自定义事件有下面的几个步骤: ... -
使用反射机制遍历对象中的属性名及属性值
2010-05-03 16:20 2846首先描述一种情景,当给你一个VO类(这个类是映射到数据库的表 ... -
C#的逆向工程-IL指令集
2010-04-30 10:28 1689一些 IL 语言解释: ... -
使用SqlHelper时“阅读器关闭时read的尝试无效”的解决方法
2010-04-20 14:54 1819原SqlHelper类中ExecuteReader方法体 ... -
C# 删除文件夹
2009-12-31 11:28 2568/// <summary> ... -
System.Windows.Forms.Timer和System.Timers.Timer的区别 [转]
2009-12-16 23:44 5208.NET Framework里面提供了三种Timer: ... -
C#使textbox滚动到最新一行
2009-11-16 12:33 2556方法1: textBox.Text += " ... -
Invoke()/BeginInvoke()区别
2009-11-15 17:43 7234查看MSDN如下: Control..::.Inv ... -
Invoke 和 BeginInvoke 的真正涵义
2009-11-15 17:37 1330BeginInvoke 方法真的是新开一个线程进行异步调用 ... -
编写安全的多线程C#程序
2009-11-15 01:24 1908与多线程相关的两个常见的需要解决的问题是:临界资源保护和线 ... -
线程,同步与锁——Lock你到底锁住了谁
2009-11-15 01:18 1596线程在多核时代的优势月来越明显,多线程编程的学习也提上议事日程 ... -
关于lock(this)的说明及用法
2009-11-15 01:16 5361一. 为什么要lock,lock了 ... -
远程dll注入 C#
2009-11-14 16:43 3139using System; using System. ... -
C# 3.0新特性之扩展方法
2009-11-09 17:02 988C#3.0扩展方法是给现有类型添加一个方法。现在类型既可是基本 ...
相关推荐
在这个示例中,`test()`函数内部的`pageNo`赋值语句实际上创建了一个全局变量`pageNo`。因为没有使用`var`、`let`或`const`进行声明,这行代码等效于在全局作用域中声明了一个新的变量`pageNo`并赋值为1。这样,原本...
可以通过以下方式创建一个数组:`var arr = [1, 2, 3];` - 访问数组中的元素非常直观,例如:`var firstElement = arr[0];` 这样就可以获取数组的第一个元素。 **1.6 JavaScript 对象(Object)** - 对象是...
条件语句 `(val === 'value')` 为真,所以输出 "Something"。 5. IIFE(立即执行函数表达式)内的 `name` 是局部变量,所以内部的 `name` 不会覆盖外部的 `name`。因此,输出是 B. Hello World。 6. 表达式 `var ...
8. **条件语句后阻止执行后续语句**:在满足条件后,使用`return`语句可以停止当前函数的执行: ```javascript if (condition) { // do something return; } // 下面的代码不会执行 ``` 9. **刷新父页面**:...
- 示例:`var a:int = 1;` 2. **浮点型 `float`**:用于存储带小数点的数值。 - 示例:`var b:float = 0.05;` 3. **游戏对象引用 `GameObject`**:存储对Unity中某个GameObject的引用。 - 示例:`var c:...
这是因为`var`声明的变量作用域在整个函数内部,但在函数内部的`if`语句中重新初始化了`name`,所以外层的`name`未被赋值,因此是`undefined`。 6. `for (var i = START; i <= END; i++) {count++;}`的结果是C,101...
这种方式特别适用于需要在循环或条件语句中声明变量的情况。 #### 5. 静态的 Using (Static Using) C# 6.0 引入了静态 using 语法,使得无需指定完整的类型名称即可调用静态方法或访问静态字段。 **之前的实现...
let (x, y) = (1, 2) // 声明并初始化两个常量 var (width, height) = (100, 200) // 声明并初始化两个变量 ``` 在 Swift 的控制流语句中,如`switch`,`let`还可以用于临时捕获匹配的值。例如: ```swift let ...
1. **变量声明**:使用`var`关键字声明变量,避免使用全局变量。 - 示例:`var message = "Hello World";` 2. **数据类型**: - 原始类型:包括数字(Number)、字符串(String)、布尔(Boolean)、空值(null)、未定义...
例如,我们可以用SELECT语句获取数据并赋值给变量: ```sql num_var := (SELECT column_name FROM table_name WHERE condition); ``` 3. **控制结构**: - **条件语句**:IF-THEN-ELSIF-ELSE结构用于根据条件...
SELECT * FROM table1 LEFT OUTER JOIN table2 ON (table1.id = table2.id); ``` - DB2示例: ```sql SELECT * FROM table1 LEFT OUTER JOIN table2 ON (table1.id = table2.id); ``` - 注意点: Oracle和DB2...
10. **SWITCH**: `SWITCH`语句提供了基于值的多分支选择,替代传统的`CASE`结构,例如:`SWITCH TO my_variable CASE 'value1' DO something CASE 'value2' DO another_thing ENDSWITCH.` 11. **COND**: `COND`...
2. **执行部分**:这是PL/SQL的主要部分,包含一系列的语句,如赋值、控制结构(IF、CASE、WHILE、FOR循环)以及数据库操作。例如,简单的赋值操作: ```sql num := 10; ``` 3. **异常处理部分**:PL/SQL允许...
- **隐式类型**:使用 `var` 关键字声明变量时,编译器会根据赋值语句自动推断变量的类型。例如: ```csharp var queryResult = from c in Customers select new { c.Name, c.Age }; ``` 在这里 `queryResult` ...
- **细节**: 变量通过赋值语句创建,并且可以在局部作用域或全局作用域中使用。 - **示例**: 在函数内部定义变量只在该函数的作用域内可见: ```python def my_function(): x = 5 # x 只在函数内部可见 ``` ##...
首先,赋值语句是数据步中最基础的操作之一,其基本格式为`variable=expression;`。在这个语句中,`variable`是你想要赋值的目标变量,而`expression`则是一个表达式,其结果将被赋给目标变量。例如,在例子中,`x=a...
Game Maker Language(GML)是GameMaker Studio的脚本语言,用于创建复杂的2D游戏。这个教程,"Game_Maker_Language教程_gm8gamemaker8gml_",旨在帮助初学者和进阶开发者理解GML的基础和高级概念。GML在设计时考虑...
1. **var** - 声明一个变量,作用域为函数作用域或全局作用域。 - 示例: ```javascript var message = "Hello"; ``` 2. **let (ES6+)** - 声明一个块级作用域的变量。 - 示例: ```javascript let ...
1. **一切皆对象**: 函数也是对象,可以被赋值给变量、作为参数传递给其他函数或从函数中返回。 2. **在函数中定义函数**: 在一个函数内部定义另一个函数。 3. **从函数中返回函数**: 函数可以返回另一个函数。 4. *...
val result = (1..10).map { it * 2 } // 使用 lambda 表达式对集合中的每个元素乘以 2 ``` #### 三、面向对象编程 **3.1 类与继承** - **类的定义**:Kotlin 中的类可以通过 `class` 关键字定义。 ```kotlin ...