C#入门
前言
Xamarin插件是基于C#开发的,虽然支持F#,但选择C#,显然是更好的选择,这不是在说F#不好,C#用的比较广泛。这一天我打算把C#的基本语法过一遍,不进行很深的探索。
Hello World
来看看最简单的一个C#程序吧。
using System;
namespace HelloWorldApplication
{
class HelloWorld{
static void Main(string[] args){
Console.WriteLine("Hello Wrold!");
Conslole.ReadKey();
}
}
}
代码分析
第一行代码using System
类似各个编程语言的导入包,就是第三方依赖包都需要这个导包语句的。
第二行namespace HelloWorldApplication
,类似于JAVA中的包名,通俗的说,有这个定义,别人才好调用你这个程序中的代码,也就是为了符合他们导入我们写的程序而专门定制的,如果他们要导入我们的程序就要进行导包操作,using HelloWroldApplication
,这样他们就可以调用我们写的方法了。
第三行class HelloWorld
,声明一个类,这里也给大家透露了一个消息,C#也是面向对象的语言哦。没有接触过面向对象的朋友,可以去学习一下面向对象。
第四行static void Main(string[] args)
程序的入口,执行程序的时候,就从这里开始的。
第五行代码我就不用说了吧,从控制台打印,并且换行
第六行代码是等待键盘输入,如果没有这行代码,那么你运行后的程序会一闪而过,这句话只针对我们的第一个程序。
C#的重要功能
学C#,学的是什么?当然是它的独特之处,下面就把C#的一些特色亮出来:
- 自动垃圾回收
- 组件版本
- 属性和事件
- 索引器
- 条件编译
- 简单的多线程
- LINQ和Lambda表达式
- 集成Windows
这里只是c#的一部分,还有跟多的特色,在以后你会慢慢发掘的,这毕竟是个入门笔记而已。
注意
- C#是大小敏感的
- 所有程序和表达式必须以分号(;)结尾
- 程序的执行从Main方法开始
- 与Java不同的是,文件名可以不同于类的名称
在任何C#程序中,第一条语句都是
using System
,using关键字用于在程序中包含命名空。一个程序可以包含多个using语句
注释
多行注释
多行注释是以/开始,然后以/结束。
/*
我是多行注释
*/
单行注释
单行注释是以//开始,但只能一行
//我是单行注释
命名规范
在C#中,你要是用来定义类、变量、函数或任何用户定义的项目,你就必须遵守这个规范,不然就给你报错,气不气?
- 首字符必须以下划线、字母、
@
开头,不能以数字开头 - 不能包含空格或符号
- 不能是C#的关键字
- 区分大小写
- 不能和C#的类库名称相同
使用sizeof(基础类型)可以看它的存储尺寸
自动装箱和自动拆箱
这看起来好像很高级,其实并不然,这是个理论知识,都不需要操作,在C#里面已经自动帮你完成。
当一个值类型(基础类型)转换为对象类型时,则被成为装箱;另一方面,当一个对象类型装换为值类型时,则被称为拆箱
动态类型
这个就厉害了,可以动态的装换任何类型。动态类型是在运行时发生的,其他类型都是在编译时发生的。
关键词dynamic
声明动态类型的语法:
dynamic <variable_name> = value;
列如:
dynamic d=20;
字符串(String)类型
其实字符串没什么好说的,但是在C#
中,有个@
可以声明字符串,并且使用@
字符串可以任意换行,换行符缩进空格都计算在字符串长度之内。
string str=@"<!DOCTYPE html><!--[if IE 6]><html class="ie ie6 "><script type="text/javascript">window.location.href='/ie6.html'+window.location.search;</script><![endif]--><!--[if IE 8]><html class="ie ie8 "><![endif]--><!--[if IE 9]><html class="ie ie9 "><![endif]--><!--[if gt IE 9]><html><![endif]--><html class=""><head><meta name="referrer" content="unsafe-url" /><meta name="referrer" content="always" /><meta name="_dhsg" content="ij7t5mdfksda8fksdafka19b04cef36a" /><meta name="_dhsg2" content="290D43EF-9288-4d8d-8D05-D79D8B79CC67" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=Edge">";
声明指针类型
type* identifie;
例如:
char* cpter;
int* iptr;
类型转换
C#提供了基础类型转换的方法:
- ToBoolean 如果可能的话,把类型转换为布尔型。
- ToByte 把类型转换为字节类型。
- ToString 把类型转换为字符串类型。
还有很多,只要是基础类型,都可以To
一下。
变量定义
这些定义变量的语句,一般是通用的。JAVA
和Python
中这样定义也是合法的。
int i, j, k;
char c, ch;
float f, salary;
double d;
常量
常量一旦定义,就不可更改,所有的编程语言都是如此。如果可以更换,那就不叫做常量了。
整数常量可以是十进制、八进制或十六进制的常量。
- 前缀0x或0X,代表十六机制的常量
- 前缀为0,代表8进制
- 没有前缀为十进制
以下是各种类型的整数常量的实例:
85 /* 十进制 */
0213 /* 八进制 */
0x4b /* 十六进制 */
30 /* int */
30u /* 无符号 int */
30l /* long */
30ul /* 无符号 long */
有符号和无符号的区别:
有符合可以代表整数,无符号却不可以。
定义常量
常量是用const关键词来定义的,定义一个常量的语法如下:
const <data_type><constant_name> = value;
例如:
const double pi = 3.14159; // 常量声明
C#运算符
其实C#运算符和其他的编程语言没什么不同。这里就简单的过一遍
算数运算符
- +
- -
- *
- /
- %
- ++
- –
关系运算符
- ==
- !=
- >
- <
- >=
- <=
逻辑运算符
- &&
- ||
- !
还有很多,这些东西实在太基础啦,我也不想继续浪费长度,但是在这里我得说下++a
和a++
的区别。(a指整数变量)
- ++a是指先自增,然后在运算赋值。举个例子吧!
例子:
int c=0;
int a=0;
c=++a;
输出:
a=1;
c=1;
这里是先给a自增,然后在把a赋值给c。
- a++是指先赋值,后自增。同样来个例子。
例子:
int c=0;
int a=0;
c=a++;
输出:
a=1;
c=0;
为什么和上面的结果不一样?因为
a++
是先进行赋值,然后在相加。
吐槽:
喉咙发炎,自己买了点药,还是不见效,然后早早的去医院,人太多了,没办法,这天的文章有点少,但是每一篇文章我都是一个个字敲出来的。我的文章并不是针对0基础的,如果你看不懂,建议先入门。我也不会写零基础的教程,至少现在不会。原因是自己基础都还牢固,不能教坏别人不是?