初识c#——兴趣的起点
一、C#简介
C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。
C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
二、创建一个新的C#工程
开发工具:Visual Studio (VS)
1、启动 Visual Studio,在菜单栏上选择 File -> New -> Project,从模板中选择 Visual C#,然后选择 Windows,选择 Console Application,为您的项目制定一个名称,然后点击 OK 按钮;
2、新项目会出现在解决方案资源管理器(Solution Explorer)中,在代码编辑器(Code Editor)中编写代码,点击 Run 按钮或者按下 F5 键来运行程序。会出现一个命令提示符窗口(Command Prompt window),显示 输出结果。
三、C# 代码
using System;
namespace HelloWorldApplication
{
/* 类名为 HelloWorld */
class HelloWorld
{
/* main函数 */
static void Main(string[] args)
{
/* 我的第一个 C# 程序 */
Console.WriteLine("Hello World!");
Console.ReadKey();
}
}
}
1.using System:using 关键字用于在程序中包含 System 命名空间,一个程序一般有多个using 语句;
2.namespace声明:一个 namespace 是一系列的类,HelloWorldApplication 命名空间包含了类 HelloWorld;
3.class 声明:类 HelloWorld 包含了程序使用的数据和方法声明,类一般包含多个方法,方法定义了类的行为,在这里HelloWorld 类只有一个 Main 方法;
4.Main 方法:是所有 C# 程序的 入口点,Main 方法说明当执行时 类将做什么动作,Main 方法通过语句 Console.WriteLine("Hello World"); 指定了它的行为。
5.WriteLine 是一个定义在 System 命名空间中的 Console 类的一个方法,该语句会在屏幕上显示消息 “Hello,World!”;
四、C# 基本语法
1.using 关键字
在任何 C# 程序中的第一条语句都是:using System
using 关键字用于在程序中包含命名空间,一个程序可以包含多个 using 语句
2. class 关键字
class 关键字用于声明一个类
3. C# 注释
多行注释以 /* 开始,并以字符 */ 终止,如下所示:
/* This program demonstrates
The basic syntax of C# programming
Language */
单行注释是用 '//' 符号表示。例如:
//end class Rectangle
4.成员变量: 变量是类的属性或数据成员,用于存储数据;
成员函数: 函数是一系列执行指定任务的语句,类的成员函数是在类内声明的;
标识符: 标识符是用来识别类、变量、函数或任何其它用户定义的项目。
5.C#关键字
关键字是 C# 编译器预定义的保留字,这些关键字不能用作标识符
五、C# 数据类型
在 C# 中,变量分为以下几种类型: 值类型(Value types) 引用类型(Reference types) 指针类型(Pointer types)
1.值类型(Value types)
值类型(Value types):
bool | 布尔值 |
byte | 8 位无符号整数 |
char | 16 位 Unicode 字符 |
decimal | 128 位精确的十进制值 |
double | 64 位双精度浮点型 |
float | 32 位单精度浮点型 |
int | 32 位有符号整数类型 |
long | 64 位有符号整数类型 |
sbyte | 8 位有符号整数类型 |
short | 16 位有符号整数类型 |
uint | 32 位无符号整数类型 |
ulong | 64 位无符号整数类型 |
ushort | 16 位无符号整数类型 |
2.引用类型(Reference types)
引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。换句话说,它们指的是一个内存位置。使用多个变量时,引用类型可以指向一个内存位置。如果内存位置的数据是由一个变量改变的,其他变量会自动反映这种值的变化。
内置的引用类型有:object、dynamic 和 string
-> 对象(Object)类型
对象(Object)类型 是 C# 中所有数据类型的终极基类Object 是 System.Object 类的别名。所以对象(Object)类型可以
被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。但是,在分配值之前,需要先进行类型转换。
装箱操作: 当一个值类型转换为对象类型时
拆箱操作: 当一个对象类型转换为值类型时
object obj;
obj = 100; // 这是装箱
-> 动态(Dynamic)类型
可以存储任何类型的值在动态数据类型变量中,这些变量的类型检查是在运行时发生的声明动态类型的语法:dynamic <variable_name> = value;
例如:dynamic d = 20;
动态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的类型检查是在运行时发生的
->字符串(string)类型
字符串(string)类型 允许您给变量分配任何字符串值,字符串(string)类型是 System.String 类的别名。它是从对象(Object)类型派生的,字符串(string)类型的值可以通过两种形式进行分配:引号和 @引号
例如:
string str = "baidu.com";
一个 @引号字符串:@"baidu.com";
C# string 字符串的前面可以加 @(称作"逐字字符串")将转义字符(\)当作普通字符对待
比如:
string str = @"C:\Windows";
等价于:string str = "C:\\Windows";
用户自定义引用类型有:class、interface 或 delegate
六、C# 类型转换方法
C# 提供了下列常用的内置类型转换方法
序号 | 方法 | 描述 |
1 | ToChar | 把类型转换为单个 Unicode 字符类型 |
2 | ToDateTime | 把类型(整数或字符串类型)转换为 日期-时间 结构 |
3 | ToDecimal | 把浮点型或整数类型转换为十进制类型 |
4 | ToDouble | 把类型转换为双精度浮点型 |
5 | ToInt16/ToInt32/ToInt64 | 把类型转换为 16/32/64 位整数类型 |
6 | ToString | 把类型转换为字符串类型 |
7 | ToType | 把类型转换为指定类型 |
8 | ToUInt16 | 把类型转换为 16 位无符号整数类型 |
七、其他
-> 运算符(算术、关系、逻辑、位、赋值、其他)
-> 判断、循环、访问修饰符、方法
-> 数组、字符串、枚举、Class
-> 继承、多态、重载
-> 接口 、命名空间、正则表达式、异常处理
和Java类似
下面列出 C# 一些重要的功能:
布尔条件(Boolean Conditions)
自动垃圾回收(Automatic Garbage Collection)
标准库(Standard Library)
组件版本(Assembly Versioning)
属性(Properties)和事件(Events)
委托(Delegates)和事件管理(Events Management)
易于使用的泛型(Generics)
索引器(Indexers)
条件编译(Conditional Compilation)
简单的多线程(Multithreading)
LINQ 和 Lambda 表达式
集成 Windows
八、Java 和 C# 的相同点和区别
相同点:
都是面向对象的语言,也就是说,它们都能实现面向对象的思想(封装,继承,多态)
区别:
1、开发环境
C# 用Visual Studio,而JAVA用MyEclipse;跨平台Java用虚拟机,C#用Framework;Java所有平台都支持,而C#只有Windows和Linux支持。
很多网友认为C#语言比Java更先进,如在泛型和linq上,这只能说C#编程体验好。Sun初衷是把Java设计成一个跨平台的Runtime,而Microsoft只是把.Net做成Windows的一个扩展。
2、目前市场上Java比C#占优势
很多大公司选用Java,如京东,淘宝和百度,现状是在企业更通用,Java做Web类开发很强大,C#做窗体类开发更好。
3、安全性
Java是开源的,因此在安全性能上是有一些欠缺的,C#经常应用于后台内部网络的开发,C#的安全性是很有保障的。
语法上区别:
1.C#中的命名空间是namespace,类似于Java中的package(包),在Java中导入包用import而c#中用using;
2.c#和Java都是从main函数入口的,但是c#中的main函数的首字母必须大写,而且有4种写法;
3.数据类型:Java跟c#基本都差不多,但是Java的String类型的首字母必须大写,而c#中可以小写也可以大写;还有布尔型,Java中是boolean,c#中是bool;
4.输出:c#有三种方式输出:Cosole.WriteLine()、Cosole.WriteLine(要输出的值)、 Cosole.WriteLine("格式字符串",变量列表); 前两种的用法与Java中的System.out.println()方法的用法相同,第三种方式是根据占位符输出的,比Java更加方便;
5.控制流语句:c#跟Java类似,还有c#中的switch如果case后面有内容必须要有break;Java可以没有break;
6.方法中传递的参数:两种语言都使用值传递与引用传递,C#的引用传递的关键字是ref与out;ref侧重于修改,out侧重于输出,而Java中都以传值方式;
7.访问修饰符:C#中的访问修饰符与Java中的基本对应,但多出了一个internal,简而言之,C#有5种类型的可访问性,如下所示:
public:成员可以从任何代码访问
protected:成员只能从派生类访问
internal:成员只能从同一程序集的内部访问
protected:成员只能从同一程序集内的派生类访问
private:成员只能在当前类的内部访问
8.由于C#中不存在final关键词,如果想要某个类不再被派生,你可以使用sealed关键词密封;
9.集合:两种语言都有集合ArrayList,还有通过键访问值的 Java 中是HashMap而 c# 中是HashTable;c#比Java多泛型集合List<T>与Dictionary<K,V>更容易了,无需拆箱装箱了,更安全;
10.继承:Java中用关键字extends,c#只用":"就行了.调用父类的构造方法Java用super关键字,而c#用base关键字;
11.多态:抽象类和抽象方法两种语言都用abstract关键字,Java中另外一个类如果继承了它,实现直接重写此方法就可以;而c#必须加上关键字override实现,C#还比Java多一种虚方法来实现多态;
12.接口:都用关键字interface定义,Java实现用关键字implements;c#用":"实现。在C#中,接口内的所有方法默认都是公用方法。在Java中,方法声明可以带有public修饰符(即使这并非必要),但在C#中 显式为接口的方法指定public修饰符是非法的;
13.C# 中的is操作符与Java中的instanceof操作符一样,两者都可以用来测试某个对象的实例是否属于特定的类型。在Java中没有与C#中的as操作符等价的操作符,as操作符与is操作符非常相似,但它更富有"进取心":如果类型正确的话,as操作符会尝试把被测试的对象引用转换成目标类型;否则它把变量引用设置成null。
原文链接:https://blog.csdn.net/lairikeqi/article/details/84617737
第一次发表文章,心里情绪万千。。。。多多指教!
