在哪里正确编写此代码

时间:2015-08-28 18:26:45

标签: c# visual-studio

c#的新手......我得到了这个问题并得到了答案,但我很困惑应该在哪里写答案(在主要或在班级本身)

问题: 给出以下类的实例圈:

public sealed class Circle 
{
  private double radius;

  public double Calculate(Func<double, double> op) {
    return op(radius);
  }
}

编写代码来计算圆的周长,而不修改Circle类本身。

答案是:

circle.Calculate(r => 2 * Math.PI * r);

在这种情况下=>究竟是什么意思

2 个答案:

答案 0 :(得分:1)

与编写匿名代表

相同
header

答案 1 :(得分:0)

所以,首先要做的事情。我不知道你是否熟悉Java或任何其他“常见”编程语言,但如果你想执行这段代码,你必须有一个方法。您可以在 Circle 类中执行此操作,也可以创建 Main 类。

如果你选择创建另一个类,那就是这样的:

package com.Prasad.formdetails;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHandler extends SQLiteOpenHelper {
  //database version
  private static final int Database_Version =1;
  //database name
  private static final String Database_Name = "persondetails";
  //table name
  private static final String Table_Name="persondetails";
  //table column names
  private static final String key_personName="Name";
  private static final String key_mailId="mailID";
  private static final String key_phone="Phone";
  @Override
  public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    String CREATE_DETAILS_TABLLE="CREATE TABLE" + 
    Table_Name + "(" + key_personName + "text" + key_mailId + "text primary key" + key_phone + "text" + ")";
    db.execSQL(CREATE_DETAILS_TABLLE);
  }
  //constructor as no default constructor in super
    public DatabaseHandler(Context context){
        super(context,Database_Name, null, Database_Version);
    }


    @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub
    //delete the existing table while updating
    db.execSQL("drop table if exists" + Table_Name);
    //again create table
    onCreate(db);
  }

  void addPerson(Person person) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(key_personName, person.getName()); // Person Name
    values.put(key_mailId, person.getId()); // Person mail id
    values.put(key_phone, person.getPhone()); // Person Phone

    // Inserting Row
    db.insert(Table_Name, null, values);
    db.close(); // Closing database connection
  }

    Person getPerson(String id) {
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor=db.query(Table_Name,new String[] {key_personName,key_mailId,key_phone}, key_mailId + "=?",
            new String[]{id},null, null, null, null);
    if (cursor != null)
        cursor.moveToFirst();

    Person person = new Person(cursor.getString(0),
            cursor.getString(1), cursor.getString(2));
    // return contact
    return person;
}
}

此外,阅读 Lambda表达式http://www.codeproject.com/Tips/298963/Understand-Lambda-Expressions-in-minutes非常重要(这个=&gt;你要问的是获取lambda表达式的参数并将其应用到一个函数。所以,在你的情况下,无论 r 的值是什么,该函数都将返回PI的两倍,即你提供的 r 的值。

希望它有所帮助!