转载:http://blog.csdn.net/seattle1215/article/details/6657814

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace Cash
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. (new Program()).run();
  12. // writeFee(calculate(dailyRate, workDay));
  13. // 对于非 static 方法,若想像上面这样直接调用则会报以下错
  14. // Error    1 An object reference is required
  15. // for the non-static field, method, or
  16. // property 'Cash.Program.readDouble(string)'
  17. printfOtherthing("static method is called.");        // static 方法可直接调用
  18. Program program = new Program();        // 非 static 方法需要先创建一个对象
  19. // 然后用对象调用
  20. program.printSomething("non-static menthod is called.");
  21. }
  22. public void run()
  23. {
  24. double dailyRate = readDouble("please enter your rate: ");
  25. int workDay = readInt("please enter your days of working: ");
  26. writeFee(calculate(dailyRate, workDay));
  27. }
  28. private void writeFee(double p)
  29. {
  30. Console.WriteLine("The consultant's fee is: {0}", p * 1.6);
  31. }
  32. private double calculate(double dailyRate, int workDay)
  33. {
  34. return dailyRate * workDay;
  35. }
  36. private int readInt(string p)
  37. {
  38. Console.WriteLine(p);
  39. string a = Console.ReadLine();          // 读取输入的字符(readline读取的
  40. // 字符都是 string 类型)
  41. return int.Parse(a);                    // 把 a 转换为 int 类型,并返回
  42. }
  43. private double readDouble(string p)
  44. {
  45. Console.WriteLine(p);
  46. string line = Console.ReadLine();
  47. return double.Parse(line);
  48. }
  49. private void printSomething(string a)       // non-static method
  50. {
  51. Console.WriteLine(a);
  52. }
  53. private static void printfOtherthing(string a)          // static method
  54. {
  55. Console.WriteLine(a);
  56. }
  57. }
  58. }
  59. 静态方法是无法直接调用非静态方法的,可以通过对象的引用来调用非静态方法,静态方法存储在内存中,而非静态方法是由对象的实例化来创建的,所以要通过对象的引用在静态方法中调用非静态方法,非静态方法是与对象实例化共生共亡

C# 静态方法调用非静态方法的更多相关文章

  1. PHP 类中静态方法调用非静态方法

    静态方法调用非静态方法: 在类中静态方法中,需要实例化对象,然后再调用类中的方法 非静态方法调用静态方法: 可以self 或者 类名加::的形式调用 如下面的案例: <?php class A{ ...

  2. java静态方法调用非静态方法

    我们都知道,静态static方法中不能调用非静态non-static方法,准确地说是不能直接调用non-static方法.但是可以通过将一个对象的引用传入static方法中,再去调用该对象的non-s ...

  3. java中静态方法和非静态方法调用的一点小困扰,已解决。

    public static void main(String[] args) { // TODO Auto-generated method stub SimpleGui1B gui=new Simp ...

  4. PHP中静态(static)调用非静态方法详解

    1.PHP中可以静态调用非静态方法么? 今天我被问到PHP中可不可以使用 className::methodName() 的方法来调用一个没有声明static的方法.在我的印象中,我好像是见过这种用法 ...

  5. PHP的Calling Scope(::调用非静态方法)

    今天在群里发现有人说,PHP可以用::调用非静态方法,一致没这么试过,发现了鸟哥的blog写了这个问题的具体解释,就搬过来: 这个问题乍看, 确实很容易让人迷惑, 但实际上, 造成这样的误解的根本原因 ...

  6. java中静态方法中为什么不能使用this、super和直接调用非静态方法

    这个要从java的内存机制去分析,首先当你New 一个对象的时候,并不是先在堆中为对象开辟内存空间,而是先将类中的静态方法(带有static修饰的静态函数)的代码加载到一个叫做方法区的地方,然后再在堆 ...

  7. php静态调用非静态方法

    <?php /** * php静态调用非静态方法 * author: 百里 * Date: 2019/7/18 * Time: 17:28 */ function dump(...$var) { ...

  8. JAVA Main方法中调用非静态方法

    在JAVA中静态方法中只能调用其他,静态方法.main方法都是静态方法,如果想调用其它的方法,要么只能是其它的静态方法.还有一种方法就是将当前类实例化在调用它的非静态方法 public class t ...

  9. PHP中静态(static)调用非静态方法详解--调用!!!

    来源:https://www.cnblogs.com/yolo-bean/p/7739265.html 这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么 ...

随机推荐

  1. 【Leetcode】二进制求和

    解题思路: 1. 首先在两个字符串前面补‘0’,使它们等长.否则要一直监督操作是否超出两个字符串的索引. 2. 从后向前遍历所有位数,同位相加.字符相加,利用ASCII码,字符在内部都用数字表示,我们 ...

  2. QtCreator常用之快捷键

    1. Ctrl(按住)+ Tab快速切换已打开的文件 2. 自动添加成员函数实体(.cpp)定义: 将光标移动到h文件中的方法声明. 按Alt(按住)+ Enter,再按回车键 将在cpp中添加该函数 ...

  3. Route53 health check与 Cloudwatch alarm 没法绑定

    原因 即使在控制台创建 创建的alarm会在us-east-1 不会再其他区域,目前route53 metric 在其他区域不存在. 所以使用cloudformation 创建 route53 hea ...

  4. 使用指定MTU到特定IP

    ping指令使用指定MTU到特定IP 命令如下 45.58.185.18 这里MTU为1300

  5. c++11多线程---std::ref和std::cref

    std::ref和std::cref   解释 std::ref 用于包装按引用传递的值. std::cref 用于包装按const引用传递的值.   为什么需要std::ref和std::cref ...

  6. 洛谷P1190 接水问题

    题目名称:接水问题 题目来源 [洛谷P1190] (https://www.luogu.org/problemnew/show/P1190)​ 题目描述 学校里有一个水房,水房里一共有\(m\)个龙头 ...

  7. hook工具

    调试工具 WinDbg com/daoyuly/p/3570037 DebugDiag procexp64.exe APIMonitor OllyDBG API伴侣 FileMon  v7.04  ( ...

  8. CAN诊断学习

    汽车CAN总线有动力总成PCAN,底盘控制CCAN,整车控制BCAN,娱乐ECAN,诊断DCAN五种. CAN诊断,即是对CAN网络中各节点,各CAN总线,网关的故障进行检查与修复. 统一诊断服务(U ...

  9. python语言优势

    与Java等语言比较起来,最大优点是语法很简洁,很多功能像octave和matlab,能够对数组或矩阵进行高效处理. 比如一个数组求和,这里只要一句话sum(a),Java等语言就需要循环.还有矩阵的 ...

  10. Unity3D 协程 Coroutine

    协程(Coroutine)的概念存在于很多编程语言,例如Lua.ruby等.而由于Unity3D是单线程的,因此它同样实现了协程机制来实现一些类似于多线程的功能,但是要明确一点协程不是进程或线程,其执 ...