【DotNet 技能系列】1. C#基础知识笔记
变量与类型
C#是强类型的语言,因此每个变量必须声明类型。在C# 新版本里面也可以用Var来声明。
从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型 var。 隐式类型的本地变量是强类型变量(就好像您已经声明该类型一样),但由编译器确定类型。 下面的两个 i 声明在功能上是等效的:
var number = 10; // implicity typed int number2 = 10; // explicity typed
变量的类型类别包括数值类型和引用类型,数值类型包括整型类型和非整型类型。
整型根据位数的不同,分为不同的具体类型,包含byte, short, int 和long等
非整型包括char,string等
变量声明方式
变量必须先声明,再赋值,最后使用。
变量的名称一定要有含义,而不能i,j,k这样!注意的是有含义,不是像C中的加Type类型做变量前缀。
1. 先声明、再赋值。
int num; num =3; // 这种方式不规范,容易引发问题。要避免这种方法
2. 定义变量时候直接赋值.
int num = 3;
3. 一次声明多个变量,变量之间用逗号分开.
int num1=20, num2=30, num3=40; // 而不是int i,j = 20,30(python 方式)
变量声明规则- 只能以字母,_和@开头,因此不能以$开头
C#变量区别大小写!
char A = 'A'; char a = 'a'; // A, a 不同的变量
变量命名规范
1. Camel 命名方法(驼峰): 首个单词的首字母小写,其他单词的首字母大写
2. Pascal 命名方法:每个单词的首字母都大写
C#语言实用Camel方法命名变量或者参数,而命名空间和类使用Pascal命名方法.
补充:还有一种C或者C++常见的命名方法叫匈牙利命名方法(这种方法不推荐在C#以及其他编程语言中).
不过匈牙利命名方法中的应用型命名方法在广泛应用!特别是对于有三个以上的单词组成的变量,这种方法很常用.
参考:
这才是真正的“匈牙利命名法”
匈牙利命名法的衰落和建议
C# Int
C# Int中的整型的范围一定要注意。
范围:-2,147,483,648 到 2,147,483,647
大小:有符号的32位整数
http://msdn.microsoft.com/zh-cn/library/5kzh1b5w.aspx
比如一个例子,C# int能存储手机号码吗?答案:不能,因为手机的长度超出了int的范围
C# Char
在C#中Char存储的是一个字符,要注意的是C# 是Unicode编码,所以Char是可以存储一个中文字符
class Program { static void Main(string[] args) { char firstname = '曾'; Console.WriteLine(firstname); Console.ReadKey(); } }
在给char类型的变量赋值的时候需要使用单引号’.
不过需要注意的是由于不同的系统对于Char类型的字符的实现是不一样的,所以Char对应的长度具体是几个字节需要根据系统来确定.比如SQL Server中的char字符是只占一个字节的.
C#中的Char的定义对于那些了解过C语言的人,但是又不是很精通的来说要特别注意。特别是对知识死记的或者没有运用过的人,孤立认为Char就占一个字节,而实际上这个对于不同过的语言定义是不一样的,要特别注意。
C# String
字符串定义:把多个字符连接起来.
String Length 为字符串的长度也就是字符的个数.
string word = "我是IT男"; Console.WriteLine(word.Length); // 5
Float, Double 和Decimal
float是32位的浮点数,double是64为的浮点数。decimal是128位数据类型,一般用来储存金钱。这里要注意。虽然decimal的位数多,但是范围比double小,甚至比float小,但是精度最高。
另外需要注意的是C#中直接写一个带小数点的实数默认类型为double类型,必须使用m/M来定义decimal类型。f/d/m 分别用来声明不同的浮点数类型
float salary = 7600.33; // 这里如果不加f,连编译都通不过decimal salary = 7600.33; // 这里也编译通不过,一定要加上m
类型转换
类型转换包括隐式转换和显式强制转换以及帮助转换函数、转换类。
隐式转换:
float number = 10; // 只有在从低到高转换才能进行
强制转换:
int num = (int)3.14; // 不同精度的数值转换可能丢失精度
帮助转换函数:
int.Parse("123”); // 如果解释的不是数值或者超出范围,编译不会出现错误吗,但是运行时就会抛出异常FormatException或者OverflowException
练习
string name = "某某IT男"; int age = 33; char sex = '男'; string enSex = "men"; // 注意要用双引号 short sexFlag = 1; // 1 表示男, 2 表示女 Console.WriteLine( "My name is {0}" + " age is {1}", name, age);