1. .NET Framework是Microsoft为开发应用程序而创建的一个具有革命意义的平台。
2. C#是Microsoft专门为使用.NET平台而创建的。它只是用于.NET开发的一种语言。
3. C#可以编写Windows应用程序,Web应用程序,Web服务。
4. Visual Studio 2010(VS)或Visual C# 2010 Express(VCE)是C#编程的开发工具。
5. 控制台应用程序
在VS中,File文件→ New新建→Project 项目......
Visual C#→ Console Application
在Location一栏中改为C:\BegVCSharp\Chapter02,其它不变,“OK”
在主窗口显示的文件里添加如下代码行
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// Output text to the screen.
Console.WriteLine("The first app in Beginning C# Programming!");
Console.ReadKey();
}
}
}
Debug调试→ Start Debugging启动调试(F5),应该会看到下图
按任意键,退出应用程序
也可以Debug调试→ Start Without Debugging开始执行不调试(Ctrl+F5),以非调试模式运行代码。
(可以去保存的fold里找到bin里的debug,双击.exe的文件,这是最终的可执行文件)
(release和debug的区别,release是用户版本,debug是测试版本,上面的问题中,可能是由于release和debug的区别所致)
Build生成→ Build Solution生成解决方案(F6),编译项目但不运行(打开或关闭调试功能)。
(F6是在fold里生成一个文件,但是没有执行。F5是F6加上了可见的执行功能)
编译好之后,在Windows Explorer中运行生成的.exe文件,就可以执行代码。
也可以在命令提示窗口中执行,为此,应打开一个窗口,把目命令提示录改为C:\BegVCSharp\Chapter02\ConsoleApplication1\ConsoleApplication1\bin\Debug\,键入ConsoleApplication1,并按下回车。
Console.ReadKey(); 是告诉代码在结束前等待按键
Solution Explorer解决方案资源管理器
(所有C#文件都使用.cs文件扩展名)
使用solution cxplorer可以改变主窗口中显示的代码:双击.cs文件,或者右击选择“view code查看代码”。
可以重命名,删除等等。
Properties Window属性窗口,在View(视图)菜单里。
Properties Window中对项目的改变会直接影响代码,添加代码行或改变文件中的内容。
对一些项目来说,通过这个窗口来操作与手动修改代码所花的时间是相同的。
Error List错误列表窗口,在View(视图)菜单里。
双击窗口中的错误,光标会跳转到源代码中出现错误的地方。
Tools工具→Options选项,Text Editor文本编辑器→ C#→ General常规,“Line numbers行号” ,
这样就可以在VS文本编辑器中显示行号了。
6. Windows Forms应用程序
在VS中,File文件→ New新建→Project 项目......
Visual C#→ Windows Forms Application窗体应用程序
在Location一栏中改为C:\BegVCSharp\Chapter02,其它不变,“OK”
如果有其它项目打开着,则选择“Creat New Solution创建新解决方案”
Toolbox工具箱→ All Windows Forms所有Windows窗体→ 双击Button,
就会在添加一个按钮。
双击刚才添加到窗体的按钮,显示代码,进行修改
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("The first Windows app in the book!");
}
运行应用程序
单击显示的按钮,打开一个消息对话框,如下图
单击“确定”,单击右上角×,则会退出程序。
单击刚才的按钮,右下角Properties属性窗口的Text栏里,显示为“button 1”,可以更改为“click me”。
Properties中还可以改变按钮的颜色、大小,甚至数据绑定等。
要查看这些更改的代码,Form1.cs中不会显示,要去Solution Explorer窗口中的Form1.cs中的Form1.Designer.cs节点,
双击,就可以看到其中更改的代码。
7. 使用VS
第一次运行VS,选择“Visual C# 开发设置”。
如果选错了,可以单击工具菜单上的“导入和导出设置”,再选“重置所有设置”。可以选择“保存已有设置”或“否,仅重置设置”,然后再选择“Visual C# 开发设置”。
(*VS布局界面)
VS常用功能介绍:
Toolbox工具箱,在View(视图)菜单里。
Server Explorer服务资源管理器,在View(视图)菜单里。访问数据源、服务器设置和服务等。
Solution Explorer解决方案资源管理器,在View(视图)菜单里。显示当前加载的解决方案的信息。例如,项目中包含了什么文件,这些文件中又包含了什么内容。
Properties Window属性窗口,只有在处理项目时才出现,在View(视图)菜单里。使用这个窗口,可以改变windows窗体中按钮的外观。
Error List错误列表,在View(视图)菜单里。显示错误、警告等信息。
VS的一些小tips
整体代码重新整理版面 ctrl+kd
整体代码加//注释 ctrl+kc
8. 使用VCE
9. C#基本语法
不考虑空格、回车、tab等空白字符
每个语句用分号结束,一个语句放在多个行上是可以的
花括号不需要带分号
前面代码行的续行通常也要缩进得多一些,比如下面例子的第三行
{
<code line 1, statement 1>;
<code line 2, statement 2>
<code line 3, statement 2>;
}
注释不是严格意义上的C#代码。
/* This is a comment */
/* And so...
... is this! */
注释中不可以输入*/ ,因为会引起歧义
第二种注释方法是双斜杠,后面写注释,但是必须在一行上
这类注释可用于语句的说明,因为它们都放在一行上
<A statement>; // Explanation of statement
C#代码区分大小写
代码突出显示功能
#region 和 #endregion 来定义可以展开和折叠的代码区域的开头和结尾
以#开头的任意关键字实际上都是一个预处理指令,严格地说并不是C#关键字。
10. 变量
数据可放在变量中,可以从变量中取出数据或查看它们
声明变量的C#语法是指定类型和变量名,例如
<type> <name>;
大多数简单类型都是存储数值的
许多不同的整数类型可以用于存储不同范围的数值,占用不同的内存空间(至多64位)
一些变量名称前面的“u”是unsigned的缩写,表示不能在这些类型的变量中存储负数
可以使用的浮点数变量类型有3种,float、double和decimal
除了数值类型外,另外还有3种简单类型
注意组成string的字符数没有上限,因为它可以使用可变大小的内存
声明变量,赋值,输出
{
int myInteger; //声明一个类型为int的变量myInterger
string myString; //声明一个类型为string的变量myString
myInteger = 17;
myString = "\"myInteger\" is"; //把myInterger和引号赋给myString,其中 \ 是转义序列,用来转义双引号
Console.WriteLine("{0} {1}.", myString, myInteger); //{0} {1}是字符串,起占位的作用,后面就要跟两个变量
Console.ReadKey();
}
\n 是换行的转义序列
变量的命名规则
变量名的第一个字符必须是字母、下划线或@
其后的字符可以是字母、下划线或数字
using和namespace这些关键字是有特定含义的,所以小心使用
最好根据变量的作用来命名它们
PascalCase和camelCase是两种命名约定
在名称中使用的大小写表示它们的用途。它们都应用到由多个单词组成的名称中,并指定名称中的每个单词除了第一个字母大写外,其余字母都是小写。在camelCase规则中,还有一个规则,即第一个单词以小写字母开头。
Microsoft建议:对于简单的变量,使用camelCase 规则,而对于比较高级的命名则使用PascalCase。、
转义序列的完整列表
逐字地指定字符串,即两个双引号之间的所有字符都包含在字符串中
唯一例外是双引号字符的转义,它们必须指定,以免结束字符串。为此,可以在该字符串之前加一个@字符
@"A short list:
item 1
item 2"
"C:\\Temp\\MyDir\\MyFile.doc" 可以改写为 @"C:\Temp\MyDir\MyFile.doc"
字符串是引用类型,而本章中的其他类型都是值类型。所以,字符串也可以被赋予null值,即字符串变量不引用字符串
使用变量的类型和名称来声明
int age;
同时声明多个类型相同的变量
int xSize, ySize;
然后用=赋值运算符给变量赋值
age=25;
在声明变量的同时为它赋值,把两行代码合并在一起
int age = 25;
int xSize = 4, ySize = 5;
注意下面情况
int xSize, ySize = 5;
ySize被初始化,而xSize仅进行了声明,在使用前仍需要初始化
11. 表达式
运算符大致分为如下3类
一元运算符,处理一个操作数
二元运算符,处理两个操作数
三元运算符,处理三个操作数
大多数运算符都是二元运算符,只有几个一元运算符和一个三元运算符
数学运算符
二元运算符+在用于字符串类型变量时也是有意义的,但其他数学运算符不能用于处理字符串
递增和递减运算符,它们都是一元运算符,可以以两种方式加以使用:放在操作数的前面或后面
var1中存储的结果有区别,其原因是运算符的位置决定了它什么时候发挥作用
例如
int var1, var2 = 5, var3 = 6;
var1 = var2++ * --var3;
var1的结果是25
static void Main(string[] args)
{
double firstNumber, secondNumber;
string userName;
Console.WriteLine("Enter your name:"); // 屏幕显示出用户输入的信息,Console.WriteLine()
userName = Console.ReadLine(); // 获得用户输入的信息储存在string变量中,Console.ReadLine()
Console.WriteLine("Welcome {0}!", userName);
Console.WriteLine("Now give me a number:");
firstNumber = Convert.ToDouble(Console.ReadLine()); //得到的字符串转换为double类型,Convert.ToDouble
Console.WriteLine("Now give me another number:");
secondNumber = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("The sum of {0} and {1} is {2}.", firstNumber,
secondNumber, firstNumber + secondNumber);
Console.WriteLine("The result of subtracting {0} from {1} is {2}.",
secondNumber, firstNumber, firstNumber - secondNumber);
Console.WriteLine("The product of {0} and {1} is {2}.", firstNumber,
secondNumber, firstNumber * secondNumber);
Console.WriteLine("The result of dividing {0} by {1} is {2}.",
firstNumber, secondNumber, firstNumber / secondNumber);
Console.WriteLine("The remainder after dividing {0} by {1} is {2}.",
firstNumber, secondNumber, firstNumber % secondNumber);
Console.ReadKey();
}
从string转化成int的命令是Convert.ToInt32()
赋值运算符
+=运算符也可以用于字符串,与+运算符一样
(只有+=适用于字符串的情况)
运算符的优先级
名称空间
.NET应用程序中定义的所有名称,包括变量名,都包含在名称空间中。名称空间采用层次结构,我们通常需要根据包含名称的名称空间来限定名称,以便访问它们
可以使用namespace关键字为花括号中的代码块显式定义名称空间
如果在该名称空间代码的外部使用名称空间中的名称,就必须写出该名称空间中的限定名称。