Results 1 to 4 of 4

Thread: ผมผิดตรงไหนช่วยบอกที (C#)

  1. #1
    virusman
    Guest


    ผมผิดตรงไหนช่วยบอกที (C#)

    ผมกำลังหัดเขียน เกี่ยวกับ Delagate โดยอ้างอิงหนังสือ "หัดเขียนโปรแกรมภาษาC# แบบมืออาชีพ" ของ คุณ วรชัย เชาว์วีระประสิทธิ์ ค่าย ARIP หน้า 239 แต่ติดปัญหานิดหน่อย อยากขอความกรุณาผู้รู้ช่วยบอก ที่ครับ

    using System;

    namespace Delegate_239
    {
    delegate double Operation(double left,double right);
    class Operations
    {
    private OperationProvider[] providers;
    public Operations()
    {
    providers = new OperationProvider[4];
    providers[0] =new OperationProvider('+',Operation(Add));
    providers[1] =new OperationProvider('-',Operation(Subtract));
    providers[2] =new OperationProvider('*',Operation(Multiply));
    providers[3] =new OperationProvider('/',Operation(Divide));
    }
    private double Add(double left,double right)
    {
    return left + right;
    }
    private double Subtract(double left ,double right)
    {
    return left - right;
    }
    private double Multiply(double left , double right)
    {
    return left * right;
    }
    private double Divide(double numerator,double denominator)
    {
    if(denominator ==0)
    {
    throw new DivideByZeroException("Denominator is Zero !");
    }
    return numerator/denominator;
    }

    public string[] Tokenize(string line,out Operation operation)
    {
    operation = null;
    string[] tokens = null;
    foreach(OperationProvider provider in providers)
    {
    char symbol = provider.Symbol;
    int i = line.IndexOf(symbol);
    if (i<0)
    {
    continue;
    }
    tokens = line.Split(symbol);
    operation = provider.Operation;
    break;
    }
    return tokens == null || tokens.Length !=2 ? null :tokens;
    }
    //private OperationProvider[] providers;
    }
    class OperationProvider
    {
    public OperationProvider(char symbol,Operation operation)
    {
    this.symbol = symbol;
    this.operation=operation;
    }
    public char Symbol {get {return symbol;}}
    public Operation Operation {get{return operation;}}
    private char symbol;
    private Operation operation;
    }
    class App
    {
    static void Maint()
    {
    string line = Console.ReadLine();
    Operations operations = new Operations();
    Operation operation;
    string [] tokens = operations.Tokenize(line, out operation);
    if(tokens != null)
    {
    Console.WriteLine("= {0}",operation(Convert.ToDouble(tokens[0]),
    Convert.ToDouble(tokens[1])));
    }
    else
    {
    Console.WriteLine("= invalid string");
    }
    }
    }
    }
    Error ที่ได้

    1. D:deverloperVCSDelegate_239Delegate_239Class1.cs(12): Method 'Delegate_239.Operations.Add(double, double)' referenced without parentheses
    2. D:deverloperVCSDelegate_239Delegate_239Class1.cs(13): Method 'Delegate_239.Operations.Subtract(double, double)' referenced without parentheses
    3. D:deverloperVCSDelegate_239Delegate_239Class1.cs(14): Method 'Delegate_239.Operations.Multiply(double, double)' referenced without parentheses
    4. D:deverloperVCSDelegate_239Delegate_239Class1.cs(15): Method 'Delegate_239.Operations.Divide(double, double)' referenced without parentheses

  2. #2
    Junior Member
    Join Date
    Sep 2006
    Location
    Thailand
    Posts
    15


    ตรงบรรทัดที่คุณเขียนว่า

    providers[0] = new OperationProvider(&#39;+&#39;, Operation(Add));
    providers[1] = new OperationProvider(&#39;-&#39;, Operation(Subtract));
    providers[2] = new OperationProvider(&#39;*&#39;, Operation(Multiply));
    providers[3] = new OperationProvider(&#39;/&#39;, Operation(Divide));

    ให้แก้เป็น
    providers[0] = new OperationProvider(&#39;+&#39;, new Operation(Add));
    providers[1] = new OperationProvider(&#39;-&#39;, new Operation(Subtract));
    providers[2] = new OperationProvider(&#39;*&#39;, new Operation(Multiply));
    providers[3] = new OperationProvider(&#39;/&#39;, new Operation(Divide));

    ไม่รู้ว่าแก้ปัญหาได้มั๊ย?

  3. #3
    Jedi Global Moderator
    Join Date
    Aug 2007
    Location
    Bangkok
    Posts
    136


    static void Maint()
    {
    }

    ตรง static void Main พิมพ์ผิดครับผม นอกนั้นก็เหมือนที่คุณ tanakorn บอก ครับผม ลอง Run ดูแล้ว Run ได้ครับ

  4. #4
    Jedi Global Moderator
    Join Date
    Aug 2007
    Location
    Bangkok
    Posts
    136


    อธิบายวิธีการทำงานของ code สำหรับผู้เริ่มต้นเขียน C# ครับ

    **Hidden Content: To see this hidden content your post count must be 1 or greater.**

Members who have read this thread : 0

Actions : (View-Readers)

There are no names to display.

Members who have read this thread: 0

There are no members to list at the moment.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •