当前位置:
首页 > 编程开发 > Objective-C编程 >
-
c++程序员快速学习c#之一
制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
五.表达式
C#中的运算符,优先级和C++一样,但是需要注意下面的四个运算符
* , -> , & ,sizeof
上面的四个运算符在C#的不安全代码中可以使用,但在一般的C#代码中使用是错误的,C#取消了指针,想当然和指针有关的操作符都不能用了。
六.流程控制
1.if/if….else语句
这个语句和C++没有区别.但是结合类型定义中所讲的类型转换,这里需要注意一个问题,看程序
bool a;
if (a=Getnum()) //假设Getnum返回一个整数值
{
//a为非0
}
else
{
//a为0
}
在C++中上面的代码是正确的,但是在C#中是错误的,一个整数值是不可以赋给BOOL值的,这样做可以增强代码的安全性。
2.switch
选择分支语句和C++用法也相当,但是C#中对它的格式更加严格了,每个case语句后面都必须跟上break,不然就是错误的语句,但是也有例外,可以使用臭名昭著的GOTO语句,跳转到下个case语句,这样编译器是不会报错的,当然如果你真的希望有多个条件执行相同语句的话,可以省略写成下面的方法:
switch (char c)
{
case ‘ua’:
case ‘us’:
case ‘en’:string language=”English”;break;
}
3.循环语句
C++中的3种循环语句:for , while , do…while 和C#中是相同的。但是C#中添加了一种循环语句,在对数组的输出方面的使用非常灵活,它就是:foreach。它的语法格式:
foreach (<变量类型> <变量名> in <数组名>) {}
不管是一维还是多维数组,操作都一样方便,它会自动知道数组的大小对其操作,我们不需要关心它是否会溢出。
C#中现在增加了一种变长数组,对它的操作,foreach也可以做到,但格式不同,看下面的例子
例:
using System;
namespace ConsoleApplication1
{
class Class1
{
static void Main(string[] args)
{
int[,] a1=new int[2,2]{{1,2},{3,4}};
foreach (int b1 in a1)
{
Console.WriteLine ("{0}",b1);//对不变长数组的操作
}
int[][] a2=new int[2][];
a2[0]=new int[2]{0,1};
a2[1]=new int[3]{3,4,5};
foreach (int[] b20 in a2)
{
foreach (int b21 in b20)
Console.WriteLine ("{0}",b21);//对变长数组的操作
}
}
}
}
对于变长数组的如此操作,是因为a2包含的是一个int[]元素,而不是int元素,想想我们之前讲的变长数组也叫数组的数组,其实是2个数组的欠套。
现在我们再来看一个对foreach的使用:
int[,] a1=new int[2,2]{{1,2},{3,4}};
foreach (int b1 in a1)
{
b1=3; //错误
}
为什么错误,还记得上面我说的一句话吗?“在对数组的输出方面的使用非常灵活”。也许你已经看出来了,是的,foreach语句只能对数据进行输出,因为它是只读的,不能改变任何数组元素的值。
4.跳转语句
C#中的跳转语句和C++中一样有:goto , return , break ,continue
七.函数
讲到C#的函数,觉得有点别扭,因为现在的所以函数都是包含在一个类当中了,这样就和C++中类的方法的用法相似了,所以在C++中的标准函数需要定义的过程也没有了,这样确切的说函数在C#中已经不复存在了,都变成方法了嘛!
首先我们来看一下C#方法的使用的例子,例:
using System;
namespace ConsoleApplication1
{
class Class1
{
static void Main(string[] args)
{
Write();
}
static void Write()
{
Console.WriteLine ("This is Text");
}
}
}
看上去用法和C++差不多,但是注意static静态限制符,我们可以回想一下C++类的方法的使用
class my
{
public:
void a(){ b();}
void b(){cout<<"this is text";}
};
void main()
{
my a;
a.a ();
}
C++在类中调用自己的方法是不需要加static的,但是在C#中必须加,因为C#是完全面向对象的语言,只有当方法是静态的时候才能够直接调用,不然必须先用类创建一个实例才能调用。
1.参数
C#的方法和C++中的函数在返回值,参数传递方面是一样的,唯一的区别是引用的传递。
也许你想起来上面所讲,C#中取消了&操作符,这意味着没有了引用传递了,其实不是没有,而是不用&,改成了ref,例:
class Class1
{
static void Main(string[] args)
{
int a=1,b=2;
Console.WriteLine ("{0} {1}",a,b);
change(ref a,ref b) ;
Console.WriteLine ("{0} {1}",a,b);
}
static void change(ref int a,ref int b)
{
int c;
c=a;
a=b;
b=c;
}
}
输出结果:
1 2
2 1
在形参和实参中加上ref就完成了引用,这样对a,b的值进行了交换。
2.方法重载
C#的函数重载和C++一样没有区别。
3.结构函数
上面我用了方法,这里是函数,所以它首先不需要关键字static,这个函数是一个结构的函数,它在类的外部,所以不需要static。例:
struct mytext
{
public int num;
public int text()
{
return num;
}
}
class Class1
{
static void Main(string[] args)
{
mytext frist;
int a;
frist.num =5;
a=frist.text ();
Console.WriteLine ("{0}",a);
}
}
输出结果: 5
4.作用域
基本上C#的变量作用域和C#没有区别,只要注意一点,对于全局变量,放在Main函数的外面,类的内部,并且和方法一样,必须加上static.
5.委托
委托在C++里面是没有的,它的定义也很难懂,它是一种可以把引用存储为函数的类型。虽然你读了N便也不太明白它讲的意思,那么我们就通过一个程序来看看,它到底有什么功能,它做了写什么事情。
using System;
namespace ConsoleApplication1
{
class Class1
{
delegate double chooes(double num1,double num2);
static double add(double num1,double num2)
{
return num1+num2;
}
static double odd(double num1,double num2)
{
return num1-num2;
}
static void Main(string[] args)
{
chooes process;
bool m_bool=true;
double num;
if (m_bool)
{
process =new chooes (add);
}
else
{
process =new chooes (odd);
}
num=process(10,5);
Console.WriteLine ("{0}",num);
m_bool=false;
if (m_bool)
{
process =new chooes (add);
}
else
{
process =new chooes (odd);
}
num=process(10,5);
Console.WriteLine ("{0}",num);
}
}
}
首先看到一个不认识的关键字: delegate
它即使定义委托函数的关键字。delegate 后面跟着的就和C++中的函数定义一样,但是委托函数没有函数体,从程序中你就可以看见。程序中还有2个函数除了函数名字不同外,函数类型,参数都是一样的,委托函数定义后,必须和类一样定义一个实例,然后用关键字new初始化。从初始,化中你因该可以看出端倪了,它把另外的函数初始化了给它。对了它其实就是别的函数的一个别名嘛,难怪称作引用存储。
通过它的委托,它就可以变成不同函数的别名,这样的好处就是。我们不需要知道真正有作用的函数是哪一个,只需要知道一个函数就可以对其他任意的函数进行调用,这样的选择就象一个要使用的“插件”,委托函数的重要用途在windows程序开发中的事件和事件处理中才能完全体现。
C#中现在增加了一种变长数组,对它的操作,foreach也可以做到,但格式不同,看下面的例子
例:
using System;
namespace ConsoleApplication1
{
class Class1
{
static void Main(string[] args)
{
int[,] a1=new int[2,2]{{1,2},{3,4}};
foreach (int b1 in a1)
{
Console.WriteLine ("{0}",b1);//对不变长数组的操作
}
int[][] a2=new int[2][];
a2[0]=new int[2]{0,1};
a2[1]=new int[3]{3,4,5};
foreach (int[] b20 in a2)
{
foreach (int b21 in b20)
Console.WriteLine ("{0}",b21);//对变长数组的操作
}
}
}
}
对于变长数组的如此操作,是因为a2包含的是一个int[]元素,而不是int元素,想想我们之前讲的变长数组也叫数组的数组,其实是2个数组的欠套。
现在我们再来看一个对foreach的使用:
int[,] a1=new int[2,2]{{1,2},{3,4}};
foreach (int b1 in a1)
{
b1=3; //错误
}
为什么错误,还记得上面我说的一句话吗?“在对数组的输出方面的使用非常灵活”。也许你已经看出来了,是的,foreach语句只能对数据进行输出,因为它是只读的,不能改变任何数组元素的值。
4.跳转语句
C#中的跳转语句和C++中一样有:goto , return , break ,continue
七.函数
讲到C#的函数,觉得有点别扭,因为现在的所以函数都是包含在一个类当中了,这样就和C++中类的方法的用法相似了,所以在C++中的标准函数需要定义的过程也没有了,这样确切的说函数在C#中已经不复存在了,都变成方法了嘛!
五.表达式
C#中的运算符,优先级和C++一样,但是需要注意下面的四个运算符
* , -> , & ,sizeof
上面的四个运算符在C#的不安全代码中可以使用,但在一般的C#代码中使用是错误的,C#取消了指针,想当然和指针有关的操作符都不能用了。
六.流程控制
1.if/if….else语句
这个语句和C++没有区别.但是结合类型定义中所讲的类型转换,这里需要注意一个问题,看程序
bool a;
if (a=Getnum()) //假设Getnum返回一个整数值
{
//a为非0
}
else
{
//a为0
}
在C++中上面的代码是正确的,但是在C#中是错误的,一个整数值是不可以赋给BOOL值的,这样做可以增强代码的安全性。
2.switch
选择分支语句和C++用法也相当,但是C#中对它的格式更加严格了,每个case语句后面都必须跟上break,不然就是错误的语句,但是也有例外,可以使用臭名昭著的GOTO语句,跳转到下个case语句,这样编译器是不会报错的,当然如果你真的希望有多个条件执行相同语句的话,可以省略写成下面的方法:
switch (char c)
{
case ‘ua’:
case ‘us’:
case ‘en’:string language=”English”;break;
}
3.循环语句
C++中的3种循环语句:for , while , do…while 和C#中是相同的。但是C#中添加了一种循环语句,在对数组的输出方面的使用非常灵活,它就是:foreach。它的语法格式:
foreach (<变量类型> <变量名> in <数组名>) {}
不管是一维还是多维数组,操作都一样方便,它会自动知道数组的大小对其操作,我们不需要关心它是否会溢出。
C#中现在增加了一种变长数组,对它的操作,foreach也可以做到,但格式不同,看下面的例子
例:
using System;
namespace ConsoleApplication1
{
class Class1
{
static void Main(string[] args)
{
int[,] a1=new int[2,2]{{1,2},{3,4}};
foreach (int b1 in a1)
{
Console.WriteLine ("{0}",b1);//对不变长数组的操作
}
int[][] a2=new int[2][];
a2[0]=new int[2]{0,1};
a2[1]=new int[3]{3,4,5};
foreach (int[] b20 in a2)
{
foreach (int b21 in b20)
Console.WriteLine ("{0}",b21);//对变长数组的操作
}
}
}
}
对于变长数组的如此操作,是因为a2包含的是一个int[]元素,而不是int元素,想想我们之前讲的变长数组也叫数组的数组,其实是2个数组的欠套。
现在我们再来看一个对foreach的使用:
int[,] a1=new int[2,2]{{1,2},{3,4}};
foreach (int b1 in a1)
{
b1=3; //错误
}
为什么错误,还记得上面我说的一句话吗?“在对数组的输出方面的使用非常灵活”。也许你已经看出来了,是的,foreach语句只能对数据进行输出,因为它是只读的,不能改变任何数组元素的值。
4.跳转语句
C#中的跳转语句和C++中一样有:goto , return , break ,continue
七.函数
讲到C#的函数,觉得有点别扭,因为现在的所以函数都是包含在一个类当中了,这样就和C++中类的方法的用法相似了,所以在C++中的标准函数需要定义的过程也没有了,这样确切的说函数在C#中已经不复存在了,都变成方法了嘛!
首先我们来看一下C#方法的使用的例子,例:
using System;
namespace ConsoleApplication1
{
class Class1
{
static void Main(string[] args)
{
Write();
}
static void Write()
{
Console.WriteLine ("This is Text");
}
}
}
看上去用法和C++差不多,但是注意static静态限制符,我们可以回想一下C++类的方法的使用
class my
{
public:
void a(){ b();}
void b(){cout<<"this is text";}
};
void main()
{
my a;
a.a ();
}
C++在类中调用自己的方法是不需要加static的,但是在C#中必须加,因为C#是完全面向对象的语言,只有当方法是静态的时候才能够直接调用,不然必须先用类创建一个实例才能调用。
1.参数
C#的方法和C++中的函数在返回值,参数传递方面是一样的,唯一的区别是引用的传递。
也许你想起来上面所讲,C#中取消了&操作符,这意味着没有了引用传递了,其实不是没有,而是不用&,改成了ref,例:
class Class1
{
static void Main(string[] args)
{
int a=1,b=2;
Console.WriteLine ("{0} {1}",a,b);
change(ref a,ref b) ;
Console.WriteLine ("{0} {1}",a,b);
}
static void change(ref int a,ref int b)
{
int c;
c=a;
a=b;
b=c;
}
}
输出结果:
1 2
2 1
在形参和实参中加上ref就完成了引用,这样对a,b的值进行了交换。
2.方法重载
C#的函数重载和C++一样没有区别。
3.结构函数
上面我用了方法,这里是函数,所以它首先不需要关键字static,这个函数是一个结构的函数,它在类的外部,所以不需要static。例:
struct mytext
{
public int num;
public int text()
{
return num;
}
}
class Class1
{
static void Main(string[] args)
{
mytext frist;
int a;
frist.num =5;
a=frist.text ();
Console.WriteLine ("{0}",a);
}
}
输出结果: 5
4.作用域
基本上C#的变量作用域和C#没有区别,只要注意一点,对于全局变量,放在Main函数的外面,类的内部,并且和方法一样,必须加上static.
5.委托
委托在C++里面是没有的,它的定义也很难懂,它是一种可以把引用存储为函数的类型。虽然你读了N便也不太明白它讲的意思,那么我们就通过一个程序来看看,它到底有什么功能,它做了写什么事情。
using System;
namespace ConsoleApplication1
{
class Class1
{
delegate double chooes(double num1,double num2);
static double add(double num1,double num2)
{
return num1+num2;
}
static double odd(double num1,double num2)
{
return num1-num2;
}
static void Main(string[] args)
{
chooes process;
bool m_bool=true;
double num;
if (m_bool)
{
process =new chooes (add);
}
else
{
process =new chooes (odd);
}
num=process(10,5);
Console.WriteLine ("{0}",num);
m_bool=false;
if (m_bool)
{
process =new chooes (add);
}
else
{
process =new chooes (odd);
}
num=process(10,5);
Console.WriteLine ("{0}",num);
}
}
}
首先看到一个不认识的关键字: delegate
它即使定义委托函数的关键字。delegate 后面跟着的就和C++中的函数定义一样,但是委托函数没有函数体,从程序中你就可以看见。程序中还有2个函数除了函数名字不同外,函数类型,参数都是一样的,委托函数定义后,必须和类一样定义一个实例,然后用关键字new初始化。从初始,化中你因该可以看出端倪了,它把另外的函数初始化了给它。对了它其实就是别的函数的一个别名嘛,难怪称作引用存储。
通过它的委托,它就可以变成不同函数的别名,这样的好处就是。我们不需要知道真正有作用的函数是哪一个,只需要知道一个函数就可以对其他任意的函数进行调用,这样的选择就象一个要使用的“插件”,委托函数的重要用途在windows程序开发中的事件和事件处理中才能完全体现。
C#中现在增加了一种变长数组,对它的操作,foreach也可以做到,但格式不同,看下面的例子
例:
using System;
namespace ConsoleApplication1
{
class Class1
{
static void Main(string[] args)
{
int[,] a1=new int[2,2]{{1,2},{3,4}};
foreach (int b1 in a1)
{
Console.WriteLine ("{0}",b1);//对不变长数组的操作
}
int[][] a2=new int[2][];
a2[0]=new int[2]{0,1};
a2[1]=new int[3]{3,4,5};
foreach (int[] b20 in a2)
{
foreach (int b21 in b20)
Console.WriteLine ("{0}",b21);//对变长数组的操作
}
}
}
}
对于变长数组的如此操作,是因为a2包含的是一个int[]元素,而不是int元素,想想我们之前讲的变长数组也叫数组的数组,其实是2个数组的欠套。
现在我们再来看一个对foreach的使用:
int[,] a1=new int[2,2]{{1,2},{3,4}};
foreach (int b1 in a1)
{
b1=3; //错误
}
为什么错误,还记得上面我说的一句话吗?“在对数组的输出方面的使用非常灵活”。也许你已经看出来了,是的,foreach语句只能对数据进行输出,因为它是只读的,不能改变任何数组元素的值。
4.跳转语句
C#中的跳转语句和C++中一样有:goto , return , break ,continue
七.函数
讲到C#的函数,觉得有点别扭,因为现在的所以函数都是包含在一个类当中了,这样就和C++中类的方法的用法相似了,所以在C++中的标准函数需要定义的过程也没有了,这样确切的说函数在C#中已经不复存在了,都变成方法了嘛!
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数