C#学习笔记(隐式和显式转化、枚举类型、结构类型、数组类型和字符串)

1 类型转换

1.1 隐式转换:从类型A到类型B的转换可以在所有情况下进行,执行转换的规则非常简单,可以让编译器执行转换。

ushort destinationVar;

char sourceVar = ‘a‘;

destinationVar = sourceVar;

Console.WirteLine("soueceVar Val:{0}",sourceVar);

Console.wirteLine("destination Val:{0}",destinationVar);

输出的结果:

sourceVar Val:a

destination Val:97

即时两个变量存储的是相同的信息,但是不同的类型解释他们时,方式也是不同的。

编译器允许隐式转换的数值转换如下表:

类型 可以安全的转换为
byte short,ushort,int,uint,long,ulong,double,decimal
sbyte short,int,long,float,double,decimal
short int,long,float,double,decimal
ushort int,uint,long,ulong,float,double,decimal
int long,float,double,decimal
uint long,ulong.float,double,decimal
long float,double,decimal
ulong float,double,decimal
float double
char ushort,int,uint,long,ulong,float,double,decimal

1.2 显式转换:从类型A到类型B的转换只能在某些情况下进行,转换的规则比较复杂,应进行某种类型的处理。

byte destinationVar;

short sourceVar = 7;

destinationVar = (byte)sourceVar;

1.2.1 使用Convert命令进行显式转换

命令 结果
Convert.ToBoolean(val) val转换为bool
Convert.ToByte(val) val转换为byte
Convert.ToChar(val) val转换为char
Convert.ToDecimal(val) val转换为decimal
Convert.ToDouble(val) val转换为double
Convert.ToInt16(val) val转换为short
Convert.ToInt32(val) val转换为int
Convert.ToInt64(val) val转换为long
Convert.ToSByte(val) val转换为sbyte
Convert.ToSingle(val) val转换为float
Convert.ToString(val) val转换为string
Convert.ToUInt16(val) val转换为ushort
Convert.ToUInt32(val) val转换为uint
Convert.ToUInt64(val) val转换为ulong

2 枚举类型

关键字enmu

enmu<typeName>

{

  <value1>,

  <value2>,

  <value3>,

  ...

  <valueN>

}

接着声明这个新类型

<typeName><varName>;

并赋值:

<varName>=<typeName><value>;

注:默认情况下枚举中的第一个变量赋值为1,后面的值自动加1

3 结构类型

关键字struct

struct <typeName>

{

  <memberDeclarations>

}

<menberDeclarations>部分包含变量的声明(称为结构体的数据成员),其格式与往常一样。每个成员的声明都采用如下的格式:

<accessibility><type><name>;

要让调用结构的代码访问该结构的数据成员,可以对<accessibility>使用关键字public,例如:

struct route

{

  public orientation direction;

  public double distance;

}

定义了结构体类型之后,就可以定义新类型的变量,来使用该结构:

route myRoute;

然后通过句点字符来访问这个组合变量中数据成员:

myRoute.direction = orientation.north;

myRoute.distance = 10;

4 数组

前面的所有类型都有一个共同点:他们都只能存储一个值(结构中存储一组值)。有时,需要存储许多数据,这样就会带来不便。有时需要同时存储几个类型相同的值,而不是每一个值使用不同的变量。

4.1 声明数组:

<baseType>[]<name>;

例如:int[] myIntArray;

myIntArray[10] = 5;

或者:int[] myIntArray = new int[]arraySize;

或者:int[] myIntArray = new int[5]{1,2,3,4,5};数组大小必须和元素个数匹配

4.2 foreach循环

foreach循环可以使用一种简单的语法来定位数组中的每一个元素:
foreach(<baseType>(name) in <array>)

{

  //can usr <name> for each element

}

4.3 多维数组

二维数组声明

<baseType>[,] <name>;

多维数组声明

<baseType>[,,,] <name>;

5 字符串的处理

string类型变量可以看成是char变量的只读数组。这样就可以使用下面的语法访问每一个字符:

string myString = "A string";

char myChar = myString[1];

在foreach循环中使用字符串:

foreach(char character in mystring)

{

  Console.WirteLine("{0}",character);

}

时间: 2025-01-05 15:54:43

C#学习笔记(隐式和显式转化、枚举类型、结构类型、数组类型和字符串)的相关文章

C++学习笔记36 模版的显式具体化和显式实例化

C++的模版有时候很可能无法处理某些类型. 例如: #include <iostream> using namespace std; class man{ private: string name; int data; public: man(string s,int i):name(s),data(i){ } void show()const{ cout<<"this name is "<<name<<" ,data=&quo

VBScript学习笔记 - 作用域,变量显式声明

<p>在脚本主体中声明或创建一个变量时,默认是全局作用域(global scope)的:而在函数或子例程中定义的变量,默认是私有作用域(private scope)的.</p><p>要显式声明变量的作用域,可用public语句和private语句</p><div class="cnblogs_code" style="border-top: #cccccc 1px solid; border-right: #cccccc

android之intent显式,显式学习

intent,意图 当从一个Activity到另一个Activity时调用,这里重点学习显式,隐式的使用 使用语句上的区别: 隐式意图:                 显式意图: setAction                                            跳转到其他应用:setClassName setData 跳转到自己应用:setClass addCategory(当为DEFAULT时可无) 一.无参时的显式.隐式举例 显式-到自己应用(最简单情况): /*

Oracle-35-隐式游标&amp;显式游标

一.游标作用(或定义) 1.PL/SQL提供游标机制处理多行记录结果集: 2.游标类似于指针,使应用程序一次可以处理其中的一行记录,比如将游标放入一个for循环中,每循环一次就处理一行记录,那么循环n次就可以处理n行记录: 3.Oracle中,可以分为显式游标和隐式游标两种,比如select*fromstudent就是用隐式游标进行遍历student表,然后将查询结果展示: 4.在平常在进行SELECT查询.DML操作Oracle都会自动创建声明"隐式游标"来处理结果数据: 6.如果需

springmvc学习笔记(15)-数据回显

springmvc学习笔记(15)-数据回显 springmvc学习笔记15-数据回显 pojo数据回显方法 简单类型数据回显 本文介绍springmvc中数据回显的几种实现方法 数据回显:提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面. pojo数据回显方法 1.springmvc默认对pojo数据进行回显. pojo数据传入controller方法后,springmvc自动将pojo数据放到request域,key等于pojo类型(首字母小写) 使用@ModelAttribute

C++学习笔记-隐式成员函数

通过一个例子来复习C++操作符重载及隐式成员函数.MyString类模仿标准string类,简单的实现了构造一个字符串.字符串比较.取单个字符等功能.如下: #ifndef MYSTRING_H_ #define MYSTRING_H_ #include <iostream> using std::ostream; class MyString { public: //默认构造函数 MyString(void); //析构方法 ~MyString(void); //构造函数 MyString(

scala学习笔记-隐式转换与隐式参数(18)

Scala提供的隐式转换和隐式参数功能,是非常有特色的功能.是Java等编程语言所没有的功能.它可以允许你手动指定,将某种类型的对象转换成其他类型的对象.通过这些功能,可以实现非常强大,而且特殊的功能. Scala的隐式转换,其实最核心的就是定义隐式转换函数,即implicit conversion function.定义的隐式转换函数,只要在编写的程序内引入,就会被Scala自动使用.Scala会根据隐式转换函数的签名,在程序中使用到隐式转换函数接收的参数类型定义的对象时,会自动将其传入隐式转

安卓突击:隐式、显式Intent

android当中显式intent和隐式intent的区别 定义: Intent定义:Intent是一种在不同组件之间传递的请求消息,是应用程序发出的请求和意图.作为一个完整的消息传递机制,Intent不仅需要发送端,还需要接收端. 显式Intent定义:对于明确指出了目标组件名称的Intent,我们称之为显式Intent. 隐式Intent定义:对于没有明确指出目标组件名称的Intent,则称之为隐式Intent. 说明:Android系统使用IntentFilter 来寻找与隐式Intent

AngularJS中的隐式和显式依赖注入

在之前学习AngularJS的过程中,都是用到了显式依赖注入,比如: <script type="text/javascript"> angular.module('app', []) .controller('Controller1', function($scope) { $scope.something = 'hello world'; }); </script> 依赖注入$scope.这么写有个弊端,在发布的时候,往往要压缩JavaScript代码,压缩

Windows提供了两种将DLL映像到进程地址空间的方法(隐式和显式)

调用DLL,首先需要将DLL文件映像到用户进程的地址空间中,然后才能进行函数调用,这个函数和进程内部一般函数的调用方法相同.Windows提供了两种将DLL映像到进程地址空间的方法: 1. 隐式的加载时链接 这种方法需要DLL工程经编译产生的LIB文件,此文件中包含了DLL允许应用程序调用的所有函数的列表,当链接器发现应用程序调用了LIB文件列出的某个函数,就会在应用程序的可执行文件的文件映像中加入一些信息,这些信息指出了包含这个函数的DLL文件的名字.当这个应用程序运行时,也就是它的可执行文件