C# 静态方法调用非静态方法
转载:http://blog.csdn.net/seattle1215/article/details/6657814
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Cash
- {
- class Program
- {
- static void Main(string[] args)
- {
- (new Program()).run();
- // writeFee(calculate(dailyRate, workDay));
- // 对于非 static 方法,若想像上面这样直接调用则会报以下错
- // Error 1 An object reference is required
- // for the non-static field, method, or
- // property 'Cash.Program.readDouble(string)'
- printfOtherthing("static method is called."); // static 方法可直接调用
- Program program = new Program(); // 非 static 方法需要先创建一个对象
- // 然后用对象调用
- program.printSomething("non-static menthod is called.");
- }
- public void run()
- {
- double dailyRate = readDouble("please enter your rate: ");
- int workDay = readInt("please enter your days of working: ");
- writeFee(calculate(dailyRate, workDay));
- }
- private void writeFee(double p)
- {
- Console.WriteLine("The consultant's fee is: {0}", p * 1.6);
- }
- private double calculate(double dailyRate, int workDay)
- {
- return dailyRate * workDay;
- }
- private int readInt(string p)
- {
- Console.WriteLine(p);
- string a = Console.ReadLine(); // 读取输入的字符(readline读取的
- // 字符都是 string 类型)
- return int.Parse(a); // 把 a 转换为 int 类型,并返回
- }
- private double readDouble(string p)
- {
- Console.WriteLine(p);
- string line = Console.ReadLine();
- return double.Parse(line);
- }
- private void printSomething(string a) // non-static method
- {
- Console.WriteLine(a);
- }
- private static void printfOtherthing(string a) // static method
- {
- Console.WriteLine(a);
- }
- }
- }
- 静态方法是无法直接调用非静态方法的,可以通过对象的引用来调用非静态方法,静态方法存储在内存中,而非静态方法是由对象的实例化来创建的,所以要通过对象的引用在静态方法中调用非静态方法,非静态方法是与对象实例化共生共亡
C# 静态方法调用非静态方法的更多相关文章
- PHP 类中静态方法调用非静态方法
静态方法调用非静态方法: 在类中静态方法中,需要实例化对象,然后再调用类中的方法 非静态方法调用静态方法: 可以self 或者 类名加::的形式调用 如下面的案例: <?php class A{ ...
- java静态方法调用非静态方法
我们都知道,静态static方法中不能调用非静态non-static方法,准确地说是不能直接调用non-static方法.但是可以通过将一个对象的引用传入static方法中,再去调用该对象的non-s ...
- java中静态方法和非静态方法调用的一点小困扰,已解决。
public static void main(String[] args) { // TODO Auto-generated method stub SimpleGui1B gui=new Simp ...
- PHP中静态(static)调用非静态方法详解
1.PHP中可以静态调用非静态方法么? 今天我被问到PHP中可不可以使用 className::methodName() 的方法来调用一个没有声明static的方法.在我的印象中,我好像是见过这种用法 ...
- PHP的Calling Scope(::调用非静态方法)
今天在群里发现有人说,PHP可以用::调用非静态方法,一致没这么试过,发现了鸟哥的blog写了这个问题的具体解释,就搬过来: 这个问题乍看, 确实很容易让人迷惑, 但实际上, 造成这样的误解的根本原因 ...
- java中静态方法中为什么不能使用this、super和直接调用非静态方法
这个要从java的内存机制去分析,首先当你New 一个对象的时候,并不是先在堆中为对象开辟内存空间,而是先将类中的静态方法(带有static修饰的静态函数)的代码加载到一个叫做方法区的地方,然后再在堆 ...
- php静态调用非静态方法
<?php /** * php静态调用非静态方法 * author: 百里 * Date: 2019/7/18 * Time: 17:28 */ function dump(...$var) { ...
- JAVA Main方法中调用非静态方法
在JAVA中静态方法中只能调用其他,静态方法.main方法都是静态方法,如果想调用其它的方法,要么只能是其它的静态方法.还有一种方法就是将当前类实例化在调用它的非静态方法 public class t ...
- PHP中静态(static)调用非静态方法详解--调用!!!
来源:https://www.cnblogs.com/yolo-bean/p/7739265.html 这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么 ...
随机推荐
- SQL基础测试
SQL 测验 结果:20/20 您的回答: 1.SQL 指的是? 您的回答:Structured Query Language 2.哪个 SQL 语句用于从数据库中提取数据? 您的回答:SELECT ...
- FP AUTO节点ZPP002M执行卡住解决
正常情况下,不到一分钟即可执行完ZPP002M节点 异常情况下,超过十分钟都没有响应 再等待只会影响FP的执行时间,影响后续的节点,解决办法是将正在执行的JOB STOP掉 再到服务器上将该节点重新执 ...
- Spring MVC过滤器HiddenHttpMethodFilter
浏览器form表单只支持GET与POST请求,而DELETE.PUT等method并不支持,spring3.0添加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET.POST.PUT ...
- MongoDB通过JavaDriver执行shell命令,例如创建sharding collection
Mongodb的java driver本身的接口 void createCollection(String collectionName, CreateCollectionOptions create ...
- Oracle JET Router 与 Module 数据传递
Oracle JET 组件间数据传递方法. 路由:父路由:customers Router 子路由: cust Router 这里 Router 和 module 结合使用. customer 包括 ...
- KVM 常用命令
显示虚拟机 virsh list --all 停止虚拟机 virsh destroy <name> 启动虚拟机 virsh start <name> 删除虚拟机 virsh u ...
- 使用System.ComponentModel.DataAnnotations验证字段数据正确性
在.NET MVC 中,当页面提交model到Action的时候,自动填充ModelState.使用ModelState.IsValid进行方便快捷的数据验证,其验证也是调用命名空间System.Co ...
- 思科端口聚合的命令是channel-group
锐捷设备的端口聚合命令是: int range f0/1-2 port-group 1 --------------------- == 思科设备的端口聚合 是: int range f0/1-2 c ...
- hdu6599 I Love Palindrome String
由样例可知,题目中求的回文串数量,其实是本质不同的回文串数量,这个可以直接用回文树来做. 考虑前半段是回文串这个限制,这个东西回文树不好做,可以再套一个马拉车,然后记录一下插入到回文树的节点中最后一个 ...
- SpringIOC容器创建过程
在测试时,经常使用这种方式来创建spring容器 //创建基于注解的springIOC容器 ApplicationContext applicationContext = new Annotation ...