欢迎各界计算机爱好者加入,弘扬极客精神!

c#中static用在方法和变量前分别有什么作用?

4 喜欢 0 不喜欢
最新提问 1月 10, 2015 分类:C# | 用户: 香草冰淇淋 (356 分)  

3 个回答

2 喜欢 0 不喜欢
 
已采纳

static放在类的变量(属性)前面,说明这个变量是类拥有的,而不是实例话以后拥有的,对于这样的变量,每一个实例都会拥有同一个值。举个例子:

public class People{

static int nbrOfPeople;

int age;

public int getAge(){return age;}

static public  int getNbrOfPeople{return nbrOfPeople}//static应该写在哪里拿不准了

}

static void main(string[] args){

People peter = new People();//peter是一个实例,他有他自己的年龄

People simon = new People();//simon是另一个实例,有自己的年龄,但是nbrOfPeople这个属性对于People这个类的所有实例来说,值都是一样的

}

以上例子没有写setter,你问的问题和C#无关,仍然是OOP问题。不明白,可以复习下C++课的第一部分UML。static的属性只能访问static的方法函数,static的方法函数只能调用static的方法函数,但是却可以被任何一个自己类中的其它方法调用,例如:getAge()可以调用getNbrOfPeople(),当然这个例子不是很好,因为毕竟不需要调用的。

没有static的属性变量,必须将这个类实例化以后,才有意义,比如peter是People的一个实例,age才有了意义。我之所以不写setter是因为C#可以不这样写,我刚刚的代码常见于java中,C++中class前面没有public,C#中有get,set,value3个关键字,没必要自己写getter,setter具体怎么用,我不喜欢C#语言,你自己查吧

最新回答 1月 15, 2015 用户: peter (9,864 分)  
采纳于 3月 21, 2015 用户:香草冰淇淋
4 喜欢 0 不喜欢

1.static 如果放在类方法前,那么它只能用类名来调用,不能使用对象来调用;

示例:

public student

{

  static public string Name;

  public student(name)

{

  Name=name;

}

   static public void show()

{

    Console.WriteLine("hello");

}

}

static void main(string[] args)

{

   student peter=new student("bob");

  student.show();

  //peter.show() 会出错,

  Console.WriteLine(student.Name);  //peter.Name会出错。

}

2.static如果放在类字段名前,那么它只能用类名来调用,不能使用对象来调用

示例如上:

 

如果有错请指出。

 

最新回答 1月 10, 2015 用户: 黑lol (2,090 分)  
0 喜欢 0 不喜欢

static放在类的变量(属性)前面,说明这个变量是类拥有的,而不是实例话以后拥有的,对于这样的变量,每一个实例都会拥有同一个值。举个例子:

public class People{

static int nbrOfPeople;

int age;

public int getAge(){return age;}

static public  int getNbrOfPeople{return nbrOfPeople}//static应该写在哪里拿不准了

}

static void main(string[] args){

People peter = new People();//peter是一个实例,他有他自己的年龄

People simon = new People();//simon是另一个实例,有自己的年龄,但是nbrOfPeople这个属性对于People这个类的所有实例来说,值都是一样的

}

以上例子没有写setter,你问的问题和C#无关,仍然是OOP问题。不明白,可以复习下C++课的第一部分UML。static的属性只能访问static的方法函数,static的方法函数只能调用static的方法函数,但是却可以被任何一个自己类中的其它方法调用,例如:getAge()可以调用getNbrOfPeople(),当然这个例子不是很好,因为毕竟不需要调用的。

没有static的属性变量,必须将这个类实例化以后,才有意义,比如peter是People的一个实例,age才有了意义。我之所以不写setter是因为C#可以不这样写,我刚刚的代码常见于java中,C++中class前面没有public,C#中有get,set,value3个关键字,没必要自己写getter,setter具体怎么用,我不喜欢C#语言,你自己查吧

最新回答 1月 15, 2015 用户: peter (9,864 分)  
反应真慢,一下子变成两条回答了,还没有删除回答选项。。。
...