以前就说,要开始写c#的博客,最近把linux大约写完了,现在开始c#了,java的博客简书一大堆,我就避免撞车吧,其实我是菜鸟(嘻嘻,写不出更好的了)
数据类型
c#数据类型主要分为二大类:值类型和引用数据类型。
值类型:
整数类型
sbyte 带符号的8位整数 short 带符号的16位整数
int 带符号的32位整数 long带符号的64位整数
byte无符号的8位整数 ushort无符号的16位整数
uint无符号的32位整数 ulong无符号的64位整数
实数数据类型
float 小数位7 32位单精度浮点数
double 小数15/16 64双精度浮点数
decimal 小数位28 128位高精度实数
decimal 专门用于财务计算,如果数值一decimal类型处理,通过使用M(m)将其强指定为decimal类型,如 decimal d=1.234567m;
boolean类型
表示真假,c#预定义了true,flase表示真假,注意在c,c++中常用0表示假,非0表示真,但是c#中boolean和整数类型不能相互转换,二者数据类型不同,这一点和java很相似
字符类型
char类型是一个16位的unicode,不在像c那样是一个8位的ASCII,c++和c的字符类型是该变量表示的ASCII码,字符变量值可以作为整数的一部分,可以对字符变量赋值为整数,这在c#是不行的。
结构类型
不同的类型元素组合而成,结构可以包含构造函数(constructors),常量(constants),域(fields),方法(methods),下标(indexers)等。
枚举数据类型
枚举类型(enumerated)是一个独特的数据类型,声明一组命令的常数。格式 enum 变量名{成员1[=值1],成员2[=值2],···········}。
引用类型
和值数据类型相比,引用类型不出差它们所代表的数据类型,它们储层实际数据类型。
类类型
类类型定义了一个包含数据成员,函数成员和嵌套类型。类类型支持继承
类是有访问属性的,其中public在内外可以访问,具体的应该到类哪里,我应该会介绍一下的。
对象类型
面向对象的数据类型大都提供一个根类型,java好像是object,层次结构其它对象都从它派生而来,c#的这个根类型是System.Object.所有内置类型和用户定义的类型都从它派生而来。
1.0 可以使用object引用绑定任何子类型的对象。对象的引用也可以用于反射,此时必须有代码来处理类型未知对象,类型c++的void指针
2.0 对象类型执行许多一般用途的基本方法,包括Equals(),GetHashCode(),GetType(),ToString().用户定义的类需要重写
字符串类型
在c字符串是一个字符数组,c++字符串一个对象,c#提供了自己的数据类型,字符串保存在堆中,因此把字符串复制给另一个字符串,会得到对内存同一个字符串二次引用。
接口类型
一个接口定义了一个协议,一个实现接口的类或者结构必须遵守它的协议。
数组类型
数组,是同一类型的数据集合,数组元素有序,声明 数据类型 [ ] 数组名。和c,c++不同c#定义数组并不为其分配内存(java也是这样),因此[ ]仅仅表示数组,不能定义长度。采用new为其分配内存
二维数组声明 数组类型[,] 数组名,比如 int[,] array;
数组初始化,声明初始发,如 int[,] arr=new int[]{1,2,3,4};不需要指明数组大小。
委托数据类型
委托是一种指向一个静态方法或一个对象的对象实列和对象方法的数据结构
结构类型数据直接储层在内存中,是指类型。类类型是引用类型
普及一下c#的输入,输出格式
输入格式:
Console.Read();
Console.ReadLine
Console类中提供Read,ReadLine方法以取得用户从键盘输入的字符串,其中ReadLine方法可以一次读入一行文本数据,直到遇到换行符为止。
输入整数: int m=Convert.ToInt16(Console.ReadLine());
输入浮点数:double d=Convert.ToDouble(Console.ReadLine());
输出格式:
Console.Write(["格式输出,]输出表达式列表);
Console.WriteLine(["格式输出,]输出表达式列表);
Console类提供Write,WriteLine方法,可以在控制台显示其变量列表字符串
Console.WriteLine()还允许用与c语言的printf()函数类似的方式显示格式化的结果。
相关code代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
//类类型
class Dflx
{
private string name;
protected double height;
public string love;
public Dflx(string name,double height,string love)
{
this.name = name;
this.height = height;
this.love = love;
}
public void display()
{
Console.WriteLine("姓名:{0},身高:{1},爱好:{2}",name,height,love);
}
}
class Program
{
//自定义结构体类型,和c++相似,但是有修饰符。
struct Studen
{
public string name;
public int age;
}
// 枚举类型
enum color { red, white, yellow };
static void Main(string[] args)
{
sbyte sb1 = 22,sb2=23;
short sh = 22;
int num= 222;
long l = 666;
byte by = 22;
ushort us = 11;
uint ui = 11;
ulong ul = 66;
Console.WriteLine("sbyte的长度:{0}", sizeof(sbyte));
Console.WriteLine("byte的长度:{0}", sizeof(byte));
Console.WriteLine("short的长度:{0}",sizeof(short));
Console.WriteLine("ulong的长度:{0}", sizeof(ulong));
decimal d = 1.123456m;
Console.WriteLine("d={0}",d);
char ch = '东';
Console.WriteLine("char的长度:{0} ,ch={1}", sizeof(char),ch);
Studen stu;
stu.name = "东风冷雪"; stu.age = 666;
Console.WriteLine("{0} {1}", stu.name, stu.age);
Console.WriteLine("我喜欢的颜色是:{0}", color.white);
Dflx dflx; //对象类型
dflx = new Dflx("东风冷雪", 1.72, "小说,动漫");
dflx.display();
int[,] arry; //数组数据类型。
arry = new int[3, 3]; //分配空间
int count = 1;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
arry[i, j] = count;
count++;
}
}
print(arry);
Console.ReadLine();
}
static void print(int[,] arry)
{
string space = " ";
for (int i = arry.GetLowerBound(0); i <= arry.GetUpperBound(0); i++)
{
for (int j = arry.GetLowerBound(1); j <= arry.GetUpperBound(1); j++)
{
Console.Write("元素{0}{1}:{2}{3,3}", i, j, arry.GetValue(i, j),space); // 输出元素的
}
Console.WriteLine();
}
}
}
}
结果如下
sbyte的长度:1
byte的长度:1
short的长度:2
ulong的长度:8
d=1.123456
char的长度:2 ,ch=东
东风冷雪 666
我喜欢的颜色是:white
姓名:东风冷雪,身高:1.72,爱好:小说,动漫
元素00:1 元素01:2 元素02:3
元素10:4 元素11:5 元素12:6
元素20:7 元素21:8 元素22:9
对于c# 必须慢慢的来深入,虽然我会c,c++,java语法,但是c#还是有许多细节我不知道
VS 这个功能看着很酷炫,用起来很舒服。
冬天了,说要早起,有些做不到了,跑步也有些动摇了,今天完成了
任务。
参考文章:
c#中的数据类型简介
二维数组打印