`

C#与java的异同

阅读更多
    网上到处充斥这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.00.51.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#和Java进行比较,总结它们之间的相同点和不同点,以便更好地理解这两种语言。 一、C#、C++和Java...

    论C#与Java之异同

    ### 论C#与Java之异同 #### 引言 Dare Obasanjo撰写的这篇详尽且精准的文章——《论C#与Java之异同》首次发布于2001年,随着时间的推移,它已经成为了一个比较这两门语言的权威资料。基于C# 2.0和Java SE 6的新...

    NIIT ISAS C#与JAVA的异同资料及简单ppt

    C#和Java是两种广泛应用的编程语言,它们在软件开发领域都有着广泛的影响力。NIIT(印度国家信息技术学院)的ISAS课程中,对比了这两种语言的异同,以帮助学生更好地理解和选择适合自己的编程工具。这里我们将深入...

    C#与JAVA的比较

    ### C#与JAVA的比较 #### 相同之处 C#与JAVA这两种现代高级编程语言在许多方面都有着显著的相似之处。这些相似性主要源于两者的设计理念和技术背景,特别是它们都受到了C++语言的重要影响。 1. **平台独立性**:...

    [JAVA&C#]C#&Java差异手册.pdf

    《JAVA&C#]C#&Java差异手册》深入解析了C#与Java两种流行编程语言之间的异同,为初学者提供了一个清晰的对比视角。本文将根据提供的标题、描述及部分内文,详细阐述C#与Java的关键差异点,帮助读者理解两者在语言...

    c#代码转java代码工具

    C#和Java是两种广泛应用的编程语言,它们在语法、类库和运行环境上有所区别。C#主要应用于Microsoft的.NET框架,而Java则是一种跨平台的语言,可以...此外,了解C#和Java之间的异同,有助于更好地理解和改进转换结果。

    C#与java比较

    本文将深入探讨 C# 和 Java 在多个方面的异同,帮助开发者更好地理解这两种语言的特点。 #### 面向对象特性 C# 和 Java 都被设计为使用动态调度的类似于 C++ 语法的完全面向对象的语言。这意味着这两种语言中的...

    关于C#、java泛型的看法

    本文将深入探讨C#和Java在泛型实现上的异同,帮助开发者更好地理解和利用这两种语言的泛型功能。 首先,我们来看C#中的泛型。C#自2.0版本开始引入泛型,它允许开发者在类、接口和方法中定义类型参数,从而创建可...

    c#和java基础的资料试题一览

    1. **C#的SDK(Software Development Kit)**:与Java的JDK类似,C#的SDK包含了.NET Framework,提供了一整套类库和开发工具。 2. **安全性**:C#也有其自己的安全模型,通过权限和角色为基础的安全机制来确保代码...

    C#和JAVA的比较

    尽管C#在诞生之初就被外界认为是对Java的克隆或者替代品,但实际上,C#与Java在很多方面都有显著的差异,而不仅仅是Java的翻版。对于Java开发者来说,理解这些差异对于学习C#或扩展技术视野至关重要。 首先,让我们...

    java与C#的相同点与不同点

    列举java与C#的异同让大家能更好的进行对比,从而加深印象。 是初学者必需掌握的技能,绝对物有所值; C#与Java的异同.ppt

    C#和Java的区别(适合初学者)

    下面将详细讨论C#和Java在不同方面的异同。 1. 主函数定义: C#中的主函数定义为`static void Main()`,而Java中则是`public static void main(String[] args)`。在C#中,你可以选择加上`Main`函数的返回类型,如`...

    C#和JAVA的相同点和不同点_八个文档详细比较

    C#和Java是两种广泛应用的面向对象编程语言,它们在许多方面有相似之处,但也存在显著的差异。本文将从语法、平台独立性、内存管理、应用领域等多个角度,结合提供的八篇文档,深入探讨这两种语言的异同。 1. **...

    C#与Java对比.pdf

    《C#与Java对比》 ...这些对比展示了C#和Java在语法、错误处理、类型系统等方面的异同,开发者可以根据项目需求和个人偏好选择合适的语言。了解这些差异有助于提升编程效率,并能更好地理解和移植跨平台的代码。

    C# For Java Programmers

    1. **C#与Java的相似性和差异**:作者通过专家推荐和比较,详细阐述了C#和Java在语法、面向对象特性、内存管理、多线程、异常处理等方面的异同,帮助Java开发者快速理解和适应C#。 2. **JNI介绍**:JNI是Java平台的...

    C#与Java的比较(一).doc

    【C#与Java的比较(一)】 C#和Java都是现代高级编程语言,它们在很多方面具有相似性,但也存在显著的区别。本文将探讨这两者的异同,以帮助学习和使用C#的朋友更好地理解这两种语言的特点。 1. **C#与.NET平台** ...

    "易语言.飞扬”与 JAVA、C#、C++ 的异同

    飞扬”与 JAVA、C#、C++ 的异同 #### 易语言.飞扬简介 “易语言.飞扬”是中国本土开发的一款面向对象的编程语言,旨在为国内程序员提供一种更加贴近中文思维习惯的编程工具。相较于其他编程语言,“易语言.飞扬”在...

    Java和C#的比较

    它们都有着自己的特点和优势,本文将对Java和C#进行比较,总结出它们之间的异同。 访问控制 在访问控制方面,C#有public、internal、protected、private四种访问级别,而Java只有public、protected、private三种...

    北大青鸟内部资料C#和java

    【北大青鸟内部资料C#和Java】是针对IT初学者和进阶者的一份珍贵资源,涵盖了C#与Java两种编程语言的核心概念、异同点以及基于这两种语言的项目开发实践经验。北大青鸟作为知名的IT职业教育机构,其教学资料在业内...

    Java与c#语法及对比

    本文将对Java与C#两种流行编程语言在语法上的异同进行深入分析。通过对比,读者可以更好地理解这两种语言的特点,从而根据项目需求选择合适的技术栈。以下是Java与C#在注释、数据类型、转换、常量、枚举以及运算符等...

Global site tag (gtag.js) - Google Analytics