网上到处充斥这c#与java对比的文章,看了看,还是觉的MSDN上的一篇文章很全面和客观。《
针对JAVA开发人员的C#编程语言》。
我的第一天C#学习,总体感觉C#在语言层面上保留了更多C++/C的特点,比如virtual,override关键字的使用,比如结构(值类型,存储在栈上),比如delegate(类似函数指针)。比较感兴趣的也就是delegate、事件和attribute方面。C#某种意义上讲比java稍微复杂,比C++简单。
参照语言规范写的例子,抽象类、继承的例子,可以扩展成一个简单计算器:
<!---->using System;
using System.Collections;
namespace VirtualDemo
{
public abstract class Expression
{
public abstract double Evaluate(Hashtable vars);
}
public class Constant : Expression
{
double value;
public Constant(double value)
{
this.value = value;
}
public override double Evaluate(Hashtable vars)
{
return value;
}
}
public class VariableReference : Expression
{
string name;
public VariableReference(string name)
{
this.name = name;
}
public override double Evaluate(Hashtable vars)
{
object value = vars[name];
if (value == null)
{
throw new Exception("Unknown variable: " + name);
}
return Convert.ToDouble(value);
}
}
public class Operation : Expression
{
Expression left;
char op;
Expression right;
public Operation(Expression left, char op, Expression right)
{
this.left = left;
this.op = op;
this.right = right;
}
public override double Evaluate(Hashtable vars)
{
double x = left.Evaluate(vars);
double y = right.Evaluate(vars);
switch (op)
{
case '+': return x + y;
case '-': return x - y;
case '*': return x * y;
case '/': return x / y;
}
throw new Exception("Unknown operator");
}
}
public class Test
{
public static void Main(string []args)
{
Expression e = new Operation(
new VariableReference("x"),
'*',
new Operation(
new VariableReference("y"),
'+',
new Constant(2)
)
);
Hashtable vars = new Hashtable();
vars["x"] = 3;
vars["y"] = 5;
Console.WriteLine(e.Evaluate(vars)); // Outputs "21"
vars["x"] = 1.5;
vars["y"] = 9;
Console.WriteLine(e.Evaluate(vars)); // Outputs "16.5"
}
}
}
再来一个委托的例子,函数作为变量的传递和使用,对有C++经验或者动态语言经验的人来说不会奇怪:
<!---->using System;
namespace DelegateDemo
{
delegate double Function(double x);
class Multiplier
{
double factor;
public Multiplier(double factor)
{
this.factor = factor;
}
public double Multiply(double x)
{
return x * factor;
}
}
class Test
{
static double Square(double x)
{
return x * x;
}
static double[] Apply(double[] a, Function f)
{
double[] result = new double[a.Length];
//直接通过f()调用
for (int i = 0; i < a.Length; i++) result[i] = f(a[i]);
return result;
}
static void Main()
{
double[] a = { 0.0, 0.5, 1.0 };
//delegate Function分别赋予了不同的方法
double[] squares = Apply(a, new Function(Square));
double[] sines = Apply(a, new Function(Math.Sin));
Multiplier m = new Multiplier(2.0);
double[] doubles = Apply(a, new Function(m.Multiply));
foreach (double b in doubles)
{
Console.WriteLine(b);
}
}
}
}
分享到:
相关推荐
"C#与Java异同" C#和Java是两种流行的编程语言,都是面向对象的编程语言,但它们之间存在着许多异同点。本文将对C#和Java进行比较,总结它们之间的相同点和不同点,以便更好地理解这两种语言。 一、C#、C++和Java...
### 论C#与Java之异同 #### 引言 Dare Obasanjo撰写的这篇详尽且精准的文章——《论C#与Java之异同》首次发布于2001年,随着时间的推移,它已经成为了一个比较这两门语言的权威资料。基于C# 2.0和Java SE 6的新...
C#和Java是两种广泛应用的编程语言,它们在软件开发领域都有着广泛的影响力。NIIT(印度国家信息技术学院)的ISAS课程中,对比了这两种语言的异同,以帮助学生更好地理解和选择适合自己的编程工具。这里我们将深入...
### C#与JAVA的比较 #### 相同之处 C#与JAVA这两种现代高级编程语言在许多方面都有着显著的相似之处。这些相似性主要源于两者的设计理念和技术背景,特别是它们都受到了C++语言的重要影响。 1. **平台独立性**:...
《JAVA&C#]C#&Java差异手册》深入解析了C#与Java两种流行编程语言之间的异同,为初学者提供了一个清晰的对比视角。本文将根据提供的标题、描述及部分内文,详细阐述C#与Java的关键差异点,帮助读者理解两者在语言...
C#和Java是两种广泛应用的编程语言,它们在语法、类库和运行环境上有所区别。C#主要应用于Microsoft的.NET框架,而Java则是一种跨平台的语言,可以...此外,了解C#和Java之间的异同,有助于更好地理解和改进转换结果。
本文将深入探讨 C# 和 Java 在多个方面的异同,帮助开发者更好地理解这两种语言的特点。 #### 面向对象特性 C# 和 Java 都被设计为使用动态调度的类似于 C++ 语法的完全面向对象的语言。这意味着这两种语言中的...
本文将深入探讨C#和Java在泛型实现上的异同,帮助开发者更好地理解和利用这两种语言的泛型功能。 首先,我们来看C#中的泛型。C#自2.0版本开始引入泛型,它允许开发者在类、接口和方法中定义类型参数,从而创建可...
1. **C#的SDK(Software Development Kit)**:与Java的JDK类似,C#的SDK包含了.NET Framework,提供了一整套类库和开发工具。 2. **安全性**:C#也有其自己的安全模型,通过权限和角色为基础的安全机制来确保代码...
尽管C#在诞生之初就被外界认为是对Java的克隆或者替代品,但实际上,C#与Java在很多方面都有显著的差异,而不仅仅是Java的翻版。对于Java开发者来说,理解这些差异对于学习C#或扩展技术视野至关重要。 首先,让我们...
列举java与C#的异同让大家能更好的进行对比,从而加深印象。 是初学者必需掌握的技能,绝对物有所值; C#与Java的异同.ppt
下面将详细讨论C#和Java在不同方面的异同。 1. 主函数定义: C#中的主函数定义为`static void Main()`,而Java中则是`public static void main(String[] args)`。在C#中,你可以选择加上`Main`函数的返回类型,如`...
C#和Java是两种广泛应用的面向对象编程语言,它们在许多方面有相似之处,但也存在显著的差异。本文将从语法、平台独立性、内存管理、应用领域等多个角度,结合提供的八篇文档,深入探讨这两种语言的异同。 1. **...
《C#与Java对比》 ...这些对比展示了C#和Java在语法、错误处理、类型系统等方面的异同,开发者可以根据项目需求和个人偏好选择合适的语言。了解这些差异有助于提升编程效率,并能更好地理解和移植跨平台的代码。
1. **C#与Java的相似性和差异**:作者通过专家推荐和比较,详细阐述了C#和Java在语法、面向对象特性、内存管理、多线程、异常处理等方面的异同,帮助Java开发者快速理解和适应C#。 2. **JNI介绍**:JNI是Java平台的...
【C#与Java的比较(一)】 C#和Java都是现代高级编程语言,它们在很多方面具有相似性,但也存在显著的区别。本文将探讨这两者的异同,以帮助学习和使用C#的朋友更好地理解这两种语言的特点。 1. **C#与.NET平台** ...
飞扬”与 JAVA、C#、C++ 的异同 #### 易语言.飞扬简介 “易语言.飞扬”是中国本土开发的一款面向对象的编程语言,旨在为国内程序员提供一种更加贴近中文思维习惯的编程工具。相较于其他编程语言,“易语言.飞扬”在...
它们都有着自己的特点和优势,本文将对Java和C#进行比较,总结出它们之间的异同。 访问控制 在访问控制方面,C#有public、internal、protected、private四种访问级别,而Java只有public、protected、private三种...
【北大青鸟内部资料C#和Java】是针对IT初学者和进阶者的一份珍贵资源,涵盖了C#与Java两种编程语言的核心概念、异同点以及基于这两种语言的项目开发实践经验。北大青鸟作为知名的IT职业教育机构,其教学资料在业内...
本文将对Java与C#两种流行编程语言在语法上的异同进行深入分析。通过对比,读者可以更好地理解这两种语言的特点,从而根据项目需求选择合适的技术栈。以下是Java与C#在注释、数据类型、转换、常量、枚举以及运算符等...