转载: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. html address标签 语法

    html address标签 语法 作用:定义文档作者/所有者的联系信息. 说明:如果 <address> 元素位于 <body> 元素内部,则它表示该文档作者/所有者的联系信 ...

  2. 【java工具类】POI导出excel

    POI的maven依赖:<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi&l ...

  3. SQL的积累

    SQL的积累学习(不常用的经常会忘记,所以以后用到的就会记在下面): --新增字段alter table t_Student add Test varchar(200)--删除字段alter tabl ...

  4. 装RAC跑脚本报错

    在执行第二个脚本的时候报错 原因是在改服务器找不到该包 解决方法: 挂载iso镜像,安装这个包

  5. phpmyadmin普通用户使用配置

    正常情况需求是,普通用户可以管理特定的数据库,可能也需要能新建数据库,配置如下: 1.添加用户,phpmyadmin和应用访问,所以主机设置127.0.0.1访问即可 2.如果只管理一个数据,可以选择 ...

  6. leetcode-mid-sorting and searching-34 Search for a Range

    mycode   63.98% class Solution(object): def searchRange(self, nums, target): """ :typ ...

  7. DAY 1模拟赛

    DAY1 杨溢鑫小姐姐出题 好毒瘤啊 T1 低仿机器人 (robo,1s,64M) 题目描述 自从 Dji 推出 robomaster S1 机器人过后,小文就一直缠着爸爸想要一个机器人.没想到爸爸最 ...

  8. leetcode 590.N-ary Tree Postorder Traversal N叉树的后序遍历

    递归方法 C++代码: /* // Definition for a Node. class Node { public: int val; vector<Node*> children; ...

  9. 阶段3 1.Mybatis_07.Mybatis的连接池及事务_6 mybatis中的事务原理和自动提交设置

    在实际的开发中,建议使用连接池的形式. JNDI的资料 H:\BaiDu\黑马传智JavaEE57期 2019最新基础+就业+在职加薪\讲义+笔记+资料\主流框架\31.会员版(2.0)-就业课(2. ...

  10. 阶段3 1.Mybatis_07.Mybatis的连接池及事务_2 连接池介绍