第一章 ASP.net C#基本语法(B篇 程序结构、运算符、运算优先级)
在上一部分中我们做了一个简单的ASP.net的程序,但是简单中真的简约吗?VS2010的模板提供了那些东西呢?单位现在需要计算很多的数字。如何实现呢?豆豆做了一个计算公式。做的是“惊天地泣鬼神”啊!可是结果!算出来一个怪胎!这不郁闷着呢!
本章目标:了解程序模板的结构,能够使用运算符,详细剖析和熟练掌握运算的优先级
本章结构
第一部分:项目结构
先看图
新建立的ASP.net怎么有这么多东西?没有?你建立一个ASP.net项目,按Ctrl+Alt+L看看
现在解读一下里面的项目
VS2010里面模板带的页面比VS以前的版本要多很多,结构更加的清晰了。希望大家保持这种清晰的方式来做页面
注意:没一个aspx都带一个aspx.cs,其中aspx页面实现前台的页面显示,也就是浏览器看到的内容。前台提交的处理由后台的aspx.cs进行处理,其处理过程浏览器是看不到的,这样很有效的提高的程序的安全性和逻辑性。
第二部分:程序结构
如下图:
第三部分:运算符
一、[]
方括号 ([]) 用于数组、索引器和属性,也可用于指针。
1、数组类型是一种后跟 [] 的类型:
int[] fib = new int[100]; //创建一个有100元素的数组
若要访问数组的一个元素,则用方括号括起所需元素的索引:
fib[0] = fib[1] = 1;
for( int i=2; i<100; ++i ) fib[i] = fib[i-1] + fib[i-2];// 如果数组索引超出范围,则会引发异常。
2、不能重载数组索引运算符;但类型可以定义采用一个或多个参数的索引器和属性。索引器参数括在方括号中(就像数组索引一样),但索引器参数可声明为任何类型(这与数组索引不同,数组索引必须为整数)。
例如,.NET Framework 定义 Hashtable 类型,该类型将键和任意类型的值关联在一起。
Collections.Hashtable h = new Collections.Hashtable();
h["a"] = 123; // note: using a string as the index
3、方括号还用于指定属性:
[attribute(AllowMultiple=true)]
public class Attr
{
}
4、可以使用方括号来指定指针索引:
unsafe fixed ( int* p = fib ) // p points to fib from earlier example
{
p[0] = p[1] = 1;
for( int i=2; i<100; ++i ) p[i] = p[i-1] + p[i-2];
}
二、()
除了用于指定表达式中的运算顺序外,圆括号还用于指定强制转换或类型转换:
double x = 1234.7;
int a;
a = (int)x; // cast double to int
三、.
点运算符 (.) 用于成员访问。点运算符指定类型或命名空间的成员。例如,点运算符用于访问 .NET Framework 类库中的特定方法:
System.Console.WriteLine("hello");
四、::
命名空间别名限定符运算符 (::),用于查找标识符。它通常放置在两个标识符之间,例如:
global::System.Console.WriteLine("Hello World");
备注:
命名空间别名限定符可以是 global。这将调用全局命名空间中的查找,而不是在别名命名空间中。
五、+
+ 运算符既可作为一元运算符也可作为二元运算符。
备注:
一元 + 运算符是为所有数值类型预定义的。对数值类型进行一元 + 运算的结果就是操作数的值。
为数值类型和字符串类型预定义了二元 + 运算符。对于数值类型,+ 计算两个操作数之和。当其中的一个操作数是字符串类型或两个操作数都是字符串类型时,+ 将操作数的字符串表示形式串联在一起。
委托类型也提供二元 + 运算符,该运算符执行委托串联。
using System;
class MainClass
{
static void Main()
{
Console.WriteLine(+5); // unary plus
Console.WriteLine(5 + 5); // addition
Console.WriteLine(5 + .5); // addition
Console.WriteLine("5" + "5"); // string concatenation
Console.WriteLine(5.0 + "5"); // string concatenation
// note automatic conversion from double to string
}
}
六、-
- 运算符既可作为一元运算符也可作为二元运算符。
一元 - 运算符是为所有数值类型预定义的。数值类型的一元 - 运算的结果是操作数的反数。
二元 - 运算符是为所有数值类型和枚举类型预定义的,其功能是从第一个操作数中减去第二个操作数。
委托类型也提供二元 - 运算符,该运算符执行委托移除。
using System;
class MainClass
{
static void Main()
{
int a = 5;
Console.WriteLine(-a);
Console.WriteLine(a - 1);
Console.WriteLine(a - .5);
}
}
七、*
乘法运算符 (*),用于计算操作数的积。另外还用作取消引用运算符,允许读取和写入指针。
备注:
所有数值类型都具有预定义的乘法运算符。
* 运算符还用来声明指针类型和取消引用指针。该运算符只能在不安全的上下文中使用,通过 unsafe 关键字的使用来表示,并且需要 /unsafe 编译器选项。取消引用运算符也称为间接寻址运算符。
using System;
class MainClass
{
static void Main()
{
Console.WriteLine(5 * 2);
Consol