• C# 静态方法调用非静态方法


    转载: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.   
    6. namespace Cash  
    7. {  
    8.     class Program  
    9.     {  
    10.         static void Main(string[] args)  
    11.         {  
    12.             (new Program()).run();  
    13.   
    14.             // writeFee(calculate(dailyRate, workDay));        
    15.             // 对于非 static 方法,若想像上面这样直接调用则会报以下错  
    16.             // Error    1 An object reference is required  
    17.             // for the non-static field, method, or   
    18.             // property 'Cash.Program.readDouble(string)'  
    19.                           
    20.             printfOtherthing("static method is called.");        // static 方法可直接调用  
    21.             Program program = new Program();        // 非 static 方法需要先创建一个对象  
    22.                                                     // 然后用对象调用  
    23.             program.printSomething("non-static menthod is called.");  
    24.         }  
    25.   
    26.         public void run()  
    27.         {  
    28.             double dailyRate = readDouble("please enter your rate: ");  
    29.             int workDay = readInt("please enter your days of working: ");  
    30.             writeFee(calculate(dailyRate, workDay));  
    31.         }  
    32.   
    33.         private void writeFee(double p)  
    34.         {  
    35.             Console.WriteLine("The consultant's fee is: {0}", p * 1.6);  
    36.         }  
    37.   
    38.         private double calculate(double dailyRate, int workDay)  
    39.         {  
    40.             return dailyRate * workDay;  
    41.         }  
    42.   
    43.         private int readInt(string p)  
    44.         {  
    45.             Console.WriteLine(p);  
    46.             string a = Console.ReadLine();          // 读取输入的字符(readline读取的  
    47.                                                     // 字符都是 string 类型)  
    48.             return int.Parse(a);                    // 把 a 转换为 int 类型,并返回  
    49.         }  
    50.   
    51.         private double readDouble(string p)  
    52.         {  
    53.             Console.WriteLine(p);  
    54.             string line = Console.ReadLine();  
    55.             return double.Parse(line);  
    56.         }  
    57.   
    58.         private void printSomething(string a)       // non-static method  
    59.         {  
    60.             Console.WriteLine(a);  
    61.         }  
    62.   
    63.         private static void printfOtherthing(string a)          // static method  
    64.         {  
    65.             Console.WriteLine(a);  
    66.         }  
    67.     }  
    68. }  
    69. 静态方法是无法直接调用非静态方法的,可以通过对象的引用来调用非静态方法,静态方法存储在内存中,而非静态方法是由对象的实例化来创建的,所以要通过对象的引用在静态方法中调用非静态方法,非静态方法是与对象实例化共生共亡
  • 相关阅读:
    用java实现输出英文小说飘中出现次数最多的前N个单词(附:使用文件读写)
    程序员修炼之道第一章读后感
    c++实现线性表中的顺序表(数据结构课程作业)
    java第二次课件课后动手动脑习题整理总结(2019年9月23号)
    课堂练习判断字符串是否为回文序列
    大二上学期九月周总结报告三
    以java实现的一个简单登录界面(带验证码)
    关于二进制的原码 、反码、补码的简要解释说明
    几种方式使用
    spring配置数据源的6种方式
  • 原文地址:https://www.cnblogs.com/yanyao/p/5827471.html
Copyright © 2020-2023  润新知