http://blog.csdn.net/qiaoquan3/article/details/77951390
参考网易云课程《零基础学c#》
> 命名空间 主要用来标示“类”的可见范围。
# 关键字:namespace
用namespace来创建命名空间,用using 类引用命名空间,使用命名空间中的类功能。
比如 如果加入 using.system.windows,那么就可以使用 系统默认的关于windows开发的一些功能了。
![](https://ws1.sinaimg.cn/large/006tKfTcgy1fr1gu3alhgj30iu0b5jt0.jpg)
# 不同命名空间中类的互相引用
比如解决方案有两个`namespace 测试+namespace Demo` 在namespace 测试1中,想引用namespace Demo 中的Test类。那么需要在最前面写上`using Demo`。否则将出现第二张图的提示。
![](https://ws4.sinaimg.cn/large/006tKfTcgy1fr1hn1fjk9j30ht0f3q4r.jpg)
![](https://ws3.sinaimg.cn/large/006tKfTcgy1fr1hkhuouqj30id057t9i.jpg)
# 关键字
有些单词在c#中有特定意义,不能作为我们自己编写的代码中的元素
![](https://ws2.sinaimg.cn/large/006tKfTcgy1fr1ibgz7bkj31kw0ldgrp.jpg)
1、命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突。
命名空间的定义是以关键字 namespace 开始,后跟命名空间的名称。
```
namespace namespace_name
{
// 代码声明
}
```
2、命名空间表达
```
namespace Mynamespace
{
public class Myclass { }
}
static void Main(string[] args)
{
Mynamespace.Myclass obj = new Mynamespace.Myclass();
//obj只是代指,可以是随便的什么;此句中引用了上面的Mynamespace 中的Myclass类,并生成了一个新的实例
}
```
命名空间太长的话,可以在程序的最前面写using。
```
using Mynamespace.Myclass
```
如果A空间中有个名叫T的类,B空间中也有个名叫T的类,那么可以写成
```
using na = A
using nB = B
//那么,在引用A中T类的时候可以写成nA.T (同理:nB.T)
```
命名空间静态:
using static xxx 就可以引用静态的类。比如console就是静态的类
一般写成using static System.Console;
如果只写了using System,那么在引用console的时候就需要把类名字写上,比如
```
using System
……
Console.WriteLine()
```
或写成
```
using static System.Console;
……
WriteLine(); //直接使用console中的静态writeline类
Read(); //直接使用console中的静态read类
```
# Main方法
> * Main方法必须定义为static
> * Main 必须首字母大写
> * 返回值必须是void 或int类型,不能有其他
> * 命令行参数可选(一般不写)=>
一般写成以下形式:`static void Main(string[] arg)` 这句就是命令行参数。
main()默认为c#的切入点,也就是程序开始运行的地方。默认格式为以下代码。注意只能无需返回(void)或返回0(int),只有这两种类型,否则会报错。
```
static void Main()
{}
```
如果有两个main,则需设置????
program has more than one entry point defined. compile with /main to specify the type contains the entry point.
![](https://ws1.sinaimg.cn/large/006tNc79gy1fojsftvdpnj30mz0cjmyy.jpg)
## int类型
如果用`static int Main() {}`
则必须有返回值,否则提示:
`CS0161 C# '': not all code paths return a value`
![](https://ws4.sinaimg.cn/large/006tKfTcgy1fr1ivawfljj30iu0efacm.jpg)
这时改成:
```
static int Main()
{
//输入内容
Console.WriteLine("hello,world");
Console.ReadLine();
return 0; //加入这一行,程序就可行了。
}
```
## 常见错误
1. CS5001 C# 程序不包含适合于入口点的静态 "Main" 方法
原因:没写Main(),或者写成小写main(),或者不是static类型。
![](https://ws1.sinaimg.cn/large/006tKfTcgy1fr1j19v4iuj31kw0w04qq.jpg)
解决办法:检查Main()书写是否正确。
2. CS0161 C# '': not all code paths return a value 并非所有的代码路径都返回值
解决办法如图:当需要用int类型时,需加入return 整数来返回。
![](https://ws4.sinaimg.cn/large/006tKfTcgy1fr1ivawfljj30iu0efacm.jpg)
3. CS0017 C# 程序定义了多个入口点。使用 /main (指定包含入口点的类型)进行编译
指定Main()入口
意思是:定义了多个Main()程序的入口比如在下图,两个namespace都有Main()。就会发生错误。
![](https://ws3.sinaimg.cn/large/006tKfTcgy1fr1j9dpbgoj30jx0fm764.jpg)
解决办法:
打开该解决方法的属性,在应用程序=>启动对象里面设置相应的入口命名空间即可。
![](https://ws4.sinaimg.cn/large/006tKfTcgy1fr1jd3ukbrj30q50i6n0c.jpg)
![](https://ws3.sinaimg.cn/large/006tKfTcgy1fr1jel1tvyj30k10g4wh8.jpg)
- 帮助文档 microsoft helo viewer
- c#开发环境及visual studio安装注意事项
- c#程序基本结构-基本语法
- Q1: public static void main(String[] args) 是什么意思
- Q2: c#命名空间+Main方法
- Q3:注释+命名规则+代码规则
- Q4: c#语句 system => console
- Q5: 数据类型 .net
- Q5: 常用名字、变量、运算符
- Q6: 对话窗输入-属性
- Q7: 递归
- Q8:决策分支、条件判断语句 if 语句
- Q9:数组
- Q10:字符串
- Q11:对象、类、访问权限、静态动态函数
- Q12:方法及参数——继承于类
- Q13:构造函数
- Q14:继承——base 关键字
- Q15:多态、虚方法、接口
- Q16:创建窗体应用、控件
- Q17:Ado数据访问、连接 sqlserver 数据库
- Q18: 读取数据command + DataRead( )、DataSet + DateAdapter
- Q19: Entity Framwork、entity 与 ADO.net的区别
- Q20: 对话框、文件、文件夹
- Q21: 导入excel数据、更新到 dbo 数据库中
- Q26: 获取 excel 中每个 sheet 的表名
- Q22: 两个窗体之间数据+方法传递
- Q23: 数学对象
- Q24: c#网站编写
- Q25: visual studio2017如何查看帮助
- Q27: c# dictionary 字典对象
- Q28: 数组与dataTable互相转化